{"openapi":"3.1.0","info":{"title":"Marinesia (BYOK) API","version":"0.1.0","description":"Marinesia (BYOK) lets an AI assistant read your own Marinesia data through the Marinesia API with a key you supply (Marinesia API key). Read-only: 6 tools (get_latest_location, get_latest_locations_bulk, get_location_history, get_location_history_bulk, get_vessels_in_area, list_vessel_locations). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-marinesia.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-marinesia/docs"},"termsOfService":"https://connectorbay.com/byok-marinesia/terms"},"servers":[{"url":"https://byok-marinesia.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-marinesia/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_latest_location":{"post":{"operationId":"get_latest_location","summary":"Get the most recent AIS position of one vessel by IMO or MMSI: coordinates, speed, course, heading, navigational status ","description":"Get the most recent AIS position of one vessel by IMO or MMSI: coordinates, speed, course, heading, navigational status code, destination, ETA text, draught and time. Works on the free plan. Use for \"Where is the vessel with IMO 9895197\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"imo":{"anyOf":[{"maximum":99999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"IMO number of the vessel (give either imo or mmsi, not both).","title":"Imo"},"mmsi":{"anyOf":[{"maximum":999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"MMSI number of the vessel (give either imo or mmsi, not both).","title":"Mmsi"}},"title":"get_latest_locationArguments","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_latest_locations_bulk":{"post":{"operationId":"get_latest_locations_bulk","summary":"Get the most recent positions of up to 10 vessels by comma-separated IMO numbers or MMSI numbers (give one kind). Needs ","description":"Get the most recent positions of up to 10 vessels by comma-separated IMO numbers or MMSI numbers (give one kind). Needs the Premium plan. Use for \"Where are these ships now: MMSI 512005706 and 250370000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"imo":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated IMO numbers (up to 10); use instead of mmsi.","title":"Imo"},"mmsi":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated MMSI numbers (up to 10), for example 512005706,250370000.","title":"Mmsi"}},"title":"get_latest_locations_bulkArguments","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_location_history":{"post":{"operationId":"get_location_history","summary":"Get the stored historical AIS positions of one vessel by IMO or MMSI, newest first as returned. Needs the Premium plan. ","description":"Get the stored historical AIS positions of one vessel by IMO or MMSI, newest first as returned. Needs the Premium plan. Use for \"Show the recent track of vessel MMSI 413844054\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"imo":{"anyOf":[{"maximum":99999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"IMO number of the vessel (give either imo or mmsi, not both).","title":"Imo"},"mmsi":{"anyOf":[{"maximum":999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"MMSI number of the vessel (give either imo or mmsi, not both).","title":"Mmsi"}},"title":"get_location_historyArguments","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_location_history_bulk":{"post":{"operationId":"get_location_history_bulk","summary":"Get historical positions of up to 3 vessels by comma-separated IMO numbers or MMSI numbers (give one kind). Needs the Pr","description":"Get historical positions of up to 3 vessels by comma-separated IMO numbers or MMSI numbers (give one kind). Needs the Premium plan. Use for \"Show the tracks of vessels 9492488 and 9938391\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"imo":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated IMO numbers (up to 3); use instead of mmsi.","title":"Imo"},"mmsi":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated MMSI numbers (up to 3).","title":"Mmsi"}},"title":"get_location_history_bulkArguments","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_vessels_in_area":{"post":{"operationId":"get_vessels_in_area","summary":"List vessel positions inside a latitude and longitude bounding box. The free plan returns at most 5 vessels, Premium up ","description":"List vessel positions inside a latitude and longitude bounding box. The free plan returns at most 5 vessels, Premium up to 2000. Use for \"Which ships are in the Sunda Strait\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat_min":{"description":"Southern edge latitude, for example -7.5.","maximum":90,"minimum":-90,"title":"Lat Min","type":"number"},"lat_max":{"description":"Northern edge latitude, for example -5.","maximum":90,"minimum":-90,"title":"Lat Max","type":"number"},"long_min":{"description":"Western edge longitude, for example 105.","maximum":180,"minimum":-180,"title":"Long Min","type":"number"},"long_max":{"description":"Eastern edge longitude, for example 107.","maximum":180,"minimum":-180,"title":"Long Max","type":"number"}},"required":["lat_min","lat_max","long_min","long_max"],"title":"get_vessels_in_areaArguments","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_vessel_locations":{"post":{"operationId":"list_vessel_locations","summary":"List stored vessel position records across vessels, paged, with sorting and a filter such as date:20260206 or mmsi:51200","description":"List stored vessel position records across vessels, paged, with sorting and a filter such as date:20260206 or mmsi:512005706,valid:true. Needs the Premium plan; at most 10 per page. Use for \"Show vessel position records for 2026-02-06\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Results per page (1 to 10).","title":"Limit"},"sort":{"anyOf":[{"enum":["mmsi","position_accuracy","cog","sog","rate_of_turn","true_heading","valid","timestamp"],"type":"string"},{"type":"null"}],"default":"timestamp","description":"Sort field: mmsi, position_accuracy, cog, sog, rate_of_turn, true_heading, valid or timestamp.","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"asc or desc.","title":"Order"},"filters":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field:value filters using the fields mmsi, valid and date, for example date:20260206.","title":"Filters"}},"title":"list_vessel_locationsArguments","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}}}}