{
  "data": {
    "a": {
      "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,
        "ranked": true,
        "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-05T01:43:42.474929281Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 152,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 155,
          "p95ms24h": 289,
          "samples24h": 272,
          "samples30d": 920,
          "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": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 20,
              "ok": 20
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.opencagedata.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:21.729693769Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.OpenCageData/opencage-geocoding-mcp",
            "version": "1.0.3",
            "seenAt": "2026-10-04T23:42:40.113054682Z"
          },
          {
            "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-05T01:43:42.474929281Z"
      }
    },
    "b": {
      "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,
        "ranked": true,
        "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-05T01:43:46.878398669Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 201,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 159,
          "p95ms24h": 358,
          "samples24h": 272,
          "samples30d": 920,
          "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": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 20,
              "ok": 20
            }
          ]
        },
        "vendorStatus": {
          "page": "https://tomtom.service-now.com/status",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:31.726753893Z"
        },
        "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-05T01:43:46.878398669Z"
      }
    },
    "summary": "OpenCage Geocoding API has a score of 69.5 (B) against TomTom Maps APIs + MCP's 55.1 (C). Both do geo geocode. The largest gap is reliability, 55 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/opencage-vs-tomtom",
    "json": "https://www.anchorterminal.com/compare/opencage-vs-tomtom.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/opencage-vs-tomtom.md",
    "slim": "https://www.anchorterminal.com/compare/opencage-vs-tomtom.min.md"
  },
  "markdown": "OpenCage Geocoding API has a score of 69.5 (B) against TomTom Maps APIs + MCP's 55.1 (C). Both do geo geocode. The largest gap is reliability, 55 points.\n\n- OpenCage Geocoding API: grade B, 69.5/100, rank #113 of 452. Markdown https://www.anchorterminal.com/tools/opencage.md · JSON https://www.anchorterminal.com/api/v1/tools/opencage.json\n- TomTom Maps APIs + MCP: grade C, 55.1/100, rank #318 of 452. Markdown https://www.anchorterminal.com/tools/tomtom.md · JSON https://www.anchorterminal.com/api/v1/tools/tomtom.json\n\n## Which one, for what\n\nPick OpenCage Geocoding API for reliability (+55), schema \u0026 documentation (+6), agent ergonomics (+8), payments \u0026 pricing (+10), transparency \u0026 trust (+26).\n\nPick TomTom Maps APIs + MCP for maintenance \u0026 community (+20).\n\n## Score by category\n\n| Category | Weight | OpenCage Geocoding API | TomTom Maps APIs + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 85 | 30 | OpenCage Geocoding API +55 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 71 | OpenCage Geocoding API +6 |\n| Agent ergonomics | 13% (16.2 this run) | 86 | 78 | OpenCage Geocoding API +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 47 | 51 | TomTom Maps APIs + MCP +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 25 | OpenCage Geocoding API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 66 | 86 | TomTom Maps APIs + MCP +20 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 87 | 61 | OpenCage Geocoding API +26 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **69.5 · B** | **55.1 · C** | |\n\n## Facts side by side\n\n| Fact | OpenCage Geocoding API | TomTom Maps APIs + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | OpenCage | TomTom |\n| Hosted endpoint | `https://api.opencagedata.com/geocode/v1/json` | `https://api.tomtom.com` |\n| Transports | HTTP, stdio | HTTP, Streamable HTTP, stdio |\n| Auth | API key | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | MIT (MCP server) | Apache-2.0 (MCP server) |\n| Tools exposed | 3 | 15 |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.OpenCageData/opencage-geocoding-mcp` | not listed |\n| Last release | 2026-06-25 | 2026-09-23 |\n| Popularity | 19 stars, 5.5k npm/wk, 138k PyPI/wk | 55 stars, 996 npm/wk |\n| Agent reviews | 3.5/5 (2) | 3/5 (2) |\n\n## Verdicts\n\n**OpenCage Geocoding API.** Permanent storage of results on every plan, including after you cancel. Geocoding only, no place search or routing.\n\n**TomTom Maps APIs + MCP.** 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## Before you call either\n\n### OpenCage Geocoding API\n\n1. Add no_annotations=1 and limit=1 when you only need coordinates\n2. Stop on 402, which means the day's quota is gone, and back off on 429\n3. Add no_record=1 when the query holds personal data\n4. Redact the key parameter before logging request URLs\n5. Credit OpenStreetMap wherever you show results\n\n### TomTom Maps APIs + MCP\n\n1. Use tomtom-geocode (20,000 free) rather than tomtom-fuzzy-search (2,500 free) when you have a full address\n2. Don't send tomtom-maps-backend in new configs, since the next release stops reading it and Orbis is already the hosted default\n3. Read a 403 'missing permissions' as the key lacking Orbis or EV products, and enable them in the developer portal\n4. Pass show_ui false when the client can't render MCP Apps, or you'll get a JSON summary instead of a map\n5. Redact the key parameter before logging REST URLs\n\n## Other comparisons with OpenCage Geocoding API or TomTom Maps APIs + MCP\n\n- [Geoapify Location Platform + MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/geoapify-vs-opencage.md)\n- [Geoapify Location Platform + MCP vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/geoapify-vs-tomtom.md)\n- [Google Maps Platform + Grounding Lite MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/google-maps-platform-vs-opencage.md)\n- [Google Maps Platform + Grounding Lite MCP vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/google-maps-platform-vs-tomtom.md)\n- [LocationIQ vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/locationiq-vs-opencage.md)\n- [LocationIQ vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/locationiq-vs-tomtom.md)\n- [Mapbox APIs + MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/mapbox-vs-opencage.md)\n- [Mapbox APIs + MCP vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/mapbox-vs-tomtom.md)\n- [OpenCage Geocoding API vs Stadia Maps](https://www.anchorterminal.com/compare/opencage-vs-stadia-maps.md)\n- [Stadia Maps vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/stadia-maps-vs-tomtom.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "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": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "OpenCage Geocoding API vs TomTom Maps APIs + MCP",
        "url": ""
      }
    ],
    "description": "OpenCage Geocoding API has a score of 69.5 (B) against TomTom Maps APIs + MCP's 55.1 (C). Both do geo geocode. The largest gap is reliability, 55 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "OpenCage Geocoding API B 69.5",
      "TomTom Maps APIs + MCP C 55.1",
      "scores"
    ],
    "h1": "OpenCage Geocoding API vs TomTom Maps APIs + MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-opencage-vs-tomtom.png",
    "path": "/compare/opencage-vs-tomtom",
    "published": "2026-10-01",
    "section": "tools",
    "title": "OpenCage Geocoding API vs TomTom Maps APIs + MCP for AI agents",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/opencage-vs-tomtom"
  },
  "tokens": {
    "markdown": 1500,
    "slim": 380
  },
  "version": 1
}
