{"protocolVersion":"0.3.0","name":"thinair-geo","description":"ThinAir Geo — full-stack geo tools for AI agents via MCP. One server covering geocoding, multi-profile routing (auto, truck, bicycle, pedestrian), isochrones, live traffic, weather, and place search.","version":"2.2.0","url":"https://geo.thinair.co/mcp","preferredTransport":"JSONRPC","provider":{"organization":"ThinAir","url":"https://thinair.co"},"documentationUrl":"https://geo.thinair.co/developers","iconUrl":"https://geo.thinair.co/favicon.ico","capabilities":{"streaming":true,"pushNotifications":false,"stateTransitionHistory":false},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"geocode","name":"geocode","description":"Address → coordinates. Global coverage, cached and accurate. Available on every plan.","tags":["geocode","free"]},{"id":"geocode_structured","name":"geocode_structured","description":"Structured-field geocoding — address, locality, region, postalcode, country → precise match. Available on every plan.","tags":["geocode","free"]},{"id":"reverse_geocode","name":"reverse_geocode","description":"Coordinates → nearest address or place name. Available on every plan.","tags":["geocode","free"]},{"id":"batch_geocode","name":"batch_geocode","description":"Up to 50 addresses in one call, cached for repeat lookups. Available on every plan.","tags":["geocode","free"]},{"id":"place_get","name":"place_get","description":"Re-fetch any place or intersection by its stable public id (ta_place_ / ta_intersection_). Available on every plan.","tags":["geocode","free"]},{"id":"resolve_intersection","name":"resolve_intersection","description":"Street A × Street B → the exact corner: a stable ta_intersection_ id + coordinates. Available on every plan.","tags":["geocode","free"]},{"id":"search_places","name":"search_places","description":"POIs near a point — truck stops, fuel, rest areas, restaurants. Available on every plan.","tags":["places","free"]},{"id":"explore","name":"explore","description":"Cities and venues near a location with population filtering. Requires the pro plan or higher.","tags":["places","pro"]},{"id":"directions","name":"directions","description":"Turn-by-turn routing with ETAs, restrictions, 10 truck profiles. Available on every plan.","tags":["routing","free"]},{"id":"distance_matrix","name":"distance_matrix","description":"Many-to-many travel times and distances between sets of points in one call. Available on every plan.","tags":["routing","free"]},{"id":"isochrone","name":"isochrone","description":"Drive-time reachability polygon — how far can you go in N minutes? Requires the starter plan or higher.","tags":["routing","starter"]},{"id":"locate","name":"locate","description":"Road-network context for one coordinate — road name, class, speed limit, legality, timezone. Available on every plan.","tags":["routing","free"]},{"id":"map_match","name":"map_match","description":"Snap a raw GPS breadcrumb trail to the road network — matched geometry, distance, confidence, match status. Available on every plan.","tags":["routing","free"]},{"id":"trace_attributes","name":"trace_attributes","description":"Per-segment road attributes for a matched trace — names, classes, speed limits, surfaces. Available on every plan.","tags":["routing","free"]},{"id":"geofence_contains","name":"geofence_contains","description":"Point-in-polygon test — is a coordinate inside a supplied geofence? Available on every plan.","tags":["places","free"]},{"id":"traffic","name":"traffic","description":"Live speed & congestion for 30 US metros, real-time refresh. Requires the starter plan or higher.","tags":["traffic","starter"]},{"id":"weather","name":"weather","description":"Current conditions + 16-day forecast + severe alerts + minute precipitation. Available on every plan.","tags":["weather","free"]},{"id":"quota","name":"quota","description":"Check current usage and plan limits. Available on every plan.","tags":["account","free"]},{"id":"issue_api_key","name":"issue_api_key","description":"Mint a fresh ta_geo_ API key for your account and rotate — the previous key keeps working for one hour, then stops. Available on every plan.","tags":["account","free"]}],"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth 2.1 with PKCE. Dynamic client registration is open; the consent screen names the requesting client.","flows":{"authorizationCode":{"authorizationUrl":"https://geo.thinair.co/authorize","tokenUrl":"https://geo.thinair.co/token","scopes":{"tools:read":"tools:read","keys:write":"keys:write"}}}},"apiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"Bearer ta_geo_… key."}},"security":[{"oauth2":["tools:read","keys:write"]},{"apiKey":[]}],"x-thinair":{"organization":{"name":"ThinAir","url":"https://thinair.co"},"siblingProducts":[{"name":"ThinAir Data","description":"Query PostgreSQL, MySQL and SQL Server in plain English over MCP and REST.","url":"https://data.thinair.co","mcp":"https://data.thinair.co/mcp","agentCard":"https://data.thinair.co/.well-known/agent-card.json"}],"plans":[{"plan":"free","daily_request_limit":15,"price":"Free"},{"plan":"dev_trial","daily_request_limit":1000,"price":"Free (time-limited trial)"},{"plan":"starter","daily_request_limit":500,"price":"$9/mo"},{"plan":"pro","daily_request_limit":10000,"price":"$29/mo"},{"plan":"business","daily_request_limit":50000,"price":"$99/mo"},{"plan":"enterprise","daily_request_limit":null,"price":"Custom (contact sales)"}],"billing":{"model":"human-approved subscription","checkout_url":"https://geo.thinair.co/checkout","note":"Agents do not pay autonomously. A quota, tier-denied, or 429 response carries an upgrade_url; present it to the user, who completes payment. The same OAuth session or API key continues with the new limits."}}}