{"openapi":"3.1.0","info":{"title":"Marine","version":"0.1.0"},"paths":{"/stats":{"get":{"summary":"Stats","operationId":"stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Stats Get"}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/seo.json":{"get":{"summary":"Seo Json","operationId":"seo_json_seo_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/tools":{"get":{"summary":"Tools","operationId":"tools_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Tools Tools Get"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/about":{"get":{"summary":"About","operationId":"about_about_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response About About Get"}}}}}}},"/marine/weather":{"get":{"summary":"Marine Weather","description":"Current marine weather at a location from Open-Meteo Marine.","operationId":"marine_weather_marine_weather_get","parameters":[{"name":"latitude","in":"query","required":true,"schema":{"type":"number","description":"Latitude (-90 to 90)","title":"Latitude"},"description":"Latitude (-90 to 90)"},{"name":"longitude","in":"query","required":true,"schema":{"type":"number","description":"Longitude (-180 to 180)","title":"Longitude"},"description":"Longitude (-180 to 180)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Marine Weather Marine Weather Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marine/winds":{"get":{"summary":"Marine Winds","description":"Marine surface winds from Open-Meteo Marine.","operationId":"marine_winds_marine_winds_get","parameters":[{"name":"latitude","in":"query","required":true,"schema":{"type":"number","description":"Latitude (-90 to 90)","title":"Latitude"},"description":"Latitude (-90 to 90)"},{"name":"longitude","in":"query","required":true,"schema":{"type":"number","description":"Longitude (-180 to 180)","title":"Longitude"},"description":"Longitude (-180 to 180)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Marine Winds Marine Winds Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marine/ports":{"get":{"summary":"Marine Ports","description":"Search ports by name, country, or LOCODE.","operationId":"marine_ports_marine_ports_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","description":"Port name, country code, or UN/LOCODE","title":"Query"},"description":"Port name, country code, or UN/LOCODE"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Max results","default":20,"title":"Limit"},"description":"Max results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Marine Ports Marine Ports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marine/port":{"get":{"summary":"Marine Port","description":"Get a specific port by LOCODE.","operationId":"marine_port_marine_port_get","parameters":[{"name":"locode","in":"query","required":true,"schema":{"type":"string","description":"UN/LOCODE (e.g. SG-SIN) or port name","title":"Locode"},"description":"UN/LOCODE (e.g. SG-SIN) or port name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Marine Port Marine Port Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marine/buoys":{"get":{"summary":"Marine Buoys","description":"Find nearest NOAA NDBC buoy and get observations.","operationId":"marine_buoys_marine_buoys_get","parameters":[{"name":"latitude","in":"query","required":true,"schema":{"type":"number","description":"Latitude (-90 to 90)","title":"Latitude"},"description":"Latitude (-90 to 90)"},{"name":"longitude","in":"query","required":true,"schema":{"type":"number","description":"Longitude (-180 to 180)","title":"Longitude"},"description":"Longitude (-180 to 180)"},{"name":"radius_km","in":"query","required":false,"schema":{"type":"number","description":"Search radius in km","default":200,"title":"Radius Km"},"description":"Search radius in km"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Marine Buoys Marine Buoys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marine/vessels":{"get":{"summary":"Marine Vessels","description":"Look up vessel types by AIS code or keyword.","operationId":"marine_vessels_marine_vessels_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","description":"AIS code (20-89), vessel name, or keyword","title":"Query"},"description":"AIS code (20-89), vessel name, or keyword"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Marine Vessels Marine Vessels Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marine/tides":{"get":{"summary":"Marine Tides","description":"Tide predictions from Open-Meteo Marine sea level height.","operationId":"marine_tides_marine_tides_get","parameters":[{"name":"latitude","in":"query","required":true,"schema":{"type":"number","description":"Latitude (-90 to 90)","title":"Latitude"},"description":"Latitude (-90 to 90)"},{"name":"longitude","in":"query","required":true,"schema":{"type":"number","description":"Longitude (-180 to 180)","title":"Longitude"},"description":"Longitude (-180 to 180)"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","description":"Forecast hours (1-168)","default":48,"title":"Hours"},"description":"Forecast hours (1-168)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Marine Tides Marine Tides Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marine/ask":{"post":{"summary":"Marine Ask","description":"Multi-source marine reasoning via DeepSeek.","operationId":"marine_ask_marine_ask_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Marine Ask Marine Ask Post"}}}}}}},"/marine/feedback":{"get":{"summary":"Get Feedback","description":"Return the 50 most recent feedback entries.","operationId":"get_feedback_marine_feedback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Get Feedback Marine Feedback Get"}}}}}},"post":{"summary":"Submit Feedback","description":"Submit feedback for a previous response. No payment required.\n\nBody:\n  response_id (str): X-Request-Id from the paid response\n  rating (int): 1-5 star rating\n  comment (str, optional): Free-text notes","operationId":"submit_feedback_marine_feedback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Submit Feedback Marine Feedback Post"}}}}}}},"/.well-known/x402.json":{"get":{"summary":"X402 Manifest","description":"Standard x402 discovery manifest (rendered from the Service Contract).","operationId":"x402_manifest__well_known_x402_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response X402 Manifest  Well Known X402 Json Get"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}