{
  "markdown": "# RouteKit MCP\n\n<!-- mcp-name: io.github.luisbretasjr/routekit -->\n\nRoute optimization API for Brazil. First MCP server for route optimization.\n\n## Install\n\n```bash\nnpx routekit-mcp\n```\n\nOr configure in your MCP client:\n\n### Claude Desktop / Claude Code\n\n```json\n{\n  \"mcpServers\": {\n    \"routekit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"routekit-mcp\"],\n      \"env\": {\n        \"ROUTEKIT_API_KEY\": \"YOUR_KEY\"\n      }\n    }\n  }\n}\n```\n\n### Direct HTTP (no install needed)\n\n```json\n{\n  \"mcpServers\": {\n    \"routekit\": {\n      \"type\": \"url\",\n      \"url\": \"https://routekit.nexterait.com.br/mcp\",\n      \"headers\": {\n        \"X-API-Key\": \"YOUR_KEY\"\n      }\n    }\n  }\n}\n```\n\n## Get API Key\n\nGet a free key (50 calls/month) at [routekit.nexterait.com.br/static/signup.html](https://routekit.nexterait.com.br/static/signup.html)\n\n## Tools\n\n- **calculate_route** -- Driving route between points with real road distances and ETAs. Supports waypoints, encoded polyline geometry, turn-by-turn steps, and up to 3 alternative routes.\n- **distance_matrix** -- NxN distance/duration matrix between up to 5000 locations (transparently chunked for large sets, cached for repeated queries).\n- **snap_to_road** -- Snap a raw GPS coordinate to the nearest road segment. Returns the snapped point, distance from the original, and road name.\n- **isochrone** -- Area reachable from a point within N minutes by car. Returns a GeoJSON Polygon useful for coverage analysis, depot placement, and service area definition.\n- **geocode** -- Convert a Brazilian address or place name to latitude/longitude. Restricted to Brazil, in-house geocoder with no third-party dependency. Built-in fuzzy fallback handles abbreviations (\"Av\" -> \"Avenida\"), accents, and token drops.\n- **geocode_batch** -- Geocode up to 50 addresses in a single call with parallel execution. Perfect for delivery manifests or client lists.\n- **reverse_geocode** -- Convert lat/lon to a human-readable Brazilian address with components (road, neighborhood, city, state, postcode).\n- **compare_routes** -- Run `optimize_routes` under multiple balance strategies (minimize_vehicles, balance_tasks, minimize_distance) and return a side-by-side comparison with winners per metric.\n- **validate_eta** -- Simulate a pre-defined route in Python and return the real arrival times plus any constraint violations. Use when you already have a fixed order of stops and just need the ETAs.\n- **optimize_routes** -- Advanced VRP solver:\n  - `tasks` (single-location jobs) and/or `shipments` (paired pickup+delivery, same vehicle)\n  - Constraints: time windows (multiple per task), skills, multi-dimensional capacity, breaks, priorities\n  - Per-vehicle costs (`fixed`, `per_hour`, `per_km`, `per_task_hour`), `max_tasks`, `max_travel_time_min`, `max_distance_km`\n  - `balance_mode`: `minimize_vehicles` (default), `balance_tasks`, or `minimize_distance`\n  - `setup_min` separate from `service_min` (setup charged once per location)\n  - `setup_per_type` / `service_per_type` for different times per technician/vehicle type\n  - `vehicle.type` tags for per-type time/cost modeling\n  - `end_lat` / `end_lon` for open routes with different destination (e.g. driver ends at home)\n  - Mixed-profile fleets (car / bike / foot) with per-vehicle `profile`\n  - `include_geometry=true` returns encoded polylines per route (for maps)\n  - `matrix_overrides`: user-provided per-pair travel time / distance overrides (for toll routes, restricted zones, known detours)\n  - Up to 500 tasks / 250 shipments / 100 vehicles per request\n  - Route-level and step-level `violations` reported when constraints are tight\n\n## Example\n\nAsk your AI assistant:\n\n> \"Geocode these addresses and optimize 10 deliveries in Sao Paulo for 2 drivers -- the senior finishes each stop in 20 min, the junior in 45 min. Balance tasks evenly, end both at the same warehouse, include the route polylines so I can draw them on a map.\"\n\nThe AI will call `geocode`, then `optimize_routes` with `vehicle.type`, `service_per_type`, `balance_mode`, `end_lat`/`end_lon` and `include_geometry` -- no manual coordinate entry needed.\n\n## What's new in 1.4.1\n\n- **Per-tool analytics**: the dashboard now shows a breakdown of which tools your API key has been calling (horizontal bars, ordered by frequency).\n- **80% limit warning**: when your usage crosses 80% of the monthly limit, the dashboard shows a yellow banner reminding you to upgrade before new calls are rejected. `/billing/usage` also exposes `threshold_80` and `threshold_100` flags.\n- **Welcome email**: new customers get an onboarding email right after OTP verification, with their API key, ready-to-paste Claude Desktop config, a curl snippet and doc links.\n\n## What's new in 1.4.0\n\n- **`calculate_route` turn-by-turn**: pass `include_steps=true` to get a list of maneuvers with street names, distances and durations per step.\n- **`calculate_route` alternatives**: pass `alternatives=1..3` to get alternate routes (useful for \"fastest vs shortest vs no-toll\" comparisons).\n- **Fuzzy geocoding**: `geocode` now silently retries with abbreviation expansion (\"Av\" -> \"Avenida\"), accent normalization and token-drop heuristics when the exact query returns nothing. The response includes `variant_used` showing which transformation matched. Set `fuzzy=false` to disable.\n- **REST API**: the same 10 tools are now available via plain HTTP POST under `https://routekit.nexterait.com.br/v1/<tool_name>`. Same X-API-Key auth, same metering. The public `GET /v1/` lists all endpoints with their descriptions. Useful for integrations that don't speak MCP.\n- **Billing portal return flow**: after managing a subscription on Stripe, the user lands back on the dashboard with a success banner instead of a raw JSON page.\n\n## What's new in 1.3.0\n\n- **`compare_routes`** tool: compare the optimizer under multiple strategies and get winners per metric (distance, travel time, vehicles used). Runs strategies in parallel.\n- **`validate_eta`** tool: simulate a pre-defined route and get real ETAs plus violations without re-optimizing. The sequence you provide is strictly respected.\n- **`matrix_overrides`** on optimize_routes: patch specific pairs in the distance/time matrix with your own values (toll routes, ferries, known detours) without forcing users to send a whole NxN matrix.\n\n## What's new in 1.2.3\n\n- **`geocode_batch`**: new tool accepting up to 50 addresses per call. Internally runs queries in parallel with bounded concurrency.\n- **Mixed-profile fleets**: `optimize_routes` now fetches separate distance/duration matrices per vehicle profile (car/bike/foot). When a profile container isn't deployed, it falls back to car routing transparently.\n- **Smarter image check**: the weekly OSRM image check now queries registry tags and ranks stable semver releases (filtering debug/assertions/rc variants).\n\n## What's new in 1.2.2\n\n- **Matrix cache**: repeated distance/duration matrix queries hit a local cache and return ~5x faster. Transparent to callers.\n- **Automatic chunking**: distance_matrix now handles up to 5000 locations by splitting into parallel sub-block queries.\n- **Retry + backoff**: all upstream calls now retry transient failures (connect errors, 5xx) with exponential backoff + jitter before surfacing an error.\n- **Cleaner error messages**: \"temporarily unavailable\" vs \"no result found\" so the LLM can decide whether to retry.\n\n## What's new in 1.2.0\n\n- **Geocoding**: new `geocode` and `reverse_geocode` tools for Brazil. Users can speak in addresses instead of coordinates. No third-party API dependency.\n- **Snap-to-road**: new `snap_to_road` tool to clean up noisy GPS before routing.\n- **Isochrone**: new `isochrone` tool to compute areas reachable in N minutes.\n- **Technician modeling**: `vehicle.type`, `setup_per_type`, `service_per_type`, `costs.per_task_hour` for per-type time and cost realism.\n- **Open routes**: `end_lat`/`end_lon` per vehicle for drivers that end at a different place than they started.\n- **Multi-profile fleets**: label vehicles with `profile` (car/bike/foot/truck).\n\n## What's new in 1.1.0\n\n- `shipments` (paired pickup+delivery) support\n- `balance_mode` to distribute tasks evenly across a fleet\n- `include_geometry` to return route polylines from the optimizer\n- Route `violations` now surfaced in the response for diagnosis\n- `setup_min` vs `service_min` split for realistic location costs\n- Matrix limit raised from 200 to 2000 locations\n- Advanced VRP engine upgrade: `per_km` costs and `max_distance_km` constraints now active\n\n## Pricing\n\n| Tier | Calls/Month | Price |\n|------|-------------|-------|\n| Free | 50 | R$ 0 |\n| Starter | 1,000 | R$ 500/month |\n| Professional | 10,000 | R$ 3,000/month |\n\n## Links\n\n- [Website](https://routekit.nexterait.com.br)\n- [API Docs](https://routekit.nexterait.com.br/static/docs.html)\n- [User Guide](https://routekit.nexterait.com.br/static/guide.html)\n- [Dashboard](https://routekit.nexterait.com.br/static/dashboard.html)\n\n## Provider\n\n[Nextera IT Solutions](https://nexterait.com.br)\n",
  "bytes": 9025,
  "sha": "28971cbd8272f01e48fc4d8e0650ec2a78cddc52d63b4eddaa23c2c99b4007e4",
  "repo_slug": "luisbretasjr/routekit-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_luisbretasjr_routekit_1799157e/readme"
}