Quickstart
- 1Try instantly with npxNo install. Run
npx @thinairtelematics/geo-mcp— it prints a ready-to-paste MCP client config for the hosted server (no local process to run). - 2Or get an API keySign up at geo.thinair.co. Free sandbox key included — 15 requests/day.
- 3Add to your MCP clientPaste the config below into Claude Desktop, Cursor, or Windsurf. Restart the client.
- 4Ask 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.
| --api-key <key> | Skip the browser flow — use an existing ta_live_ or ta_trial_ key |
| --transport sse | Emit 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.
~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"thinair-geo": {
"type": "url",
"url": "https://geo.thinair.co/mcp"
}
}
}
/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.
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.
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
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
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.
-
Anonymous sandbox key key starts with
ta_trial_, no emailQuota exhausted? The
quotatool and any 429 response embed anupgrade_urlpointing at/checkout?plan=starter. Click through Stripe, pay, and land on/success— we mint a newta_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: Bearerheader (the "manual key" form under Config) or create a key in the console at geo.thinair.co/developers#keys (theissue_api_keytool returns that link; it never returns a key). -
Email sandbox key key starts with
ta_trial_, tied to your emailStart checkout from one of two places and your existing key is upgraded in place: the
upgrade_urlembedded in any quota/expiry response (thequotatool, 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, socheckout.session.completedknows 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. -
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.)
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.