{"openapi":"3.1.0","info":{"title":"NASA Asteroids and Mars Photos (BYOK) API","version":"0.1.0","description":"NASA Asteroids and Mars Photos (BYOK) lets an AI assistant read your own NASA Asteroids and Mars Photos data through the NASA Asteroids and Mars Photos API with a key you supply (api.nasa.gov API key). Read-only: 6 tools (get_asteroid_feed, get_asteroid, browse_asteroids, get_rover_manifest, list_rover_photos, list_latest_rover_photos). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-nasa-neows-mars.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-nasa-neows-mars/docs"},"termsOfService":"https://connectorbay.com/byok-nasa-neows-mars/terms"},"servers":[{"url":"https://byok-nasa-neows-mars.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-nasa-neows-mars/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_asteroid_feed":{"post":{"operationId":"get_asteroid_feed","summary":"List near-Earth asteroids by closest approach date, grouped by day, for a range of at most 7 days. Use for \"Which near-E","description":"List near-Earth asteroids by closest approach date, grouped by day, for a range of at most 7 days. Use for \"Which near-Earth asteroids pass Earth this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day as YYYY-MM-DD. Leave empty for today.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day as YYYY-MM-DD, at most 7 days after the start. Leave empty for 7 days after the start.","title":"End Date"}},"title":"get_asteroid_feedArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_asteroid":{"post":{"operationId":"get_asteroid","summary":"Get one near-Earth asteroid by its JPL small-body id (SPK-ID): size, hazard flag and close approaches. Use for \"How big ","description":"Get one near-Earth asteroid by its JPL small-body id (SPK-ID): size, hazard flag and close approaches. Use for \"How big is the asteroid with id 3542519 and when does it pass Earth\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asteroid_id":{"description":"JPL SPK-ID of the asteroid, for example 3542519.","maxLength":20,"title":"Asteroid Id","type":"string"}},"required":["asteroid_id"],"title":"get_asteroidArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/browse_asteroids":{"post":{"operationId":"browse_asteroids","summary":"Page through the whole near-Earth object catalogue with id, name, magnitude and hazard flags. Use for \"Browse the first ","description":"Page through the whole near-Earth object catalogue with id, name, magnitude and hazard flags. Use for \"Browse the first page of the NASA near-Earth object catalogue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Objects per page (1 to 20).","title":"Size"}},"title":"browse_asteroidsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_rover_manifest":{"post":{"operationId":"get_rover_manifest","summary":"Get a Mars rover's mission summary: landing date, status, latest sol and total photo count. Use for \"How many photos has","description":"Get a Mars rover's mission summary: landing date, status, latest sol and total photo count. Use for \"How many photos has Curiosity taken so far\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"rover":{"description":"Rover name: curiosity, opportunity or spirit.","enum":["curiosity","opportunity","spirit"],"title":"Rover","type":"string"}},"required":["rover"],"title":"get_rover_manifestArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_rover_photos":{"post":{"operationId":"list_rover_photos","summary":"List photos taken by a Mars rover on a Martian sol or Earth date, optionally for one camera, 25 per page. Use for \"Show ","description":"List photos taken by a Mars rover on a Martian sol or Earth date, optionally for one camera, 25 per page. Use for \"Show Curiosity photos from sol 1000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"rover":{"description":"Rover name: curiosity, opportunity or spirit.","enum":["curiosity","opportunity","spirit"],"title":"Rover","type":"string"},"sol":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Martian sol (day) number, for example 1000. Give sol or earth_date.","title":"Sol"},"earth_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Earth date as YYYY-MM-DD. Give sol or earth_date.","title":"Earth Date"},"camera":{"anyOf":[{"enum":["FHAZ","RHAZ","MAST","CHEMCAM","MAHLI","MARDI","NAVCAM","PANCAM","MINITES"],"type":"string"},{"type":"null"}],"default":null,"description":"Camera abbreviation such as FHAZ, RHAZ, MAST, CHEMCAM, MAHLI, MARDI, NAVCAM, PANCAM or MINITES.","title":"Camera"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (25 photos per page).","title":"Page"}},"required":["rover"],"title":"list_rover_photosArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_latest_rover_photos":{"post":{"operationId":"list_latest_rover_photos","summary":"List the most recently received photos of a Mars rover. Use for \"What are the newest photos from the Curiosity rover\".","description":"List the most recently received photos of a Mars rover. Use for \"What are the newest photos from the Curiosity rover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"rover":{"description":"Rover name: curiosity, opportunity or spirit.","enum":["curiosity","opportunity","spirit"],"title":"Rover","type":"string"}},"required":["rover"],"title":"list_latest_rover_photosArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}