thinair-geo
geo.thinair.co
· ThinAir
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.
geo.thinair.co via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
D
Conformance score: 51/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
1 snapshot Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-10-02 11:38:36 current | 47ce3039543e… |
view → |
Endpoints
| Agent card | https://geo.thinair.co/.well-known/agent-card.json |
| Provider | https://thinair.co |
| Docs | https://geo.thinair.co/developers |
Skills · 19 declared · mapped to canonical taxonomy
Address → coordinates. Global coverage, cached and accurate. Available on every plan.
Structured-field geocoding — address, locality, region, postalcode, country → precise match. Available on every plan.
Coordinates → nearest address or place name. Available on every plan.
Up to 50 addresses in one call, cached for repeat lookups. Available on every plan.
Re-fetch any place or intersection by its stable public id (ta_place_ / ta_intersection_). Available on every plan.
Street A × Street B → the exact corner: a stable ta_intersection_ id + coordinates. Available on every plan.
POIs near a point — truck stops, fuel, rest areas, restaurants. Available on every plan.
Cities and venues near a location with population filtering. Requires the pro plan or higher.
Turn-by-turn routing with ETAs, restrictions, 10 truck profiles. Available on every plan.
Many-to-many travel times and distances between sets of points in one call. Available on every plan.
Drive-time reachability polygon — how far can you go in N minutes? Requires the starter plan or higher.
Road-network context for one coordinate — road name, class, speed limit, legality, timezone. Available on every plan.
Snap a raw GPS breadcrumb trail to the road network — matched geometry, distance, confidence, match status. Available on every plan.
Per-segment road attributes for a matched trace — names, classes, speed limits, surfaces. Available on every plan.
Point-in-polygon test — is a coordinate inside a supplied geofence? Available on every plan.
Live speed & congestion for 30 US metros, real-time refresh. Requires the starter plan or higher.
Current conditions + 16-day forecast + severe alerts + minute precipitation. Available on every plan.
Check current usage and plan limits. Available on every plan.
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.
Health · last 1 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/geo.thinair.co) [](https://agenstry.com/agents/geo.thinair.co) [](https://agenstry.com/agents/geo.thinair.co) [](https://agenstry.com/agents/geo.thinair.co)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"protocolVersion": "0.3.0",
"name": "thinair-geo",
"description": "ThinAir Geo \u2014 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 \u2192 coordinates. Global coverage, cached and accurate. Available on every plan.",
"tags": [
"geocode",
"free"
]
},
{
"id": "geocode_structured",
"name": "geocode_structured",
"description": "Structured-field geocoding \u2014 address, locality, region, postalcode, country \u2192 precise match. Available on every plan.",
"tags": [
"geocode",
"free"
]
},
{
"id": "reverse_geocode",
"name": "reverse_geocode",
"description": "Coordinates \u2192 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 \u00d7 Street B \u2192 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 names, classes, speed limits, surfaces. Available on every plan.",
"tags": [
"routing",
"free"
]
},
{
"id": "geofence_contains",
"name": "geofence_contains",
"description": "Point-in-polygon test \u2014 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 \u2014 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_\u2026 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."
}
}
}