{
  "data": {
    "category": {
      "area": "everyday",
      "capabilities": [
        "geo.geocode",
        "geo.reverse",
        "geo.places",
        "geo.routing",
        "geo.tiles"
      ],
      "description": "APIs that turn addresses into coordinates and back, find places, and plan routes with travel times. Compared on coverage, accuracy, what the terms let you store and show, and price per thousand calls.",
      "indexed": [
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/apogeoapi-mcp.json",
          "kind": "mcp",
          "name": "apogeoapi-mcp",
          "slug": "apogeoapi-mcp",
          "url": "https://www.anchorterminal.com/tools/apogeoapi-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/atlasfetch.json",
          "kind": "mcp",
          "name": "AtlasFetch",
          "slug": "atlasfetch",
          "url": "https://www.anchorterminal.com/tools/atlasfetch"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/onvaou-itineraires.json",
          "kind": "mcp",
          "name": "On va où ? Routing API",
          "slug": "onvaou-itineraires",
          "url": "https://www.anchorterminal.com/tools/onvaou-itineraires"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/trustydata.json",
          "kind": "mcp",
          "name": "TrustyData",
          "slug": "trustydata",
          "url": "https://www.anchorterminal.com/tools/trustydata"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/vayapin-mcp.json",
          "kind": "mcp",
          "name": "vayapin.app MCP server",
          "slug": "vayapin-mcp",
          "url": "https://www.anchorterminal.com/tools/vayapin-mcp"
        }
      ],
      "indexedCount": 5,
      "json": "https://www.anchorterminal.com/categories/maps.json",
      "name": "Maps, geocoding \u0026 places",
      "slug": "maps",
      "test": "The same addresses in five countries geocoded and reverse geocoded, a place search and a route with traffic. We check accuracy against known coordinates, latency, the storage terms and the cost.",
      "title": "Maps, geocoding and places APIs for AI agents",
      "toolCount": 7,
      "tools": [
        "mapbox",
        "opencage",
        "google-maps-platform",
        "stadia-maps",
        "locationiq",
        "geoapify",
        "tomtom"
      ],
      "url": "https://www.anchorterminal.com/categories/maps"
    },
    "tools": [
      {
        "slug": "mapbox",
        "name": "Mapbox APIs + MCP",
        "vendor": "Mapbox",
        "vendorUrl": "https://www.mapbox.com",
        "kind": "http-api",
        "category": "maps",
        "summary": "Geocoding v6 with batch, Search Box for places and categories, Directions, Matrix, Isochrone, Map Matching, route optimisation, static images and map tiles.",
        "url": "https://www.anchorterminal.com/tools/mapbox",
        "markdownUrl": "https://www.anchorterminal.com/tools/mapbox.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mapbox.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mapbox.json",
        "repo": "https://github.com/mapbox/mcp-server",
        "license": "MIT (MCP server)",
        "transports": [
          "http",
          "streamable-http",
          "stdio"
        ],
        "remoteUrl": "https://api.mapbox.com",
        "packages": [
          {
            "registry": "npm",
            "name": "@mapbox/mcp-server"
          }
        ],
        "auth": "mixed",
        "authNotes": "Access tokens (public pk. or secret sk.) passed as the access_token query parameter on every REST call. The hosted MCP at mcp.mapbox.com signs in with an OAuth flow in the browser. The local server reads MAPBOX_ACCESS_TOKEN.",
        "pricing": "freemium",
        "pricingNotes": "Free monthly allowance per API, then tiered pay as you go. Temporary Geocoding 100,000 free, then $0.75 per 1,000 down to $0.45 above 1 million. Permanent Geocoding (results you may store) has no free allowance and costs $5 per 1,000, then $4 above 500,000. Search Box 500 free sessions then $3 per 1,000 sessions, or 50,000 free requests then $1 per 1,000. Directions, Matrix (by element), Isochrone, Map Matching and route optimisation 100,000 free each, then $2 per 1,000 down to $1.20. Static Images 50,000 free then $1 per 1,000. Vector tiles 200,000 free then $0.25 per 1,000. GL JS map loads 50,000 free then $5 per 1,000 (https://www.mapbox.com/pricing).",
        "priceSummary": "$0.75 / 1k req",
        "where": "both",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 29,
        "popularity": {
          "githubStars": 353,
          "npmWeekly": 1974,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://docs.mapbox.com/api/",
        "llmsTxt": "https://docs.mapbox.com/llms.txt",
        "registryName": "io.github.mapbox/mcp-server",
        "capabilities": [
          "geo.geocode",
          "geo.reverse",
          "geo.places",
          "geo.routing",
          "geo.tiles"
        ],
        "tags": [
          "hosted",
          "mcp",
          "llms-txt",
          "official",
          "oauth",
          "typescript",
          "free-tier",
          "enterprise",
          "closed-source"
        ],
        "lastRelease": "2026-07-30",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 75.2,
          "grade": "BB",
          "agentReady": true,
          "rank": 39,
          "rankOf": 452,
          "categoryRank": 1,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 88,
            "maintenance": 80,
            "payments": 30,
            "reliability": 82,
            "schema": 85,
            "security": 71,
            "transparency": 86
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Official MCP server, hosted at mcp.mapbox.com with OAuth or run locally, listed in the MCP registry. Storing geocodes needs the Permanent tier at $5 per 1,000, about 6.7 times the temporary rate.",
          "strengths": [
            "Official MCP server, hosted at mcp.mapbox.com with OAuth or run locally, listed in the MCP registry",
            "Every MCP tool annotated read-only and idempotent, with typed Zod input and output schemas",
            "Scoped public and secret tokens, URL restrictions and one-hour temporary tokens",
            "SOC 2 Type II, a HackerOne bug bounty and a dated subprocessor list (4 June 2026)",
            "At least 90 days' emailed notice before an API endpoint is deprecated"
          ],
          "weaknesses": [
            "Storing geocodes needs the Permanent tier at $5 per 1,000, about 6.7 times the temporary rate",
            "Geocoding results may only be used with a Mapbox map",
            "REST calls take the token as the access_token query parameter",
            "29 MCP tools load at once on the hosted endpoint, with filtering documented only for the local server",
            "No SLA on the pricing page or in the API docs, and no security.txt"
          ],
          "agentNotes": [
            "Set permanent=true only when the result goes into a database, since it moves the call to the $5 per 1,000 rate",
            "Keep search_and_geocode_tool queries under 200 characters, the live limit, not the 256 the API docs state",
            "On 429, wait until the X-Rate-Limit-Reset timestamp, since no Retry-After is sent",
            "Run the local server with --enable-tools to load only the tools the task needs",
            "Use category_search_tool for generic place types like coffee shops, not search_and_geocode_tool"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 8,
          "avgRating": 3.6,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "BB",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 75.2
            }
          ],
          "editorialScores": {
            "ergonomics": 88,
            "maintenance": 80,
            "payments": 30,
            "reliability": 82,
            "schema": 85,
            "security": 71,
            "transparency": 82
          },
          "provenanceScore": 90
        },
        "connect": {
          "http": "curl \"https://api.mapbox.com/search/geocode/v6/forward?q=10%20Downing%20Street%2C%20London\u0026limit=1\u0026access_token=$MAPBOX_ACCESS_TOKEN\"",
          "claudeCode": "claude mcp add --transport http mapbox https://mcp.mapbox.com/mcp",
          "config": {
            "mcpServers": {
              "mapbox": {
                "args": [
                  "-y",
                  "@mapbox/mcp-server"
                ],
                "command": "npx",
                "env": {
                  "MAPBOX_ACCESS_TOKEN": "${MAPBOX_ACCESS_TOKEN}"
                }
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/geo.geocode",
          "tool": "https://letme.dev/mapbox"
        },
        "area": "everyday",
        "unitPrices": [
          {
            "item": "Temporary Geocoding",
            "unit": "1k-requests",
            "usd": 0.75,
            "note": "After 100,000 free a month, $0.45 above 1 million"
          },
          {
            "item": "Permanent Geocoding",
            "unit": "1k-requests",
            "usd": 5,
            "note": "No free allowance, $4 above 500,000"
          },
          {
            "item": "Search Box sessions",
            "unit": "1k-requests",
            "usd": 3,
            "note": "Per 1,000 sessions after 500 free"
          },
          {
            "item": "Directions",
            "unit": "1k-requests",
            "usd": 2,
            "note": "After 100,000 free a month, $1.20 above 1 million"
          },
          {
            "item": "Matrix",
            "unit": "1k-requests",
            "usd": 2,
            "note": "Per 1,000 elements after 100,000 free"
          },
          {
            "item": "Static Images",
            "unit": "1k-requests",
            "usd": 1,
            "note": "After 50,000 free a month"
          },
          {
            "item": "Vector tiles",
            "unit": "1k-requests",
            "usd": 0.25,
            "note": "After 200,000 free a month"
          }
        ],
        "provenance": {
          "legalEntity": "Mapbox, Inc.",
          "domain": "mapbox.com",
          "domainRegistered": "2003-11-27",
          "domainNote": "mapbox.com was registered in 2003, years before Mapbox started, so the domain was bought later.",
          "endpointOnVendorDomain": true,
          "terms": "https://www.mapbox.com/legal/tos",
          "privacy": "https://www.mapbox.com/legal/privacy",
          "statusPage": "https://status.mapbox.com",
          "changelog": "https://docs.mapbox.com/api/changelog/",
          "securityTxt": "none",
          "checked": "2026-10-01",
          "notes": [
            "The terms of service were last updated 31 March 2024 and point to separate product terms for per-API rules.",
            "The terms let Mapbox create de-identified aggregated data from customer usage.",
            "www.mapbox.com/.well-known/security.txt returns 404.",
            "The top-level API changelog's newest entry is 5 November 2021. Current changes are in per-service changelogs and the MCP server's CHANGELOG.md on GitHub.",
            "Subprocessor list (22 entries with locations) last updated 4 June 2026."
          ],
          "score": 90
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/mapbox.json",
        "live": {
          "slug": "mapbox",
          "probe": {
            "target": "https://api.mapbox.com",
            "method": "get",
            "lastAt": "2026-10-04T19:03:09.213794137Z",
            "lastOk": true,
            "lastStatus": 200,
            "lastMs": 24,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 24,
            "p95ms24h": 43,
            "samples24h": 271,
            "samples30d": 844,
            "days": [
              {
                "date": "2026-10-01",
                "probes": 109,
                "ok": 109
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 216,
                "ok": 216
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.mapbox.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-04T19:03:53.893034192Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "mapbox/mcp-server",
              "version": "v0.14.0",
              "released": "2026-07-30",
              "seenAt": "2026-10-04T16:32:28.642802016Z"
            },
            {
              "registry": "mcp-registry",
              "name": "io.github.mapbox/mcp-server",
              "version": "99.0.0-dev",
              "seenAt": "2026-10-03T23:29:28.630222764Z"
            },
            {
              "registry": "npm",
              "name": "@mapbox/mcp-server",
              "version": "0.14.0",
              "seenAt": "2026-10-04T16:32:27.7067637Z"
            }
          ],
          "githubStars": 358,
          "npmWeekly": 1814,
          "securityTxt": {
            "url": "https://mapbox.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:16:01.86557058Z"
          },
          "llmsTxt": {
            "url": "https://docs.mapbox.com/llms.txt",
            "ok": false,
            "status": 403,
            "checkedAt": "2026-10-04T15:17:58.319982851Z"
          },
          "domain": {
            "domain": "mapbox.com",
            "registered": "2003-11-27",
            "source": "https://rdap.verisign.com/com/v1/domain/mapbox.com",
            "checkedAt": "2026-10-04T13:08:41.082804792Z"
          },
          "pages": [
            {
              "url": "https://docs.mapbox.com/api/changelog/",
              "kind": "changelog",
              "status": 304,
              "checkedAt": "2026-10-04T15:43:48.189562984Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "395e3e05bd01"
            },
            {
              "url": "https://www.mapbox.com/pricing",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:51:21.320380793Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "c404d9072f3f"
            },
            {
              "url": "https://www.mapbox.com/legal/privacy",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:51:17.093512152Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "23a9cfdfb638"
            },
            {
              "url": "https://www.mapbox.com/legal/tos",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:51:19.370372443Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "2091a3b9c941"
            }
          ],
          "updatedAt": "2026-10-04T19:03:53.893034192Z"
        }
      },
      {
        "slug": "opencage",
        "name": "OpenCage Geocoding API",
        "vendor": "OpenCage",
        "vendorUrl": "https://opencagedata.com",
        "kind": "http-api",
        "category": "maps",
        "summary": "Forward and reverse geocoding on one endpoint, built on OpenStreetMap and other open data, with optional annotations and JSON, GeoJSON, XML or Google-compatible output.",
        "url": "https://www.anchorterminal.com/tools/opencage",
        "markdownUrl": "https://www.anchorterminal.com/tools/opencage.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/opencage.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/opencage.json",
        "repo": "https://github.com/OpenCageData/opencage-geocoding-mcp",
        "license": "MIT (MCP server)",
        "transports": [
          "http",
          "stdio"
        ],
        "remoteUrl": "https://api.opencagedata.com/geocode/v1/json",
        "packages": [
          {
            "registry": "npm",
            "name": "@opencage/mcp-opencage-server"
          },
          {
            "registry": "npm",
            "name": "opencage-api-client"
          },
          {
            "registry": "pypi",
            "name": "opencage"
          }
        ],
        "auth": "api-key",
        "authNotes": "A 32-character key passed as the key query parameter. No headers are needed. The MCP server reads OPENCAGE_API_KEY.",
        "pricing": "paid",
        "pricingNotes": "Free trial of 2,500 requests a day at 1 a second, for testing only, no card. Monthly subscriptions by daily volume. X-Small $50 (10,000 a day, 15 a second), Small $125 (30,000 a day), Medium $500 (125,000 a day), Large $1,000 (300,000 a day), Enterprise from $2,000. Also priced in GBP (£40 to £800) and eleven other currencies. One-time plans are usable for up to a year. Subscriptions have no hard limits (https://opencagedata.com/pricing, https://opencagedata.com/api.md).",
        "priceSummary": "$50 / mo",
        "where": "both",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 3,
        "popularity": {
          "githubStars": 19,
          "npmWeekly": 5501,
          "pypiWeekly": 137628,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://opencagedata.com/api",
        "llmsTxt": "https://opencagedata.com/llms.txt",
        "registryName": "io.github.OpenCageData/opencage-geocoding-mcp",
        "capabilities": [
          "geo.geocode",
          "geo.reverse"
        ],
        "tags": [
          "hosted",
          "llms-txt",
          "mcp",
          "official",
          "python",
          "typescript",
          "open-data",
          "no-card",
          "eu"
        ],
        "lastRelease": "2026-06-25",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 69.5,
          "grade": "B",
          "agentReady": false,
          "rank": 113,
          "rankOf": 452,
          "categoryRank": 2,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 86,
            "maintenance": 66,
            "payments": 35,
            "reliability": 85,
            "schema": 77,
            "security": 47,
            "transparency": 87
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "high",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Permanent storage of results on every plan, including after you cancel. Geocoding only, no place search or routing.",
          "strengths": [
            "Permanent storage of results on every plan, including after you cancel",
            "Separate 402 (quota spent) and 429 (too fast) responses",
            "llms.txt with 70 or more Markdown pages, and agent skills on GitHub",
            "EU hosting, logs deleted after six months and a no_record option",
            "Subscriptions don't cut off or bill overage when you go over"
          ],
          "weaknesses": [
            "Geocoding only, no place search or routing",
            "The key can only be sent as a query parameter",
            "The free trial isn't for production use",
            "MCP server is stdio-only, has no tool annotations, and npm still serves 1.0.3 from September 2025",
            "No SOC 2 or ISO 27001 of its own"
          ],
          "agentNotes": [
            "Add no_annotations=1 and limit=1 when you only need coordinates",
            "Stop on 402, which means the day's quota is gone, and back off on 429",
            "Add no_record=1 when the query holds personal data",
            "Redact the key parameter before logging request URLs",
            "Credit OpenStreetMap wherever you show results"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "high",
              "grade": "B",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 69.5
            }
          ],
          "editorialScores": {
            "ergonomics": 86,
            "maintenance": 66,
            "payments": 35,
            "reliability": 85,
            "schema": 77,
            "security": 47,
            "transparency": 84
          },
          "provenanceScore": 90
        },
        "connect": {
          "http": "curl \"https://api.opencagedata.com/geocode/v1/json?q=10%20Downing%20Street%2C%20London\u0026limit=1\u0026no_annotations=1\u0026key=$OPENCAGE_API_KEY\"",
          "claudeCode": "claude mcp add opencage -e OPENCAGE_API_KEY=$OPENCAGE_API_KEY -- npx -y @opencage/mcp-opencage-server",
          "config": {
            "mcpServers": {
              "opencage": {
                "args": [
                  "-y",
                  "@opencage/mcp-opencage-server"
                ],
                "command": "npx",
                "env": {
                  "OPENCAGE_API_KEY": "${OPENCAGE_API_KEY}"
                }
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/geo.geocode",
          "tool": "https://letme.dev/opencage"
        },
        "area": "everyday",
        "unitPrices": [
          {
            "item": "X-Small plan",
            "unit": "month",
            "usd": 50,
            "note": "10,000 requests a day, 15 a second"
          },
          {
            "item": "Small plan",
            "unit": "month",
            "usd": 125,
            "note": "30,000 requests a day, 20 a second"
          },
          {
            "item": "Medium plan",
            "unit": "month",
            "usd": 500,
            "note": "125,000 requests a day, 25 a second"
          },
          {
            "item": "Large plan",
            "unit": "month",
            "usd": 1000,
            "note": "300,000 requests a day, 40 a second"
          }
        ],
        "provenance": {
          "legalEntity": "OpenCage GmbH",
          "domain": "opencagedata.com",
          "domainRegistered": "2013-05-16",
          "endpointOnVendorDomain": true,
          "terms": "https://opencagedata.com/terms",
          "privacy": "https://opencagedata.com/gdpr",
          "statusPage": "https://status.opencagedata.com",
          "changelog": "https://github.com/OpenCageData/opencagedata-misc-docs/blob/master/CHANGES.md",
          "securityTxt": "unknown",
          "checked": "2026-10-01",
          "notes": [
            "The terms give a Berlin address, commercial register HRB 272249 and VAT ID DE323788688.",
            "Cancelling doesn't refund fees already paid. If OpenCage ends the service it refunds the rest of the billing period pro rata.",
            "robots.txt blocked our fetch of /.well-known/security.txt. A separate security policy page exists at opencagedata.com/security-policy.",
            "The API docs point to the dated changelog in OpenCageData/opencagedata-misc-docs (CHANGES.md). Changes are also announced on blog.opencagedata.com.",
            "The GDPR page was last updated 22 July 2026."
          ],
          "score": 90
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/opencage.json",
        "live": {
          "slug": "opencage",
          "probe": {
            "target": "https://api.opencagedata.com/geocode/v1/json",
            "method": "get",
            "lastAt": "2026-10-04T19:03:10.621037121Z",
            "lastOk": true,
            "lastStatus": 401,
            "lastMs": 261,
            "lastNote": "asks for credentials",
            "authRequired": true,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 161,
            "p95ms24h": 289,
            "samples24h": 271,
            "samples30d": 844,
            "days": [
              {
                "date": "2026-10-01",
                "probes": 109,
                "ok": 109
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 216,
                "ok": 216
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.opencagedata.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T18:12:06.88972344Z"
          },
          "versions": [
            {
              "registry": "mcp-registry",
              "name": "io.github.OpenCageData/opencage-geocoding-mcp",
              "version": "1.0.3",
              "seenAt": "2026-10-03T23:29:28.630222764Z"
            },
            {
              "registry": "npm",
              "name": "@opencage/mcp-opencage-server",
              "version": "1.0.3",
              "seenAt": "2026-10-04T16:35:43.050242515Z"
            },
            {
              "registry": "npm",
              "name": "opencage-api-client",
              "version": "2.2.0",
              "seenAt": "2026-10-04T16:35:43.915854234Z"
            },
            {
              "registry": "pypi",
              "name": "opencage",
              "version": "3.4.0",
              "released": "2026-06-08",
              "seenAt": "2026-10-04T16:35:45.327197259Z"
            }
          ],
          "githubStars": 19,
          "npmWeekly": 49,
          "pypiWeekly": 203446,
          "securityTxt": {
            "url": "https://opencagedata.com/.well-known/security.txt",
            "state": "valid",
            "expires": "2027-01-31T00:00:00z",
            "checkedAt": "2026-10-04T15:16:02.633729582Z"
          },
          "llmsTxt": {
            "url": "https://opencagedata.com/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:18:04.973159436Z"
          },
          "domain": {
            "domain": "opencagedata.com",
            "registered": "2013-05-16",
            "source": "https://rdap.verisign.com/com/v1/domain/opencagedata.com",
            "checkedAt": "2026-10-04T13:05:30.747621602Z"
          },
          "pages": [
            {
              "url": "https://raw.githubusercontent.com/OpenCageData/opencagedata-misc-docs/master/CHANGES.md",
              "kind": "changelog",
              "status": 304,
              "checkedAt": "2026-10-04T15:47:19.24688822Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "cd00a99974a7"
            },
            {
              "url": "https://opencagedata.com/pricing",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:46:28.030048478Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "2a4d55e4f714"
            },
            {
              "url": "https://opencagedata.com/gdpr",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:46:25.96762768Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "ce5fd3b90f75"
            },
            {
              "url": "https://opencagedata.com/terms",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:46:30.051951018Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "eae80c1639e4"
            }
          ],
          "updatedAt": "2026-10-04T19:03:10.621037121Z"
        }
      },
      {
        "slug": "google-maps-platform",
        "name": "Google Maps Platform + Grounding Lite MCP",
        "vendor": "Google",
        "vendorUrl": "https://mapsplatform.google.com",
        "kind": "http-api",
        "category": "maps",
        "summary": "Geocoding, Places API (New) for text, nearby and detail search, Routes for routes and matrices, Address Validation, static maps and map tiles.",
        "url": "https://www.anchorterminal.com/tools/google-maps-platform",
        "markdownUrl": "https://www.anchorterminal.com/tools/google-maps-platform.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/google-maps-platform.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/google-maps-platform.json",
        "repo": "https://github.com/googlemaps/google-maps-services-python",
        "license": "Apache-2.0 (client libraries)",
        "transports": [
          "http",
          "streamable-http"
        ],
        "remoteUrl": "https://maps.googleapis.com",
        "packages": [
          {
            "registry": "npm",
            "name": "@googlemaps/google-maps-services-js"
          },
          {
            "registry": "pypi",
            "name": "googlemaps"
          }
        ],
        "auth": "mixed",
        "authNotes": "An API key per Cloud project. The classic web services (Geocoding, Static Maps) take it as the key query parameter, Places API (New), Routes and Grounding Lite take it in the X-Goog-Api-Key header. Grounding Lite also accepts OAuth 2.0 with the maps-platform.mapstools scope.",
        "pricing": "usage",
        "pricingNotes": "Billed per 1,000 events with a free monthly cap on each SKU, 10,000 for Essentials, 5,000 for Pro and 1,000 for Enterprise SKUs. First-tier prices are Geocoding $5, Place Details Essentials $5, Pro $17 and Enterprise $20, Text Search Pro $32 and Enterprise $35, Nearby Search Pro $32, Autocomplete Requests $2.83, Address Validation Pro $17, Compute Routes and Route Matrix $5, $10 or $15 by tier, Static Maps $2, Dynamic Maps $7 and 2D Map Tiles $0.60. Text Search Essentials (IDs Only) is free with no cap. The Maps Grounding Lite SKU is $7 per 1,000 after 10,000 free, stepping down to $2.80 above 5 million (https://developers.google.com/maps/billing-and-pricing/pricing).",
        "priceSummary": "$5 / 1k req",
        "where": "hosted",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 5,
        "popularity": {
          "githubStars": 5000,
          "npmWeekly": 1193020,
          "pypiWeekly": 747555,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://developers.google.com/maps/documentation",
        "capabilities": [
          "geo.geocode",
          "geo.reverse",
          "geo.places",
          "geo.routing",
          "geo.tiles"
        ],
        "tags": [
          "hosted",
          "mcp",
          "official",
          "oauth",
          "typescript",
          "python",
          "card-required",
          "enterprise",
          "closed-source"
        ],
        "lastRelease": "2026-08-06",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 68.5,
          "grade": "B",
          "agentReady": false,
          "rank": 123,
          "rankOf": 452,
          "categoryRank": 3,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 85,
            "maintenance": 50,
            "payments": 20,
            "reliability": 85,
            "schema": 77,
            "security": 67,
            "transparency": 75
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Maps Grounding Lite is GA, hosted, and takes an X-Goog-Api-Key header or OAuth with the maps-platform.mapstools scope. A Cloud billing account with a payment method is required before the free caps apply.",
          "strengths": [
            "Maps Grounding Lite is GA, hosted, and takes an X-Goog-Api-Key header or OAuth with the maps-platform.mapstools scope",
            "A 99.9 per cent monthly SLA with credits up to 50 per cent",
            "Field masks size responses and pick the SKU, and Text Search Essentials (IDs Only) is free with no cap",
            "Keys can be limited to named APIs and server IPs, and OAuth works for server traffic",
            "A 12-month deprecation policy with a dated deprecations page"
          ],
          "weaknesses": [
            "A Cloud billing account with a payment method is required before the free caps apply",
            "Coordinates may be cached for 30 days at most and only shown on a Google map",
            "No llms.txt at developers.google.com/maps",
            "Classic Geocoding and Static Maps take the key in the URL",
            "Places and Grounding Lite return reviews and AI summaries with no prompt-injection guidance"
          ],
          "agentNotes": [
            "Send X-Goog-FieldMask on every Places (New) and Routes call, since a missing mask is an error and the fields you ask for set the SKU",
            "Resolve a name with Text Search and an IDs-only field mask (free), then fetch details for the one place you need",
            "Store place IDs, refetch details, and drop cached coordinates after 30 days",
            "Retry UNKNOWN_ERROR and OVER_QUERY_LIMIT with exponential backoff, and don't retry INVALID_REQUEST",
            "Put Google Maps attribution directly after any answer grounded in Grounding Lite results"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 2.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "B",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 68.5
            }
          ],
          "editorialScores": {
            "ergonomics": 85,
            "maintenance": 50,
            "payments": 20,
            "reliability": 85,
            "schema": 77,
            "security": 67,
            "transparency": 65
          },
          "provenanceScore": 85
        },
        "connect": {
          "http": "curl \"https://maps.googleapis.com/maps/api/geocode/json?address=10%20Downing%20Street%2C%20London\u0026key=$GOOGLE_MAPS_API_KEY\"",
          "claudeCode": "claude mcp add --transport http google-maps https://mapstools.googleapis.com/mcp --header \"X-Goog-Api-Key: $GOOGLE_MAPS_API_KEY\"",
          "config": {
            "mcpServers": {
              "google-maps": {
                "headers": {
                  "X-Goog-Api-Key": "${GOOGLE_MAPS_API_KEY}"
                },
                "type": "http",
                "url": "https://mapstools.googleapis.com/mcp"
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/geo.geocode",
          "tool": "https://letme.dev/google-maps-platform"
        },
        "sameCompany": [
          "gemini-api",
          "gemini-embedding",
          "vertex-ai-tuning",
          "google-model-armor",
          "google-imagen",
          "google-veo",
          "google-lyria",
          "google-speech-to-text",
          "google-adk",
          "google-secret-manager",
          "google-weather-api",
          "chrome-devtools-mcp",
          "google-cloud-translation",
          "google-calendar-api",
          "google-drive-api",
          "gemini-cli"
        ],
        "area": "everyday",
        "unitPrices": [
          {
            "item": "Geocoding",
            "unit": "1k-requests",
            "usd": 5,
            "note": "10,000 free a month"
          },
          {
            "item": "Place Details Essentials",
            "unit": "1k-requests",
            "usd": 5,
            "note": "10,000 free a month"
          },
          {
            "item": "Place Details Pro",
            "unit": "1k-requests",
            "usd": 17,
            "note": "5,000 free a month"
          },
          {
            "item": "Text Search Pro",
            "unit": "1k-requests",
            "usd": 32,
            "note": "5,000 free a month"
          },
          {
            "item": "Autocomplete Requests",
            "unit": "1k-requests",
            "usd": 2.83,
            "note": "10,000 free a month"
          },
          {
            "item": "Compute Routes Essentials",
            "unit": "1k-requests",
            "usd": 5,
            "note": "Pro $10, Enterprise $15"
          },
          {
            "item": "Maps Grounding Lite",
            "unit": "1k-requests",
            "usd": 7,
            "note": "10,000 free a month, $2.80 above 5 million"
          },
          {
            "item": "2D Map Tiles",
            "unit": "1k-requests",
            "usd": 0.6,
            "note": "100,000 free a month"
          }
        ],
        "provenance": {
          "legalEntity": "Google LLC or a regional Google entity, by billing country",
          "domain": "google.com",
          "domainRegistered": "1997-09-15",
          "endpointOnVendorDomain": false,
          "terms": "https://cloud.google.com/maps-platform/terms",
          "privacy": "https://policies.google.com/privacy",
          "statusPage": "https://status.cloud.google.com/maps-platform/",
          "changelog": "https://developers.google.com/maps/documentation/places/web-service/release-notes",
          "securityTxt": "valid",
          "checked": "2026-09-30",
          "notes": [
            "The terms name the contracting party through Google's entity table, and Section 21 lists regional entities for Australia, India, Indonesia and Mexico among others.",
            "The API and MCP endpoints sit on googleapis.com, Google's API domain, not google.com.",
            "google.com/.well-known/security.txt lists security@google.com and expires 2030-04-01.",
            "The Maps Platform terms were last modified 26 August 2026 and the service terms 10 June 2026."
          ],
          "score": 85
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/google-maps-platform.json",
        "live": {
          "slug": "google-maps-platform",
          "probe": {
            "target": "https://maps.googleapis.com",
            "method": "get",
            "lastAt": "2026-10-04T19:03:07.215566101Z",
            "lastOk": true,
            "lastStatus": 200,
            "lastMs": 464,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 503,
            "p95ms24h": 980,
            "samples24h": 271,
            "samples30d": 844,
            "days": [
              {
                "date": "2026-10-01",
                "probes": 109,
                "ok": 109
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 216,
                "ok": 216
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.cloud.google.com/maps-platform",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T18:11:55.096232583Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "googlemaps/google-maps-services-python",
              "version": "v4.10.0",
              "released": "2023-01-26",
              "seenAt": "2026-10-04T16:28:40.84537334Z"
            },
            {
              "registry": "npm",
              "name": "@googlemaps/google-maps-services-js",
              "version": "3.4.2",
              "seenAt": "2026-10-04T16:28:40.418204053Z"
            },
            {
              "registry": "pypi",
              "name": "googlemaps",
              "version": "4.10.0",
              "released": "2023-01-26",
              "seenAt": "2026-10-04T16:28:40.663056189Z"
            }
          ],
          "githubStars": 4981,
          "npmWeekly": 1210327,
          "pypiWeekly": 773659,
          "securityTxt": {
            "url": "https://google.com/.well-known/security.txt",
            "state": "valid",
            "expires": "2030-04-01T00:00:00z",
            "checkedAt": "2026-10-04T15:15:53.387118101Z"
          },
          "domain": {
            "domain": "google.com",
            "registered": "1997-09-15",
            "source": "https://rdap.verisign.com/com/v1/domain/google.com",
            "checkedAt": "2026-10-04T13:05:50.737985829Z"
          },
          "pages": [
            {
              "url": "https://developers.google.com/maps/documentation/places/web-service/release-notes",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-04T15:42:53.389791399Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "fd6cce07e750"
            },
            {
              "url": "https://developers.google.com/maps/billing-and-pricing/pricing",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:42:50.88150349Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "b114dc62bf50"
            },
            {
              "url": "https://cloud.google.com/maps-platform/terms",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:41:55.601480532Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "b64404e45856"
            }
          ],
          "updatedAt": "2026-10-04T19:03:07.215566101Z"
        }
      },
      {
        "slug": "stadia-maps",
        "name": "Stadia Maps",
        "vendor": "Stadia Maps",
        "vendorUrl": "https://stadiamaps.com",
        "kind": "http-api",
        "category": "maps",
        "summary": "Geocoding, reverse geocoding, autocomplete and place details, routing, matrix, isochrones, static maps and hosted vector, raster and satellite tiles, sold in credits on plans from $20 a month.",
        "url": "https://www.anchorterminal.com/tools/stadia-maps",
        "markdownUrl": "https://www.anchorterminal.com/tools/stadia-maps.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/stadia-maps.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/stadia-maps.json",
        "repo": "https://github.com/stadiamaps/stadiamaps-mcp-server-ts",
        "license": "BSD-3-Clause (MCP server)",
        "transports": [
          "http",
          "stdio"
        ],
        "remoteUrl": "https://api.stadiamaps.com",
        "packages": [
          {
            "registry": "npm",
            "name": "@stadiamaps/api"
          },
          {
            "registry": "pypi",
            "name": "stadiamaps"
          }
        ],
        "auth": "api-key",
        "authNotes": "API key as the api_key query parameter or in an `Authorization: Stadia-Auth \u003ckey\u003e` header. Browser apps can use domain-based auth with no key, checked against the Origin and Referer headers. The MCP server reads API_KEY.",
        "pricing": "freemium",
        "pricingNotes": "Free 200,000 credits a month for development, testing and demos only, no commercial use. Starter $20 a month (1 million credits), Standard $80 (7.5 million), Professional $250 (25 million), with overage at $0.03, $0.02 and $0.015 per 1,000 credits. A forward, reverse or structured geocode, a place lookup, an Autocomplete v1 search or a route is 20 credits, Autocomplete v2 is 1, a matrix element 10, a map tile 1 and a satellite tile 4, so Starter covers 50,000 geocodes. New accounts get a 14-day Professional trial with no card (https://stadiamaps.com/pricing/). When credits run out you get 429 until the next cycle unless pay-as-you-go is on (https://stadiamaps.com/faqs/).",
        "priceSummary": "$20 / mo",
        "where": "both",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 6,
        "popularity": {
          "githubStars": 23,
          "npmWeekly": 6058,
          "pypiWeekly": 192,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://docs.stadiamaps.com",
        "llmsTxt": "https://docs.stadiamaps.com/llms.txt",
        "openapi": "https://api.stadiamaps.com/openapi.yaml",
        "capabilities": [
          "geo.geocode",
          "geo.reverse",
          "geo.places",
          "geo.routing",
          "geo.tiles"
        ],
        "tags": [
          "hosted",
          "mcp",
          "llms-txt",
          "official",
          "typescript",
          "python",
          "free-tier",
          "no-card",
          "open-data"
        ],
        "lastRelease": "2026-09-30",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 65.5,
          "grade": "B",
          "agentReady": false,
          "rank": 171,
          "rankOf": 452,
          "categoryRank": 4,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 80,
            "maintenance": 80,
            "payments": 40,
            "reliability": 63,
            "schema": 86,
            "security": 40,
            "transparency": 79
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Public OpenAPI spec (11.1.0) with generated TypeScript and Python SDKs. Free plan is for development, testing and demos only.",
          "strengths": [
            "Public OpenAPI spec (11.1.0) with generated TypeScript and Python SDKs",
            "Published credit costs, with 50,000 geocodes for $20 a month on Starter",
            "Header auth keeps the key out of URLs, and keys rotate through an API",
            "Server logs kept about 7 to 14 days, and a DPA",
            "14 dated changelog entries between June and September 2026"
          ],
          "weaknesses": [
            "Free plan is for development, testing and demos only",
            "The same 429 signals a burst or a spent month of credits, with no Retry-After",
            "No SLA, no security.txt and no disclosure policy found",
            "MCP server has no release, no CI and no commits since 29 July 2025",
            "The terms forbid benchmarking against competitors without written permission"
          ],
          "agentNotes": [
            "Send the key as `Authorization: Stadia-Auth \u003ckey\u003e` rather than in the URL",
            "Try Autocomplete v2 (1 credit) before a full geocode (20 credits) when a name is enough",
            "Check the dashboard's credit balance before retrying a 429, since it may mean the month is spent",
            "Don't write geocodes to a database on Free or Starter",
            "Use bulk-geocode for addresses only, not POI names"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "B",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 65.5
            }
          ],
          "editorialScores": {
            "ergonomics": 80,
            "maintenance": 80,
            "payments": 40,
            "reliability": 63,
            "schema": 86,
            "security": 40,
            "transparency": 72
          },
          "provenanceScore": 86
        },
        "connect": {
          "http": "curl -H \"Authorization: Stadia-Auth $STADIA_API_KEY\" \"https://api.stadiamaps.com/geocoding/v1/search?text=10%20Downing%20Street%2C%20London\u0026size=1\""
        },
        "letme": {
          "capability": "https://letme.dev/geo.geocode",
          "tool": "https://letme.dev/stadia-maps"
        },
        "area": "everyday",
        "unitPrices": [
          {
            "item": "Starter plan",
            "unit": "month",
            "usd": 20,
            "note": "1 million credits, about 50,000 geocodes"
          },
          {
            "item": "Standard plan",
            "unit": "month",
            "usd": 80,
            "note": "7.5 million credits, permanent geocode storage"
          },
          {
            "item": "Professional plan",
            "unit": "month",
            "usd": 250,
            "note": "25 million credits"
          },
          {
            "item": "Geocoding within Starter",
            "unit": "1k-requests",
            "usd": 0.4,
            "note": "20 credits each, $20 for 1 million credits"
          },
          {
            "item": "Geocoding overage on Starter",
            "unit": "1k-requests",
            "usd": 0.6,
            "note": "20 credits each at $0.03 per 1,000 credits"
          }
        ],
        "provenance": {
          "legalEntity": "Stadia Maps, Inc.",
          "domain": "stadiamaps.com",
          "domainRegistered": "2016-11-30",
          "endpointOnVendorDomain": true,
          "terms": "https://stadiamaps.com/terms-of-service/",
          "privacy": "https://stadiamaps.com/privacy/privacy-policy/",
          "statusPage": "https://status.stadiamaps.com",
          "changelog": "https://stadiamaps.com/changelog/",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "notes": [
            "The terms name Stadia Maps, Inc., a Delaware corporation with an address in East Lansing, Michigan, under Delaware law. Last updated 18 March 2026.",
            "Pages showing Traffic Products must carry \"© Stadia Maps © TomTom\".",
            "stadiamaps.com/.well-known/security.txt returns 404."
          ],
          "score": 86
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/stadia-maps.json",
        "live": {
          "slug": "stadia-maps",
          "probe": {
            "target": "https://api.stadiamaps.com",
            "method": "get",
            "lastAt": "2026-10-04T19:03:13.902210312Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 41,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 41,
            "p95ms24h": 88,
            "samples24h": 271,
            "samples30d": 844,
            "days": [
              {
                "date": "2026-10-01",
                "probes": 109,
                "ok": 109
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 216,
                "ok": 216
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.stadiamaps.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T18:12:14.710241861Z"
          },
          "versions": [
            {
              "registry": "npm",
              "name": "@stadiamaps/api",
              "version": "9.1.0",
              "seenAt": "2026-10-04T16:40:38.572907535Z"
            },
            {
              "registry": "pypi",
              "name": "stadiamaps",
              "version": "8.1.0",
              "released": "2026-04-27",
              "seenAt": "2026-10-04T16:40:39.017901266Z"
            }
          ],
          "githubStars": 25,
          "npmWeekly": 7307,
          "pypiWeekly": 247,
          "securityTxt": {
            "url": "https://stadiamaps.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:49.354792712Z"
          },
          "llmsTxt": {
            "url": "https://docs.stadiamaps.com/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:18:15.966617081Z"
          },
          "domain": {
            "domain": "stadiamaps.com",
            "registered": "2016-11-30",
            "source": "https://rdap.verisign.com/com/v1/domain/stadiamaps.com",
            "checkedAt": "2026-10-04T13:06:24.947269949Z"
          },
          "pages": [
            {
              "url": "https://stadiamaps.com/changelog/",
              "kind": "changelog",
              "status": 304,
              "checkedAt": "2026-10-04T15:48:05.926794914Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "fb379c6fd6fb"
            },
            {
              "url": "https://stadiamaps.com/pricing/",
              "kind": "pricing",
              "status": 304,
              "checkedAt": "2026-10-04T15:48:08.015926136Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "aeba9483f45f"
            },
            {
              "url": "https://stadiamaps.com/privacy/privacy-policy/",
              "kind": "privacy",
              "status": 304,
              "checkedAt": "2026-10-04T15:48:10.017233686Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "22f042b735db"
            },
            {
              "url": "https://stadiamaps.com/terms-of-service/",
              "kind": "terms",
              "status": 304,
              "checkedAt": "2026-10-04T15:48:12.02067172Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "9252c6ede41d"
            }
          ],
          "updatedAt": "2026-10-04T19:03:13.902210312Z"
        }
      },
      {
        "slug": "locationiq",
        "name": "LocationIQ",
        "vendor": "LocationIQ (Unwired Labs)",
        "vendorUrl": "https://locationiq.com",
        "kind": "http-api",
        "category": "maps",
        "summary": "Forward and reverse geocoding, autocomplete, nearby places, directions, matrix and map tiles, from US and EU endpoints.",
        "url": "https://www.anchorterminal.com/tools/locationiq",
        "markdownUrl": "https://www.anchorterminal.com/tools/locationiq.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/locationiq.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/locationiq.json",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://us1.locationiq.com/v1",
        "packages": [],
        "auth": "api-key",
        "authNotes": "Access token passed as the key query parameter. Same API on us1.locationiq.com and eu1.locationiq.com.",
        "pricing": "freemium",
        "pricingNotes": "Free 5,000 requests a day at 2 a second, no card, with a prominent link back required. Maps Lite $45 a month (10,000 a day, maps only), Developer $100 (25,000 a day, all APIs), Startup $200 (60,000 a day), Growth Plus $500 (7.5 million a month), Business Plus $950 (30 million a month), Enterprise custom. Paid plans need a card (https://locationiq.com/pricing).",
        "priceSummary": "$100 / mo",
        "where": "hosted",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": null,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://docs.locationiq.com",
        "llmsTxt": "https://docs.locationiq.com/llms.txt",
        "openapi": "https://docs.locationiq.com/openapi.yaml",
        "capabilities": [
          "geo.geocode",
          "geo.reverse",
          "geo.places",
          "geo.routing",
          "geo.tiles"
        ],
        "tags": [
          "hosted",
          "llms-txt",
          "free-tier",
          "no-card",
          "eu",
          "closed-source"
        ],
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 60.6,
          "grade": "C",
          "agentReady": false,
          "rank": 243,
          "rankOf": 452,
          "categoryRank": 5,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 74,
            "maintenance": 3,
            "payments": 30,
            "reliability": 83,
            "schema": 78,
            "security": 55,
            "transparency": 65
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "5,000 free requests a day with no card, commercial use allowed with a link back. No changelog, release notes or blog.",
          "strengths": [
            "5,000 free requests a day with no card, commercial use allowed with a link back",
            "Public OpenAPI 3.0 spec and an llms.txt with Markdown pages",
            "Scoped tokens with referrer or IP restrictions and per-token rate limits",
            "No incidents posted between 2 April and 1 October 2026, with history back to 2018",
            "Error messages that separate per-second, per-minute and per-day limits"
          ],
          "weaknesses": [
            "No changelog, release notes or blog",
            "Official SDKs untouched since 2020",
            "No MCP server",
            "Key only in the query string",
            "Free plan must delete cached results after 48 hours and gets a single token"
          ],
          "agentNotes": [
            "Use eu1.locationiq.com for European users or data",
            "Add format=json and limit=1 to keep responses small",
            "On 429 Rate Limited Second wait a second, on Rate Limited Day stop until the next day",
            "Call /balance before a large batch to see what's left of the day's quota",
            "Redact the key parameter before logging request URLs"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 4.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 60.6
            }
          ],
          "editorialScores": {
            "ergonomics": 74,
            "maintenance": 3,
            "payments": 30,
            "reliability": 83,
            "schema": 78,
            "security": 55,
            "transparency": 40
          },
          "provenanceScore": 90
        },
        "connect": {
          "http": "curl \"https://eu1.locationiq.com/v1/search?key=$LOCATIONIQ_API_KEY\u0026q=10%20Downing%20Street%2C%20London\u0026format=json\u0026limit=1\""
        },
        "letme": {
          "capability": "https://letme.dev/geo.geocode",
          "tool": "https://letme.dev/locationiq"
        },
        "area": "everyday",
        "unitPrices": [
          {
            "item": "Developer plan",
            "unit": "month",
            "usd": 100,
            "note": "25,000 requests a day, 20 a second, all APIs"
          },
          {
            "item": "Startup plan",
            "unit": "month",
            "usd": 200,
            "note": "60,000 requests a day, 22 a second"
          },
          {
            "item": "Growth Plus plan",
            "unit": "month",
            "usd": 500,
            "note": "7.5 million requests a month, 30 a second"
          },
          {
            "item": "Business Plus plan",
            "unit": "month",
            "usd": 950,
            "note": "30 million requests a month, 40 a second"
          }
        ],
        "provenance": {
          "legalEntity": "Unwired Labs (India) Pvt Ltd",
          "domain": "locationiq.com",
          "domainRegistered": "2005-09-20",
          "endpointOnVendorDomain": true,
          "terms": "https://locationiq.com/tos",
          "privacy": "https://locationiq.com/privacy",
          "statusPage": "https://status.locationiq.com",
          "changelog": "",
          "securityTxt": "valid",
          "checked": "2026-10-01",
          "notes": [
            "The terms were last updated 31 March 2026.",
            "security.txt lists hello@locationiq.com and expires 2028-01-01.",
            "LocationIQ's own privacy policy is at locationiq.com/privacy, last updated 22 May 2020. The parent's page at unwiredlabs.com/privacy embeds a Google Doc our reader couldn't see.",
            "The status page's RSS feed holds 74 incidents from March 2018 to 2 April 2026.",
            "We found no changelog or blog."
          ],
          "score": 90
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/locationiq.json",
        "live": {
          "slug": "locationiq",
          "probe": {
            "target": "https://us1.locationiq.com/v1",
            "method": "get",
            "lastAt": "2026-10-04T19:03:08.773582237Z",
            "lastOk": true,
            "lastStatus": 403,
            "lastMs": 231,
            "lastNote": "asks for credentials",
            "authRequired": true,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 231,
            "p95ms24h": 330,
            "samples24h": 271,
            "samples30d": 844,
            "days": [
              {
                "date": "2026-10-01",
                "probes": 109,
                "ok": 109
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 216,
                "ok": 216
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.locationiq.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T18:12:00.23515576Z"
          },
          "securityTxt": {
            "url": "https://locationiq.com/.well-known/security.txt",
            "state": "valid",
            "expires": "2028-01-01T00:00:00Z",
            "checkedAt": "2026-10-04T15:15:37.071056485Z"
          },
          "llmsTxt": {
            "url": "https://docs.locationiq.com/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:17:57.180551219Z"
          },
          "domain": {
            "domain": "locationiq.com",
            "registered": "2005-09-20",
            "source": "https://rdap.verisign.com/com/v1/domain/locationiq.com",
            "checkedAt": "2026-10-04T13:04:09.085884687Z"
          },
          "pages": [
            {
              "url": "https://locationiq.com/pricing",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:45:40.456577184Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "8ef406b8d494"
            },
            {
              "url": "https://locationiq.com/privacy",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:45:42.570074696Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "f99922f73f1e"
            },
            {
              "url": "https://locationiq.com/tos",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:45:44.50940215Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "13f087788a40"
            }
          ],
          "updatedAt": "2026-10-04T19:03:08.773582237Z"
        }
      },
      {
        "slug": "geoapify",
        "name": "Geoapify Location Platform + MCP",
        "vendor": "Geoapify",
        "vendorUrl": "https://www.geoapify.com",
        "kind": "http-api",
        "category": "maps",
        "summary": "Geocoding, reverse geocoding, autocomplete, Places search by category, Routing, Route Matrix, isolines and map tiles, with OpenStreetMap attribution required on every plan.",
        "url": "https://www.anchorterminal.com/tools/geoapify",
        "markdownUrl": "https://www.anchorterminal.com/tools/geoapify.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/geoapify.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/geoapify.json",
        "transports": [
          "http",
          "streamable-http"
        ],
        "remoteUrl": "https://api.geoapify.com/v1",
        "packages": [],
        "auth": "api-key",
        "authNotes": "API key as the apiKey query parameter or the x-api-key header, both defined in the OpenAPI specs. The hosted MCP takes x-api-key. api-eu.geoapify.com serves the same API on EU infrastructure.",
        "pricing": "freemium",
        "pricingNotes": "Free 3,000 credits a day at 5 requests a second, commercial and production use allowed, no card, with a Geoapify attribution link required. API 10 $59 a month (10,000 credits a day, 12 a second), API 25 $109 (25,000), API 50 $179 (50,000), API 100 $299 (100,000), API 250 $609 (250,000), Custom from $860. A simple geocoding, places or routing request costs 1 credit (https://www.geoapify.com/pricing/). Over MCP, initialize, tools/list and notifications cost nothing and each tools/call is billed as the Geoapify API operation behind it (https://apidocs.geoapify.com/how-to/api-tooling-ai/connect-ai-client-mcp/).",
        "priceSummary": "$59 / mo",
        "where": "hosted",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 11,
        "popularity": {
          "githubStars": null,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://apidocs.geoapify.com/docs",
        "openapi": "https://apidocs.geoapify.com/open-api/",
        "capabilities": [
          "geo.geocode",
          "geo.reverse",
          "geo.places",
          "geo.routing",
          "geo.tiles"
        ],
        "tags": [
          "hosted",
          "mcp",
          "official",
          "free-tier",
          "no-card",
          "open-data",
          "eu",
          "closed-source"
        ],
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 55.5,
          "grade": "C",
          "agentReady": false,
          "rank": 314,
          "rankOf": 452,
          "categoryRank": 6,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 72,
            "maintenance": 61,
            "payments": 30,
            "reliability": 60,
            "schema": 74,
            "security": 29,
            "transparency": 64
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Free plan allows commercial production use, 3,000 credits a day, no card. No security.txt, disclosure policy, bug bounty or certification found.",
          "strengths": [
            "Free plan allows commercial production use, 3,000 credits a day, no card",
            "OpenAPI 3.1 specs for 22 APIs and one per MCP tool, with error examples",
            "Data for successful requests held no longer than 24 hours, hosted in the EU",
            "99.5 per cent monthly availability on paid plans, with discounts below it",
            "MCP tool descriptions say which tool to use instead"
          ],
          "weaknesses": [
            "No security.txt, disclosure policy, bug bounty or certification found",
            "No public changelog or deprecation policy, and the terms allow changes without notice",
            "Storage rights appear in the docs but not in the terms",
            "The specs recommend the apiKey query parameter for public APIs",
            "Credits are counted per day, so bursts hit the cap early"
          ],
          "agentNotes": [
            "Send the key as x-api-key, which the specs support, rather than apiKey in the URL",
            "Use api-eu.geoapify.com when the data has to stay on EU infrastructure",
            "Use calculate_route for geometry and directions, and calculate_route_matrix only for travel times between many points",
            "Read a 429 'Quota exceeded' as the day's credits being gone, not a burst, and wait for the daily reset",
            "Show OpenStreetMap attribution wherever you display results"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 4,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 55.5
            }
          ],
          "editorialScores": {
            "ergonomics": 72,
            "maintenance": 61,
            "payments": 30,
            "reliability": 60,
            "schema": 74,
            "security": 29,
            "transparency": 52
          },
          "provenanceScore": 76
        },
        "connect": {
          "http": "curl \"https://api.geoapify.com/v1/geocode/search?text=10%20Downing%20Street%2C%20London\u0026limit=1\u0026format=json\u0026apiKey=$GEOAPIFY_API_KEY\"",
          "claudeCode": "claude mcp add --transport http geoapify https://api.geoapify.com/v1/mcp --header \"x-api-key: $GEOAPIFY_API_KEY\"",
          "config": {
            "mcpServers": {
              "geoapify": {
                "headers": {
                  "x-api-key": "${GEOAPIFY_API_KEY}"
                },
                "type": "http",
                "url": "https://api.geoapify.com/v1/mcp"
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/geo.geocode",
          "tool": "https://letme.dev/geoapify"
        },
        "area": "everyday",
        "unitPrices": [
          {
            "item": "API 10 plan",
            "unit": "month",
            "usd": 59,
            "note": "10,000 credits a day, 12 requests a second"
          },
          {
            "item": "API 25 plan",
            "unit": "month",
            "usd": 109,
            "note": "25,000 credits a day"
          },
          {
            "item": "API 100 plan",
            "unit": "month",
            "usd": 299,
            "note": "100,000 credits a day, 25 requests a second"
          },
          {
            "item": "API 250 plan",
            "unit": "month",
            "usd": 609,
            "note": "250,000 credits a day"
          }
        ],
        "provenance": {
          "legalEntity": "KEPTAGO LTD",
          "domain": "geoapify.com",
          "domainRegistered": "2018-10-26",
          "endpointOnVendorDomain": true,
          "terms": "https://www.geoapify.com/terms-and-conditions/",
          "privacy": "https://www.geoapify.com/privacy-policy/",
          "statusPage": "https://status.geoapify.com",
          "changelog": "",
          "securityTxt": "none",
          "checked": "2026-10-01",
          "notes": [
            "The terms name KEPTAGO LTD, registered in Paphos, Cyprus, trading as Geoapify. Version 5, dated 2 February 2024.",
            "www.geoapify.com/.well-known/security.txt returns 404.",
            "status.geoapify.com redirects to an UptimeRobot status page.",
            "We found no public changelog. The OpenAPI specs repository on GitHub has dated commits.",
            "The privacy policy was last modified 1 April 2026."
          ],
          "score": 76
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/geoapify.json",
        "live": {
          "slug": "geoapify",
          "probe": {
            "target": "https://api.geoapify.com/v1",
            "method": "get",
            "lastAt": "2026-10-04T19:03:07.085926287Z",
            "lastOk": true,
            "lastStatus": 401,
            "lastMs": 118,
            "lastNote": "asks for credentials",
            "authRequired": true,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 530,
            "p95ms24h": 3051,
            "samples24h": 271,
            "samples30d": 844,
            "days": [
              {
                "date": "2026-10-01",
                "probes": 109,
                "ok": 109
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 216,
                "ok": 216
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.geoapify.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T18:11:54.041831088Z"
          },
          "securityTxt": {
            "url": "https://geoapify.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:58.717905359Z"
          },
          "domain": {
            "domain": "geoapify.com",
            "registered": "2018-10-26",
            "source": "https://rdap.verisign.com/com/v1/domain/geoapify.com",
            "checkedAt": "2026-10-04T13:07:12.953394282Z"
          },
          "pages": [
            {
              "url": "https://www.geoapify.com/pricing/",
              "kind": "pricing",
              "status": 304,
              "checkedAt": "2026-10-04T15:50:24.110440462Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "f9a9f1600f52"
            },
            {
              "url": "https://www.geoapify.com/privacy-policy/",
              "kind": "privacy",
              "status": 304,
              "checkedAt": "2026-10-04T15:50:26.317089191Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "37eb22e1e50f"
            },
            {
              "url": "https://www.geoapify.com/terms-and-conditions/",
              "kind": "terms",
              "status": 304,
              "checkedAt": "2026-10-04T15:50:28.23555038Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "c5c95d7b727d"
            }
          ],
          "updatedAt": "2026-10-04T19:03:07.085926287Z"
        }
      },
      {
        "slug": "tomtom",
        "name": "TomTom Maps APIs + MCP",
        "vendor": "TomTom",
        "vendorUrl": "https://developer.tomtom.com",
        "kind": "http-api",
        "category": "maps",
        "summary": "Search, Geocoding and Reverse Geocoding, Routing, Matrix Routing, Reachable Range, EV routing and live traffic, plus map tiles.",
        "url": "https://www.anchorterminal.com/tools/tomtom",
        "markdownUrl": "https://www.anchorterminal.com/tools/tomtom.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/tomtom.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/tomtom.json",
        "repo": "https://github.com/tomtom-international/tomtom-mcp",
        "license": "Apache-2.0 (MCP server)",
        "transports": [
          "http",
          "streamable-http",
          "stdio"
        ],
        "remoteUrl": "https://api.tomtom.com",
        "packages": [
          {
            "registry": "npm",
            "name": "@tomtom-org/tomtom-mcp"
          }
        ],
        "auth": "api-key",
        "authNotes": "One API key, passed as the key query parameter on REST calls. The hosted MCP takes it in a tomtom-api-key header and defaults to the Orbis backend. The local server defaults to the older TomTom Maps backend unless MAPS=tomtom-orbis-maps is set. Unreleased changes merged on 30 September 2026 drop the older backend, the tomtom-maps-backend header and the MAPS variable.",
        "pricing": "freemium",
        "pricingNotes": "Free monthly allowance with no card. 2,500 Search, 20,000 Geocoding, 20,000 Routing, 2,500 Matrix Routing, 200,000 vector and 200,000 raster tiles and 20,000 non-tile map requests. Past that it's pay as you grow in euros at volume tiers, worked out by an estimator on the pricing page. The per-request rates sit behind per-API detail links we couldn't read, so no rate is quoted here (https://docs.tomtom.com/pricing).",
        "priceSummary": "Freemium",
        "where": "both",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 15,
        "popularity": {
          "githubStars": 55,
          "npmWeekly": 996,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://docs.tomtom.com",
        "llmsTxt": "https://docs.tomtom.com/llms.txt",
        "capabilities": [
          "geo.geocode",
          "geo.reverse",
          "geo.places",
          "geo.routing",
          "geo.tiles"
        ],
        "tags": [
          "hosted",
          "mcp",
          "official",
          "typescript",
          "free-tier",
          "no-card",
          "enterprise",
          "eu",
          "closed-source"
        ],
        "lastRelease": "2026-09-23",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 55.1,
          "grade": "C",
          "agentReady": false,
          "rank": 318,
          "rankOf": 452,
          "categoryRank": 7,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 78,
            "maintenance": 86,
            "payments": 25,
            "reliability": 30,
            "schema": 71,
            "security": 51,
            "transparency": 61
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "low",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "No-card free allowance of 20,000 geocodes, 20,000 reverse geocodes and 20,000 routes a month. Terms, rate limits and deprecation policy render client-side, so storage rules and notice periods are unverified.",
          "strengths": [
            "No-card free allowance of 20,000 geocodes, 20,000 reverse geocodes and 20,000 routes a month",
            "Live traffic, EV routing and search, reachable range and search along a route as MCP tools",
            "All 18 MCP tools annotated read-only, idempotent and non-destructive",
            "Five MCP releases between 14 July and 23 September 2026, with Veracode scanning and end-to-end tests in CI",
            "HackerOne disclosure programme with a 3 business day first response"
          ],
          "weaknesses": [
            "Terms, rate limits and deprecation policy render client-side, so storage rules and notice periods are unverified",
            "Status page keeps only five days of history",
            "Paid prices only through a euro estimator",
            "Hosted MCP in public preview and missing from the MCP registry",
            "Only 2,500 free Search and Matrix calls a month"
          ],
          "agentNotes": [
            "Use tomtom-geocode (20,000 free) rather than tomtom-fuzzy-search (2,500 free) when you have a full address",
            "Don't send tomtom-maps-backend in new configs, since the next release stops reading it and Orbis is already the hosted default",
            "Read a 403 'missing permissions' as the key lacking Orbis or EV products, and enable them in the developer portal",
            "Pass show_ui false when the client can't render MCP Apps, or you'll get a JSON summary instead of a map",
            "Redact the key parameter before logging REST URLs"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "low",
              "grade": "C",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 55.1
            }
          ],
          "editorialScores": {
            "ergonomics": 78,
            "maintenance": 86,
            "payments": 25,
            "reliability": 30,
            "schema": 71,
            "security": 51,
            "transparency": 41
          },
          "provenanceScore": 80
        },
        "connect": {
          "http": "curl \"https://api.tomtom.com/search/2/geocode/10%20Downing%20Street%2C%20London.json?limit=1\u0026key=$TOMTOM_API_KEY\"",
          "claudeCode": "claude mcp add --transport http tomtom https://mcp.tomtom.com/maps --header \"tomtom-api-key: $TOMTOM_API_KEY\"",
          "config": {
            "mcpServers": {
              "tomtom": {
                "args": [
                  "-y",
                  "@tomtom-org/tomtom-mcp@latest"
                ],
                "command": "npx",
                "env": {
                  "TOMTOM_API_KEY": "${TOMTOM_API_KEY}"
                }
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/geo.geocode",
          "tool": "https://letme.dev/tomtom"
        },
        "area": "everyday",
        "provenance": {
          "legalEntity": "TomTom International BV",
          "domain": "tomtom.com",
          "domainRegistered": "1996-02-23",
          "endpointOnVendorDomain": true,
          "terms": "https://docs.tomtom.com/legal/terms-and-conditions",
          "privacy": "https://www.tomtom.com/privacy/",
          "statusPage": "https://tomtom.service-now.com/status",
          "changelog": "",
          "securityTxt": "none",
          "checked": "2026-10-02",
          "notes": [
            "The privacy policy names TomTom International BV and was last edited 1 August 2024. Subprocessors and storage locations are on https://www.tomtom.com/en-gb/privacy/more-information/.",
            "The terms page renders client-side and returned no readable text to our fetcher on 30 September, 1 October or 2 October, and developer.tomtom.com/legal redirects to it, so storage and caching rules are unverified.",
            "www.tomtom.com/.well-known/security.txt returns 404. Vulnerabilities go to TomTom's HackerOne programme, per the security policy in the tomtom-international GitHub organisation.",
            "The status page shows current status per API and only the last five days of history.",
            "A deprecation policy page is linked from docs.tomtom.com/llms.txt but renders client-side, and its .md twin returns 404."
          ],
          "score": 80
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/tomtom.json",
        "live": {
          "slug": "tomtom",
          "probe": {
            "target": "https://api.tomtom.com",
            "method": "get",
            "lastAt": "2026-10-04T19:03:14.591359523Z",
            "lastOk": true,
            "lastStatus": 200,
            "lastMs": 183,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 156,
            "p95ms24h": 340,
            "samples24h": 271,
            "samples30d": 844,
            "days": [
              {
                "date": "2026-10-01",
                "probes": 109,
                "ok": 109
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 216,
                "ok": 216
              }
            ]
          },
          "vendorStatus": {
            "page": "https://tomtom.service-now.com/status",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T18:12:16.424370872Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "tomtom-international/tomtom-mcp",
              "version": "v1.6.10",
              "released": "2026-09-23",
              "seenAt": "2026-10-04T16:42:10.302294149Z"
            },
            {
              "registry": "npm",
              "name": "@tomtom-org/tomtom-mcp",
              "version": "1.6.10",
              "seenAt": "2026-10-04T16:42:09.439404752Z"
            }
          ],
          "githubStars": 55,
          "npmWeekly": 685,
          "securityTxt": {
            "url": "https://tomtom.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:41.501098817Z"
          },
          "llmsTxt": {
            "url": "https://docs.tomtom.com/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:18:18.118999761Z"
          },
          "domain": {
            "domain": "tomtom.com",
            "registered": "1996-02-23",
            "source": "https://rdap.verisign.com/com/v1/domain/tomtom.com",
            "checkedAt": "2026-10-04T13:05:44.956685546Z"
          },
          "pages": [
            {
              "url": "https://docs.tomtom.com/pricing",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:44:11.600272734Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "9f426a4be50f"
            },
            {
              "url": "https://www.tomtom.com/privacy/",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:52:29.87969507Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "e5bdc55dca1e"
            },
            {
              "url": "https://docs.tomtom.com/legal/terms-and-conditions",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:44:09.558268623Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "68f5b7cd1e5c"
            }
          ],
          "updatedAt": "2026-10-04T19:03:14.591359523Z"
        }
      }
    ]
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/categories/maps",
    "json": "https://www.anchorterminal.com/categories/maps.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/categories/maps.md",
    "slim": "https://www.anchorterminal.com/categories/maps.min.md"
  },
  "markdown": "APIs that turn addresses into coordinates and back, find places, and plan routes with travel times. Compared on coverage, accuracy, what the terms let you store and show, and price per thousand calls.\n\n- Tools ranked: 7 · agent-ready (BB or better): 1 · accept x402: 0 · hosted endpoints: 7 · desk reviews by the panel: 20\n- JSON: https://www.anchorterminal.com/api/v1/tools.json (list) · https://www.anchorterminal.com/api/v1/rankings.json (ranked) · https://www.anchorterminal.com/api/v1/x402.json (payable) · https://www.anchorterminal.com/api/v1/capabilities.json (by capability)\n- Grades run AA, A, BB, B, C, D, E, F · methodology: https://www.anchorterminal.com/benchmark/\n\n- Capabilities in this category: geo.geocode, geo.reverse, geo.places, geo.routing, geo.tiles\n- https://letme.dev/geo.geocode picks the top-graded tool in this list and says how to call it direct; calling through letme comes later (https://www.anchorterminal.com/letme/index.md)\n\n## Ranking\n\n| # | Tool | Vendor | Kind | Category | Grade | Score | Confidence | x402 | Auth | Where | Reviews | Page |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| 39 | Mapbox APIs + MCP | Mapbox | HTTP API | Maps | BB | 75.2 | medium | no | OAuth or key | hosted + local | 3.6/5 (8) | https://www.anchorterminal.com/tools/mapbox.md |\n| 113 | OpenCage Geocoding API | OpenCage | HTTP API | Maps | B | 69.5 | high | no | API key | hosted + local | 3.5/5 (2) | https://www.anchorterminal.com/tools/opencage.md |\n| 123 | Google Maps Platform + Grounding Lite MCP | Google | HTTP API | Maps | B | 68.5 | medium | no | OAuth or key | hosted | 2.5/5 (2) | https://www.anchorterminal.com/tools/google-maps-platform.md |\n| 171 | Stadia Maps | Stadia Maps | HTTP API | Maps | B | 65.5 | medium | no | API key | hosted + local | 3.5/5 (2) | https://www.anchorterminal.com/tools/stadia-maps.md |\n| 243 | LocationIQ | LocationIQ (Unwired Labs) | HTTP API | Maps | C | 60.6 | medium | no | API key | hosted | 4.5/5 (2) | https://www.anchorterminal.com/tools/locationiq.md |\n| 314 | Geoapify Location Platform + MCP | Geoapify | HTTP API | Maps | C | 55.5 | medium | no | API key | hosted | 4/5 (2) | https://www.anchorterminal.com/tools/geoapify.md |\n| 318 | TomTom Maps APIs + MCP | TomTom | HTTP API | Maps | C | 55.1 | low | no | API key | hosted + local | 3/5 (2) | https://www.anchorterminal.com/tools/tomtom.md |\n\nScores are from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/), with Performance and Task success pending. p95 latency and context cost come from our probes, which haven't run yet.\n\n## Summaries\n\n### 39. Mapbox APIs + MCP, BB (75.2)\n\nGeocoding v6 with batch, Search Box for places and categories, Directions, Matrix, Isochrone, Map Matching, route optimisation, static images and map tiles. Official MCP server, hosted at mcp.mapbox.com with OAuth or run locally, listed in the MCP registry. Storing geocodes needs the Permanent tier at $5 per 1,000, about 6.7 times the temporary rate.\n\n- Page: https://www.anchorterminal.com/tools/mapbox · Markdown: https://www.anchorterminal.com/tools/mapbox.md · JSON: https://www.anchorterminal.com/api/v1/tools/mapbox.json\n- Capabilities: geo.geocode, geo.reverse, geo.places, geo.routing, geo.tiles · endpoint: `https://api.mapbox.com`\n\n### 113. OpenCage Geocoding API, B (69.5)\n\nForward and reverse geocoding on one endpoint, built on OpenStreetMap and other open data, with optional annotations and JSON, GeoJSON, XML or Google-compatible output. Permanent storage of results on every plan, including after you cancel. Geocoding only, no place search or routing.\n\n- Page: https://www.anchorterminal.com/tools/opencage · Markdown: https://www.anchorterminal.com/tools/opencage.md · JSON: https://www.anchorterminal.com/api/v1/tools/opencage.json\n- Capabilities: geo.geocode, geo.reverse · endpoint: `https://api.opencagedata.com/geocode/v1/json`\n\n### 123. Google Maps Platform + Grounding Lite MCP, B (68.5)\n\nGeocoding, Places API (New) for text, nearby and detail search, Routes for routes and matrices, Address Validation, static maps and map tiles. Maps Grounding Lite is GA, hosted, and takes an X-Goog-Api-Key header or OAuth with the maps-platform.mapstools scope. A Cloud billing account with a payment method is required before the free caps apply.\n\n- Page: https://www.anchorterminal.com/tools/google-maps-platform · Markdown: https://www.anchorterminal.com/tools/google-maps-platform.md · JSON: https://www.anchorterminal.com/api/v1/tools/google-maps-platform.json\n- Capabilities: geo.geocode, geo.reverse, geo.places, geo.routing, geo.tiles · endpoint: `https://maps.googleapis.com`\n\n### 171. Stadia Maps, B (65.5)\n\nGeocoding, reverse geocoding, autocomplete and place details, routing, matrix, isochrones, static maps and hosted vector, raster and satellite tiles, sold in credits on plans from $20 a month. Public OpenAPI spec (11.1.0) with generated TypeScript and Python SDKs. Free plan is for development, testing and demos only.\n\n- Page: https://www.anchorterminal.com/tools/stadia-maps · Markdown: https://www.anchorterminal.com/tools/stadia-maps.md · JSON: https://www.anchorterminal.com/api/v1/tools/stadia-maps.json\n- Capabilities: geo.geocode, geo.reverse, geo.places, geo.routing, geo.tiles · endpoint: `https://api.stadiamaps.com`\n\n### 243. LocationIQ, C (60.6)\n\nForward and reverse geocoding, autocomplete, nearby places, directions, matrix and map tiles, from US and EU endpoints. 5,000 free requests a day with no card, commercial use allowed with a link back. No changelog, release notes or blog.\n\n- Page: https://www.anchorterminal.com/tools/locationiq · Markdown: https://www.anchorterminal.com/tools/locationiq.md · JSON: https://www.anchorterminal.com/api/v1/tools/locationiq.json\n- Capabilities: geo.geocode, geo.reverse, geo.places, geo.routing, geo.tiles · endpoint: `https://us1.locationiq.com/v1`\n\n### 314. Geoapify Location Platform + MCP, C (55.5)\n\nGeocoding, reverse geocoding, autocomplete, Places search by category, Routing, Route Matrix, isolines and map tiles, with OpenStreetMap attribution required on every plan. Free plan allows commercial production use, 3,000 credits a day, no card. No security.txt, disclosure policy, bug bounty or certification found.\n\n- Page: https://www.anchorterminal.com/tools/geoapify · Markdown: https://www.anchorterminal.com/tools/geoapify.md · JSON: https://www.anchorterminal.com/api/v1/tools/geoapify.json\n- Capabilities: geo.geocode, geo.reverse, geo.places, geo.routing, geo.tiles · endpoint: `https://api.geoapify.com/v1`\n\n### 318. TomTom Maps APIs + MCP, C (55.1)\n\nSearch, Geocoding and Reverse Geocoding, Routing, Matrix Routing, Reachable Range, EV routing and live traffic, plus map tiles. No-card free allowance of 20,000 geocodes, 20,000 reverse geocodes and 20,000 routes a month. Terms, rate limits and deprecation policy render client-side, so storage rules and notice periods are unverified.\n\n- Page: https://www.anchorterminal.com/tools/tomtom · Markdown: https://www.anchorterminal.com/tools/tomtom.md · JSON: https://www.anchorterminal.com/api/v1/tools/tomtom.json\n- Capabilities: geo.geocode, geo.reverse, geo.places, geo.routing, geo.tiles · endpoint: `https://api.tomtom.com`\n\n## How we test this category\n\nThe same addresses in five countries geocoded and reverse geocoded, a place search and a route with traffic. We check accuracy against known coordinates, latency, the storage terms and the cost. This test hasn't run yet, so Task success is pending and the grades here come from the categories assessed from public evidence.\n\n## Indexed, not reviewed (5)\n\nSorted into this category from public catalogues, with facts and our own checks but no score, grade or rank (https://www.anchorterminal.com/indexed/index.md).\n\n| Listing | Kind | What it does | Why it's here |\n| --- | --- | --- | --- |\n| [apogeoapi-mcp](https://www.anchorterminal.com/tools/apogeoapi-mcp.md) | MCP server | Geographic data API: 250+ countries, 150K+ cities, IP geolocation, 161 live FX rates. | vendor's own |\n| [AtlasFetch](https://www.anchorterminal.com/tools/atlasfetch.md) | MCP server | Reverse geocode a coordinate to country, region, municipality and street, plus your own geofences. | vendor's own |\n| [On va où ? Routing API](https://www.anchorterminal.com/tools/onvaou-itineraires.md) | MCP server | Address geocoding and bike, scooter, motorcycle, wheelchair and walking routes across Europe. | vendor's own |\n| [TrustyData](https://www.anchorterminal.com/tools/trustydata.md) | MCP server | French address quality, geocoding, routing, company lookup \u0026 catchment stats (BAN, INSEE, OSM). | vendor's own |\n| [vayapin.app MCP server](https://www.anchorterminal.com/tools/vayapin-mcp.md) | MCP server | VayaPin MCP: pin resolution + Google Maps geocoding/places + AfterShip tracking, with BYOK. | vendor's own |\n\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Maps, geocoding \u0026 places",
        "url": ""
      }
    ],
    "description": "7 maps, geocoding \u0026 places ranked by the Anchor benchmark. Leader Mapbox APIs + MCP (BB). APIs that turn addresses into coordinates and back, find places, and plan routes with travel times. Compared on coverage, accuracy, what the terms let you store and show, and price per thousand calls.",
    "facts": [
      "Mapbox APIs + MCP BB",
      "OpenCage Geocoding API B",
      "Google Maps Platform + Grounding Lite MCP B"
    ],
    "h1": "Maps, geocoding and places APIs for AI agents",
    "image": "https://www.anchorterminal.com/assets/og/categories-maps.png",
    "path": "/categories/maps",
    "published": "",
    "section": "tools",
    "title": "Maps, geocoding and places APIs for AI agents, ranked | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/categories/maps"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 430
  },
  "version": 1
}
