Docs · Getting Started

Location & routing intelligence for AI agents.

Connect any MCP-compatible assistant to real-time geocoding, truck routing, traffic, weather, and place search — 800M+ address and place records with planet-scale routing.

Encrypted in transit

Quickstart

  1. 1
    Try instantly with npx
    No install. Run npx @thinairtelematics/geo-mcp — it prints a ready-to-paste MCP client config for the hosted server (no local process to run).
  2. 2
    Or get an API key
    Sign up at geo.thinair.co. Free sandbox key included — 15 requests/day.
  3. 3
    Add to your MCP client
    Paste the config below into Claude Desktop, Cursor, or Windsurf. Restart the client.
  4. 4
    Ask your first question
    "Route a dry van from Houston, TX to Memphis, TN avoiding tolls."
    Your agent picks the right tools and chains them.

Try with npx

The fastest way to wire up ThinAir Geo — no account required to start. Run directly from the registry:

npx @thinairtelematics/geo-mcp

The @thinairtelematics/geo-mcp package is a tiny CLI that prints JSON to your terminal — the same URL config you would paste manually. Your MCP client still talks to https://geo.thinair.co/mcp (or /sse with --transport sse). No local geocoding engine or routing binary.

Common flags
--api-key <key>Skip the browser flow — use an existing ta_live_ or ta_trial_ key
--transport sseEmit config pointing at /sse instead of Streamable HTTP /mcp

The printed config uses the same URLs as a hand-written mcp.json. Your key and quota are identical whether you use npx or paste the JSON yourself.

MCP client config

Works with any MCP-compatible client. Pick yours — the file path updates to match.

File: ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "thinair-geo": {
      "type": "url",
      "url": "https://geo.thinair.co/mcp"
    }
  }
}
Restart the client. First tool call opens a browser tab — click through /authorize once and the bearer token is cached locally. The 19 Geo tools — geocode, directions, traffic, weather, and more — appear automatically.
Need to pass an API key manually? (curl, CI, non-OAuth clients)
{
  "mcpServers": {
    "thinair-geo": {
      "type": "url",
      "url": "https://geo.thinair.co/mcp",
      "headers": { "Authorization": "Bearer your_api_key_here" }
    }
  }
}

Mint a key from geo.thinair.co/connect (sandbox = 15/day, paid tiers lift that).

Your first tool call

Open Claude Desktop (or your client). Paste this and send:

Route a dry van from Houston, TX to Memphis, TN avoiding tolls.
Check the weather at the destination and flag any severe alerts.

Your agent chains geocode → directions (with the DRY_VAN_53 costing profile) → weather — one prompt, three tools, structured JSON back.

Tool catalog

19 tools across geocoding, structured search, place IDs, intersections, routing, map matching, traffic, weather, places, and account. All return structured JSON.

Tool What it does Plan
geocodeAddress → coordinates. Global coverage, cached and accurate.Free
geocode_structuredStructured-field geocoding — address, locality, region, postalcode, country → precise match.Free
reverse_geocodeCoordinates → nearest address or place name.Free
batch_geocodeUp to 50 addresses in one call, cached for repeat lookups.Free
place_getRe-fetch any place or intersection by its stable public id (ta_place_ / ta_intersection_).Free
resolve_intersectionStreet A × Street B → the exact corner: a stable ta_intersection_ id + coordinates.Free
search_placesPOIs near a point — truck stops, fuel, rest areas, restaurants.Free
exploreCities and venues near a location with population filtering.Pro
directionsTurn-by-turn routing with ETAs, restrictions, 10 truck profiles.Free
distance_matrixMany-to-many travel times and distances between sets of points in one call.Free
isochroneDrive-time reachability polygon — how far can you go in N minutes?Starter
locateRoad-network context for one coordinate — road name, class, speed limit, legality, timezone.Free
map_matchSnap a raw GPS breadcrumb trail to the road network — matched geometry, distance, confidence, match status.Free
trace_attributesPer-segment road attributes for a matched trace — names, classes, speed limits, surfaces.Free
geofence_containsPoint-in-polygon test — is a coordinate inside a supplied geofence?Free
trafficLive speed & congestion for 30 US metros, real-time refresh.Starter
weatherCurrent conditions + 16-day forecast + severe alerts + minute precipitation.Free
quotaCheck current usage and plan limits.Free
issue_api_keyGet the link to create a ta_geo_ API key in the signed-in console. Returns a link, never a key, and creates, rotates or revokes nothing.Free
Prefer plain REST? Same engine, 10 HTTP endpoints

Every tool above is also a REST endpoint under https://geo.thinair.co/v1 — plus the REST-only GET /v1/autocomplete, a purpose-built typeahead for search boxes (24h edge prefix cache, proximity focus guardrails; repeat prefixes answer with X-Cache: HIT in single-digit milliseconds at the edge). Spec sheet and interactive console at /developers.

Truck profiles

Available on directions and isochrone via the costing parameter. All profiles respect variable height, weight, and axle restrictions automatically. avoid_tolls, avoid_ferries, or avoid_highways are optional flags.

ProfileUse case
DRY_VAN_53Standard 53-ft dry van
FLATBED_4848-ft flatbed
FLATBED_4040-ft flatbed — regional
STEP_DECKStep-deck / drop-deck (lower bed)
TANKERLiquid/gas tanker — hazmat-capable
BOX_TRUCK_2626-ft box truck, urban delivery
AUTO_CARRIERCar hauler / auto transport
SPRINTER_VANSprinter / cargo van — last mile
DOUBLE_TRAILERTwin 28-ft pups — LTL long-haul
OVERSIZEPermitted oversize loads

Auth & API keys

Every MCP-compatible client supports OAuth 2.1 — on first tool call a browser tab opens, you click through /authorize (or drop your email for a sandbox key), and the client stores the bearer token locally. Nothing to paste in the config. For non-OAuth clients (curl, CI, bespoke SDKs) send Authorization: Bearer ta_live_… instead — keys are issued at geo.thinair.co/connect. Sandbox = 15/day; paid tiers lift that.

Coverage

Geocoding
800M+ address and place records with global coverage.
Routing
Planet-scale routing engine. Max route 25,000 km.
Traffic
30 US metro areas. Real-time refresh on live speed and congestion.
Weather
Global coverage. Current conditions, 16-day forecast, severe alerts, minute-level precipitation.

Security & privacy

To serve and improve results, ThinAir Geo stores query text, coordinates and results in a shared cache for up to 7 days (24 hours for most autocomplete entries), and in sampled request events used for quality improvement for about three months. Copies of those events are kept in a quality-review archive that currently has no fixed expiry. Feedback you submit, including any note, is stored. Request logs, including the request URL and your approximate network location, are kept for about 7 days. Usage metrics are tied to your account. All connections are encrypted in transit and at rest.

Pricing

Plan Requests & price Key perk
Sandbox$0 · 15/day · 7 daysAnonymous instant key — no signup, all 19 tools
Developer Trial$0 · 14 days · 1,000/dayEmail signup or portal sign-in · one per account
Starter$9/mo · 500/daySmall projects & MCP agents
Pro$29/mo · 10,000/dayMost popular — priority edge tier
Business$99/mo · 50,000/dayHigh-volume APIs & platforms
EnterpriseCustomPrivate deploys · SLAs · APIM access layer

See the full pricing comparison for feature-by-feature breakdowns.

Upgrading

Three shapes of account, three upgrade paths. Pick the one that matches how you signed up.

  1. Anonymous sandbox key key starts with ta_trial_, no email

    Quota exhausted? The quota tool and any 429 response embed an upgrade_url pointing at /checkout?plan=starter. Click through Stripe, pay, and land on /success — we mint a new ta_live_ key there and show it masked with a one-click copy button.

    Paste the new key into your MCP client config as an Authorization: Bearer header (the "manual key" form under Config) or create a key in the console at geo.thinair.co/developers#keys (the issue_api_key tool returns that link; it never returns a key).

  2. Email sandbox key key starts with ta_trial_, tied to your email

    Start checkout from one of two places and your existing key is upgraded in place: the upgrade_url embedded in any quota/expiry response (the quota tool, a 429, or a trial-expired 401), or the Billing tab of the signed-in developer console. Both carry the identity of the tenant being upgraded through Stripe, so checkout.session.completed knows exactly which key to bump.

    No config change required on those two paths — same key, same client config, higher quota on the next tool call.

    Starting from a bare /checkout link instead mints a new ta_live_ key on /success, which you paste into your client. The email you type into Stripe is used for your receipt and welcome mail only — it does not select which account gets upgraded, so typing the address you trialed on will not find that key.

  3. Paid already key starts with ta_live_

    Swap tiers on /checkout. Subscription update fires customer.subscription.updated; plan flips on the next request. Downgrade mid-cycle is supported — you keep the paid quota until billing-period end.

    Need to cancel? Sign in to the developer console and open Billing — it opens a Stripe billing portal session for your own account, where you can cancel, change card, or download invoices. (The old unauthenticated /billing?email=… link is gone: an email address is not a secret, and anyone who guessed yours reached your invoices and your card.)

If your renewal fails: we flag you past_due for 7 days (grace window). Your key keeps working at sandbox quota during grace — you get the same 429+upgrade_url treatment as the sandbox tier. After 7 days (or when Stripe's retries exhaust), plan downgrades to free. No dropped connections, no surprise ejections.