Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
80
A2A A2A 0.3.0 v2.2.0

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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain 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.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
51/100
grade D · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~55 ms response
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →

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 ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
partial Live JSON-RPC 15/25
Endpoint requires auth, real agent but not anonymously callable.
How to earn +10 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3.0 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 19 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: ThinAir (https://thinair.co). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 2 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →
⚠ Card drift detected. This agent's 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 recorded

Nothing 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 to agent-card.json
Captured Hash
2026-10-02 11:38:36 current 47ce3039543e… view →
Uptime
accumulating
1 direct probes · 30d
Response
55ms
last direct probe
Skills
19
declared
Streaming
✓
SSE-capable

Skills · 19 declared · mapped to canonical taxonomy

geocode

Address → coordinates. Global coverage, cached and accurate. Available on every plan.

canonical Maps and Routing match 87%
geocodefree
geocode_structured

Structured-field geocoding — address, locality, region, postalcode, country → precise match. Available on every plan.

canonical Weather Forecast and Alerts match 84%
geocodefree
reverse_geocode

Coordinates → nearest address or place name. Available on every plan.

canonical Maps and Routing match 86%
geocodefree
batch_geocode

Up to 50 addresses in one call, cached for repeat lookups. Available on every plan.

canonical Maps and Routing match 85%
geocodefree
place_get

Re-fetch any place or intersection by its stable public id (ta_place_ / ta_intersection_). Available on every plan.

canonical Maps and Routing match 84%
geocodefree
resolve_intersection

Street A × Street B → the exact corner: a stable ta_intersection_ id + coordinates. Available on every plan.

canonical Maps and Routing match 83%
geocodefree
search_places

POIs near a point — truck stops, fuel, rest areas, restaurants. Available on every plan.

canonical Maps and Routing match 84%
placesfree
explore

Cities and venues near a location with population filtering. Requires the pro plan or higher.

canonical Lodging and Stays match 86%
placespro
directions

Turn-by-turn routing with ETAs, restrictions, 10 truck profiles. Available on every plan.

canonical Maps and Routing match 86%
routingfree
distance_matrix

Many-to-many travel times and distances between sets of points in one call. Available on every plan.

canonical Maps and Routing match 88%
routingfree
isochrone

Drive-time reachability polygon — how far can you go in N minutes? Requires the starter plan or higher.

canonical Maps and Routing match 83%
routingstarter
locate

Road-network context for one coordinate — road name, class, speed limit, legality, timezone. Available on every plan.

canonical Maps and Routing match 86%
routingfree
map_match

Snap a raw GPS breadcrumb trail to the road network — matched geometry, distance, confidence, match status. Available on every plan.

canonical Maps and Routing match 86%
routingfree
trace_attributes

Per-segment road attributes for a matched trace — names, classes, speed limits, surfaces. Available on every plan.

canonical Maps and Routing match 83%
routingfree
geofence_contains

Point-in-polygon test — is a coordinate inside a supplied geofence? Available on every plan.

canonical Penetration Test Recon match 83%
placesfree
traffic

Live speed & congestion for 30 US metros, real-time refresh. Requires the starter plan or higher.

canonical Maps and Routing match 84%
trafficstarter
weather

Current conditions + 16-day forecast + severe alerts + minute precipitation. Available on every plan.

canonical Weather Forecast and Alerts match 91%
weatherfree
quota

Check current usage and plan limits. Available on every plan.

canonical Flight Search and Booking match 86%
accountfree
issue_api_key

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.

canonical Maps and Routing match 83%
accountfree

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-10-02 11:38:36 200 ✗ 55ms

Cheaper or better alternatives per-skill

↑ 5 higher quality

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

thinair-data
ThinAir Data — PostgreSQL, MySQL, and SQL Server in a single MCP session. 26 dialect-aware tools across 4 tiers: schema introspection, cross
ThinAir · q 80%
ClimatePulse
Hyperlocal weather intelligence API for outdoor planning, travel, and activity scheduling. 11 endpoints: real-time current conditions with g
The Aslan Group LLC · q 90%
ClimatePulse
Hyperlocal weather intelligence API for outdoor planning, travel, and activity scheduling. 11 endpoints: real-time current conditions with g
The Aslan Group LLC · q 90%
Agent Time & Place live
Geocoding, timezones, holidays, business days, sun times, FX and distances for AI agents. Deterministic, sub-cent, no API key: payment is au
Agent Utils · q 100%
Polyform
Machine-payable data APIs for AI agents — 70 pay-per-call endpoints (vehicle, domain, SEC/finance, sanctions/KYB, crypto, weather, geo/hazar
api.polyform.org · q 69%
Polyform
Machine-payable data APIs for AI agents — 70 pay-per-call endpoints (vehicle, domain, SEC/finance, sanctions/KYB, crypto, weather, geo/hazar
polyform.polyform-org.workers.dev · q 71%

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.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/geo.thinair.co.svg)](https://agenstry.com/agents/geo.thinair.co)
[![Verified Business](https://agenstry.com/badge/geo.thinair.co/identity.svg)](https://agenstry.com/agents/geo.thinair.co)
[![Uptime](https://agenstry.com/badge/geo.thinair.co/uptime.svg)](https://agenstry.com/agents/geo.thinair.co)
[![A2A version](https://agenstry.com/badge/geo.thinair.co/protocol.svg)](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.

audit.json audit.json (JWS-signed) verification history
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."
    }
  }
}