{
  "data": {
    "a": {
      "slug": "phrase",
      "name": "Phrase",
      "vendor": "Phrase a.s.",
      "vendorUrl": "https://phrase.com",
      "kind": "http-api",
      "category": "translation",
      "summary": "Localisation platform from Phrase a.s. in Prague. Its Language AI API translates text and files through automatically selected machine translation engines, and its Strings and TMS APIs, CLI and hosted MCP server manage translation projects, term bases and translation memories.",
      "url": "https://www.anchorterminal.com/tools/phrase",
      "markdownUrl": "https://www.anchorterminal.com/tools/phrase.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/phrase.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/phrase.json",
      "dns": "phrase.grade.anchorterminal.com",
      "repo": "https://github.com/phrase/phrase-cli",
      "license": "Proprietary service under the Phrase Terms of Service. The CLI, the Strings API clients and the deprecated local MCP server on GitHub are MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.eu.phrase.com",
      "packages": [
        {
          "registry": "npm",
          "name": "phrase-js"
        },
        {
          "registry": "pypi",
          "name": "phrase-api"
        },
        {
          "registry": "npm",
          "name": "@phrase/phrase-mcp-server"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A user creates a Phrase Platform API token in profile settings and exchanges it at `/idm/oauth/token` for a Bearer JWT that lasts about four hours. Service accounts, added on 7 August 2026, use the OAuth client credentials grant and can be limited by product and scope. The hosted MCP server signs in with OAuth (PKCE, dynamic client registration or a client ID metadata document) and the user grants view, create, or modify and delete access. The Strings API also accepts its own access tokens with four scopes, Basic authentication with email and password, and an `access_token` query parameter.",
      "pricing": "paid",
      "pricingNotes": "Plans from $27 a month (Freelancer), $525 (Software UI/UX) and $1,245 (Team), billed annually, with Business and Enterprise quoted by sales. Each plan includes yearly capacities such as Machine Translation Units and TMS words, and top-up prices aren't public. A 14-day trial starts with an email address and a password, with no automatic charge afterwards, so an agent's owner can begin without a contract (checked 2026-11-02).",
      "priceSummary": "$27 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI specs or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 49,
        "npmWeekly": 40342,
        "pypiWeekly": 14166,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.phrase.com",
      "llmsTxt": "https://developers.phrase.com/llms.txt",
      "openapi": "https://developers.phrase.com/openapi/phrase-language-ai.json",
      "registryName": "io.github.phrase/mcp",
      "capabilities": [
        "translate.text",
        "translate.documents",
        "translate.glossary",
        "translate.detect"
      ],
      "tags": [
        "hosted",
        "paid",
        "trial",
        "no-card",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "cli",
        "typescript",
        "python",
        "go",
        "eu",
        "status-page",
        "closed-source"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.2,
        "grade": "B",
        "agentReady": false,
        "rank": 337,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 7,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 30,
          "reliability": 70,
          "schema": 87,
          "security": 58,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": 0,
        "verdict": "Nine APIs with public OpenAPI specs, Markdown docs and a hosted MCP server that signs in with OAuth and separates view, create and delete consents. Every status incident in the last 90 days touched one component, region or group of users. Capacity top-up prices aren't public, and the terms permit training some models on customer content and prohibit benchmarking.",
        "bestFor": "Teams that keep translation projects, term bases and translation memories in Phrase and want an agent to run them, or to translate through engines chosen per language pair.",
        "strengths": [
          "Public OpenAPI specs for all nine APIs, an llms.txt index and a Markdown copy of every docs page, with a dated changelog of 71 entries since 24 April 2026",
          "Hosted MCP server in the EU and the US with OAuth, PKCE, dynamic client registration and three scopes, `phrase-mcp:read`, `phrase-mcp:write` and `phrase-mcp:destructive`",
          "Service accounts since 7 August 2026 use the OAuth client credentials grant, limited by product and scope, and don't count as seats",
          "Language AI picks the engine for each language pair, detects the source language and translates files with a quality estimate",
          "A 14-day trial starts with an email address and a password, and plan prices from $27 a month are public"
        ],
        "weaknesses": [
          "status.phrase.com lists nine incidents between 4 August and 2 November 2026, each confined to one component, one region or some users",
          "The terms of 4 October 2026 let Phrase train non-text models on customer content without approval, and prohibit use for benchmarking",
          "The Strings API still documents email and password Basic authentication and an `access_token` query parameter",
          "No idempotency keys, no `Retry-After` header in the docs and no published rate limit for the Language AI API",
          "The hosted MCP server's tool list isn't published, and the local npm server was deprecated on 7 August 2026, under six months after its first release"
        ],
        "agentNotes": [
          "Exchange a Phrase Platform API token at `https://eu.phrase.com/idm/oauth/token` (or `us.phrase.com`) for a Bearer JWT, which lasts about four hours, and refresh it before it expires",
          "Send a `User-Agent` header naming your application on every Strings and TMS call. The Strings API answers 400 without one",
          "Keep Strings calls under 1,000 in five minutes and eight in parallel, and read `X-Rate-Limit-Reset` and `X-Rate-Limit-Reason` on a 429",
          "Send at most six texts of 2,000 characters to `/v2/textTranslations`, with `consumerId` and `targetLang`. Term bases and translation memories work only with an AI translation agent profile",
          "Use the MCP URL for the account's region, `https://mcp.eu.phrase.com` or `https://mcp.us.phrase.com`, and ask the user for the view consent alone unless the task writes"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.2
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 30,
          "reliability": 70,
          "schema": 87,
          "security": 58,
          "transparency": 65
        },
        "provenanceScore": 83,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "brew install phrase-cli",
        "http": "curl -X POST https://eu.phrase.com/idm/oauth/token -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' -d 'subject_token=API-TOKEN'",
        "claudeCode": "claude mcp add --transport streamable-http phrase-mcp-prod-eu https://mcp.eu.phrase.com"
      },
      "letme": {
        "capability": "https://letme.dev/translate.text",
        "tool": "https://letme.dev/phrase"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Freelancer plan",
          "unit": "month",
          "usd": 27,
          "note": "Billed annually. 1 TMS seat, no Strings seats"
        },
        {
          "item": "Software UI/UX plan",
          "unit": "month",
          "usd": 525,
          "note": "Billed annually. 15 Strings seats, 1,000,000 MTUs a year"
        },
        {
          "item": "Team plan",
          "unit": "month",
          "usd": 1245,
          "note": "Billed annually. 20 Strings seats, 12,000,000 MTUs a year"
        }
      ],
      "provenance": {
        "legalEntity": "Phrase a.s.",
        "domain": "phrase.com",
        "domainRegistered": "1999-01-08",
        "endpointOnVendorDomain": true,
        "terms": "https://phrase.com/legal/",
        "privacy": "https://phrase.com/privacy/",
        "statusPage": "https://status.phrase.com",
        "changelog": "https://developers.phrase.com/en/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms name Phrase a.s. (formerly Memsource a.s.), Václavské náměstí 2132/47, 110 00 Prague 1, Czech Republic, identification number 247 07 139. A second tab holds the terms of Phrase GmbH in Hamburg.",
          "phrase.com/legal/ carries the full Phrase a.s. Terms of Service with its Data Processing Addendum, effective 4 October 2026, plus the Fair Use Policy and the Platform Pricing Terms on further tabs. phrase.com/terms/ redirects to it.",
          "The privacy notice for users and clients was last updated on 6 October 2026 and names Phrase a.s. and Phrase GmbH as controllers.",
          "phrase.com/.well-known/security.txt and developers.phrase.com/.well-known/security.txt both return 404. The security page takes reports at security@phrase.com.",
          "The Strings, Language AI, Platform and MCP hosts are on phrase.com. The TMS OpenAPI spec names cloud.memsource.com, the product's earlier domain.",
          "RDAP for phrase.com gives a registration date of 1999-01-08."
        ],
        "score": 83
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/phrase.json",
      "live": {
        "slug": "phrase",
        "probe": {
          "target": "https://mcp.eu.phrase.com",
          "method": "get",
          "lastAt": "2026-11-07T19:22:26.094670521Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 78,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 99.92,
          "p50ms24h": 58,
          "p95ms24h": 125,
          "samples24h": 238,
          "samples30d": 7430,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 246
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ],
          "outages": [
            {
              "start": "2026-10-26T11:25:29.470129961Z",
              "end": "2026-10-26T11:59:14.273564519Z",
              "note": "HTTP 503 server error"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.phrase.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T19:23:08.883060363Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "phrase/phrase-cli",
            "version": "2.71.0",
            "released": "2026-10-23",
            "seenAt": "2026-11-06T23:55:57.491759472Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.phrase/mcp",
            "version": "1.0.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@phrase/phrase-mcp-server",
            "version": "0.10.0",
            "seenAt": "2026-11-06T23:55:55.74089145Z"
          },
          {
            "registry": "npm",
            "name": "phrase-js",
            "version": "3.33.0",
            "seenAt": "2026-11-06T23:55:55.269297876Z"
          },
          {
            "registry": "pypi",
            "name": "phrase-api",
            "version": "3.31.0",
            "released": "2026-10-23",
            "seenAt": "2026-11-06T23:55:55.492434685Z"
          }
        ],
        "githubStars": 49,
        "npmWeekly": 54777,
        "pypiWeekly": 14700,
        "securityTxt": {
          "url": "https://phrase.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:29.042183104Z"
        },
        "llmsTxt": {
          "url": "https://developers.phrase.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:37.953101781Z"
        },
        "domain": {
          "domain": "phrase.com",
          "registered": "1999-01-08",
          "source": "https://rdap.verisign.com/com/v1/domain/phrase.com",
          "checkedAt": "2026-11-01T14:11:31.431384307Z"
        },
        "pages": [
          {
            "url": "https://developers.phrase.com/en/changelog",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:29.761186421Z",
            "changedAt": "2026-11-06T13:27:02.411063144Z",
            "fingerprint": "dbdc10270b4b"
          },
          {
            "url": "https://phrase.com/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:16:24.801389903Z",
            "changedAt": "2026-10-29T05:12:48.641713908Z",
            "fingerprint": "42a6f73b68c3"
          },
          {
            "url": "https://phrase.com/legal/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:16:22.460911416Z",
            "changedAt": "2026-10-29T05:12:44.754898202Z",
            "fingerprint": "c5a20325e2f5"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.eu.phrase.com",
          "checkedAt": "2026-11-07T01:46:49.629244016Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:46:49.629244016Z"
        },
        "github": {
          "repo": "phrase/phrase-cli",
          "checkedAt": "2026-11-02T09:16:10.95534039Z",
          "stars": 49,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-30T13:12:17Z",
          "openIssues": 3,
          "openPRs": 0,
          "issuesOpened90d": 2,
          "issuesClosed90d": 3,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 25,
            "unanswered": 1,
            "medianDays": 3.3
          }
        },
        "updatedAt": "2026-11-07T19:23:08.883060363Z"
      }
    },
    "answer": "Phrase scores 67.2 (B) on agent readiness against TranslatePlus's 39.7 (E), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "translateplus",
      "name": "TranslatePlus",
      "vendor": "PetaBytes, Inc.",
      "vendorUrl": "https://translateplus.io",
      "kind": "http-api",
      "category": "translation",
      "summary": "TranslatePlus is a machine translation API from PetaBytes, Inc. for text, batches, HTML, emails, subtitles and i18n files in more than 100 languages, with language detection, priced per request.",
      "url": "https://www.anchorterminal.com/tools/translateplus",
      "markdownUrl": "https://www.anchorterminal.com/tools/translateplus.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/translateplus.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/translateplus.json",
      "dns": "translateplus.grade.anchorterminal.com",
      "repo": "https://github.com/translateplus/translateplus-js",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "translateplus-python"
        },
        {
          "registry": "npm",
          "name": "translateplus-js"
        }
      ],
      "auth": "api-key",
      "authNotes": "One API key per account from the dashboard at app.translateplus.io after a browser or Google OAuth signup, sent in the X-API-KEY header. The docs say the key carries full access to the account; keys can be revoked in the dashboard. No scopes.",
      "pricing": "freemium",
      "pricingNotes": "Free plan of 5,000 requests a month at 500 characters each, then $0.001 a request. Basic $49 a month (250,000 requests), Professional $99 (700,000) and Mega $299 (3,000,000), with 1,000 to 2,000 characters per request.",
      "priceSummary": "$0.001 / call",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in either llms.txt, the docs or the pricing page (checked 2026-11-06). Payments go through third-party processors.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 6,
        "pypiWeekly": 4,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.translateplus.io/",
      "llmsTxt": "https://translateplus.io/llms.txt",
      "capabilities": [
        "translate.text",
        "translate.documents",
        "translate.detect"
      ],
      "tags": [
        "hosted",
        "api-key",
        "freemium",
        "free-tier",
        "llms-txt",
        "python",
        "typescript",
        "java",
        "php",
        "batch",
        "async-jobs",
        "closed-source"
      ],
      "lastRelease": "2026-01-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 39.7,
        "grade": "E",
        "agentReady": false,
        "rank": 1335,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 15,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 10,
          "payments": 30,
          "reliability": 45,
          "schema": 52,
          "security": 35,
          "transparency": 52
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": -3,
        "negativeNotes": [
          "Misleading claim (-3): llms.txt on translateplus.io, read 6 November 2026, lists a '99.9% uptime SLA' and 'SLA Guarantees', while the terms of service (last updated 18 December 2024) say TranslatePlus strives for 99.9% uptime 'but do not guarantee uninterrupted service'. https://translateplus.io/llms.txt and https://translateplus.io/terms-of-service"
        ],
        "verdict": "TranslatePlus has a simple key-in-header REST API with per-request prices from $0.0001, a 5,000-request free plan, batch, HTML, subtitle and i18n endpoints and documented 429 handling. Its changelog and SDKs haven't changed since January 2026 or earlier, the status page is stale, and llms.txt promises an SLA the terms disclaim.",
        "bestFor": "Low-cost per-request translation of short strings, HTML, emails, subtitles and i18n files for small projects.",
        "strengths": [
          "Per-request prices published, $0.001 after the free tier and down to $0.0001 on the $299 plan",
          "Free plan of 5,000 requests a month",
          "Endpoints for batch, HTML, email, subtitle and i18n file translation plus language detection",
          "429 responses with X-RateLimit headers and a documented wait-for-reset pattern",
          "Key sent in the X-API-KEY header, never the URL"
        ],
        "weaknesses": [
          "llms.txt claims a 99.9% uptime SLA and SOC 2 Type II, while the terms disclaim any uptime guarantee and no audit is named",
          "The changelog stops at December 2024 and the SDKs at January 2026",
          "The status page showed 'All systems unknown' and a last update of 22 January 2026",
          "One account key with full access, no scopes",
          "The terms name PetaBytes, Inc. but no address or governing law"
        ],
        "agentNotes": [
          "Send the key as X-API-KEY; there is no read-only or scoped key",
          "Use /v2/translate/batch for up to 100 texts instead of looping single calls",
          "Keep each text under the plan's per-request character limit (500 on Free, up to 2,000 on Mega)",
          "On 429 wait until X-RateLimit-Reset, then retry a few times at most",
          "Don't rely on an SLA; the terms don't guarantee uptime"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 39.7
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 10,
          "payments": 30,
          "reliability": 45,
          "schema": 52,
          "security": 35,
          "transparency": 23
        },
        "provenanceScore": 81,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install translateplus-python",
        "http": "curl -X POST https://api.translateplus.io/v2/translate -H \"X-API-KEY: $TRANSLATEPLUS_API_KEY\" -H \"Content-Type: application/json\" -d '{\"text\":\"Hello\",\"source\":\"en\",\"target\":\"fr\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/translate.text",
        "tool": "https://letme.dev/translateplus"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Request after the free tier",
          "unit": "call",
          "usd": 0.001,
          "note": "Free plan, 500 characters per request"
        },
        {
          "item": "Basic plan",
          "unit": "month",
          "usd": 49,
          "note": "250,000 requests, 1,000 characters each"
        },
        {
          "item": "Mega plan",
          "unit": "month",
          "usd": 299,
          "note": "3,000,000 requests, 2,000 characters each"
        }
      ],
      "provenance": {
        "legalEntity": "PetaBytes, Inc.",
        "domain": "translateplus.io",
        "domainRegistered": "2023-01-30",
        "endpointOnVendorDomain": true,
        "terms": "https://translateplus.io/terms-of-service",
        "privacy": "https://translateplus.io/privacy-policy",
        "statusPage": "https://status.translateplus.io",
        "changelog": "https://docs.translateplus.io/guides/changelog",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms (last updated 18 December 2024) and the about page name PetaBytes, Inc., a US-based corporation, as operator and billing party. No address, state of incorporation or governing law is given.",
          "The home page names no legal entity, as the sweep noted; the terms and about page do.",
          "translateplus.io/.well-known/security.txt returns 404.",
          "RDAP gives translateplus.io a registration date of 30 January 2023.",
          "robots.txt on translateplus.io allows all agents; docs.translateplus.io disallows /api/ and /admin/, which weren't fetched."
        ],
        "score": 81
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/translateplus.json",
      "live": {
        "slug": "translateplus",
        "vendorStatus": {
          "page": "https://status.translateplus.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:53.407307635Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "translateplus/translateplus-js",
            "version": "v2.0.3",
            "released": "2026-01-11",
            "seenAt": "2026-11-07T00:12:43.487331Z"
          },
          {
            "registry": "npm",
            "name": "translateplus-js",
            "version": "2.0.1",
            "seenAt": "2026-11-07T00:12:43.099950457Z"
          },
          {
            "registry": "pypi",
            "name": "translateplus-python",
            "version": "2.0.7",
            "released": "2026-01-11",
            "seenAt": "2026-11-07T00:12:42.911714719Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 6,
        "pypiWeekly": 4,
        "securityTxt": {
          "url": "https://translateplus.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:44.17894812Z"
        },
        "llmsTxt": {
          "url": "https://translateplus.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:10.649421836Z"
        },
        "pages": [
          {
            "url": "https://docs.translateplus.io/guides/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:08:22.717992878Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a0f0c5a14906"
          },
          {
            "url": "https://translateplus.io/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:22:21.573523178Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b272e83390f6"
          },
          {
            "url": "https://translateplus.io/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:22:23.795736869Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "298ba99dd1b5"
          }
        ],
        "updatedAt": "2026-11-07T16:01:44.17894812Z"
      }
    },
    "edges": [
      {
        "by": 73,
        "category": "maintenance",
        "leads": "phrase",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The changelog's latest entry is 22 October 2026, CLI 2.71.0 is of 23 October and `phrase-js` 3.31.0 was tagged on 28 October (30). 39 dated changelog entries since 4 August 2026, and CLI and `phrase-js` releases in October (20). A public changelog, a help centre and written support around the clock on paid plans. We didn't read the GitHub issues (11 of 15). The hosted MCP server is in the official MCP registry as `io.github.phrase/mcp`, and `phrase-js` 3.31.0 is current (15). The CLI has release and vulnerability workflows. The local MCP server was deprecated on 7 August 2026, under six months after its first tag (7 of 10). Total 83.",
          "b": "The newest dated change found is translateplus-python 2.0.7 and translateplus-js 2.0.1 on 11 January 2026, about ten months before this check, and the API changelog stops at 9 December 2024 (0). No release or dated change in the last 90 days (0). Support by email and a support portal; the status page hasn't updated since January (3). SDKs exist for four languages but haven't changed since January (5). Weekly downloads of 4 (PyPI) and 6 (npm) (2). 0+0+3+5+2 = 10."
        },
        "scores": {
          "a": 83,
          "b": 10
        }
      },
      {
        "by": 35,
        "category": "schema",
        "leads": "phrase",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3 specs for all nine APIs at developers.phrase.com/openapi, among them Strings with 301 operations and TMS with 547 (25). llms.txt and a Markdown copy of every docs page (10). Every Strings and Language AI operation has a description, 390 of 547 TMS operations do, and a page titled Choose the right API says which API fits which job. Few operations say when not to use them (14 of 20). Language AI inputs carry length limits, item counts and enums. The Strings spec has 49 enums across 301 operations (11 of 15). Strings documents 400, 401, 403, 404 and 429 on nearly every operation with 896 examples, while the Language AI error responses have no body schema (12 of 15). Versioned paths, four TMS versions to pin, and a dated changelog (15).",
          "b": "No OpenAPI or other machine-readable contract found in the docs or either llms.txt (0). llms.txt on the site and on docs.translateplus.io (10). Endpoint pages say what each call does, with little on when to choose HTML, email or i18n jobs over plain text (10). Required fields and per-plan character limits per request are documented, without enums for language codes beyond a supported-languages call (10). Code examples in several languages and an error-handling guide with status codes (12). Versioned /v1 and /v2 paths and a changelog, whose newest entry is 2.0.0 on 9 December 2024 (10). 0+10+10+10+12+10 = 52."
        },
        "scores": {
          "a": 87,
          "b": 52
        }
      },
      {
        "by": 25,
        "category": "reliability",
        "leads": "phrase",
        "name": "Reliability",
        "reasons": {
          "a": "Hosted reading, for the public APIs and the hosted MCP server. status.phrase.com on Statuspage, with components for Strings, TMS and the Language AI API in the EU and the US (20). Its history feed, re-read on 2 November 2026, lists nine incidents between 4 August and 2 November, besides scheduled maintenance. Each touched one component, one region or some users, such as TMS project management in the EU and the US for about three and a half hours on 31 August, Strings branching in the EU for about 19 hours on 6 and 7 August, TMS access for some users on 23 September and TMS in the EU for 11 minutes on 15 October. Read as partial, whatever the label, so minor incidents only (20 of 30). Strings publishes 1,000 requests in 5 minutes and, since 22 October, 8 concurrent, TMS 6,000 a minute and 100 concurrent, and the Language AI API says only that per-account limits apply (12 of 15). 429 responses carry `X-Rate-Limit-Reset` and `X-Rate-Limit-Reason` on Strings and `Ratelimit-Remaining` on TMS. No `Retry-After`, backoff guidance or idempotency keys were found in the reviewed documentation (8 of 15). No SLA in the public terms, which disclaim uninterrupted availability (0). The APIs and the MCP server are generally available (10). Total 70.",
          "b": "Hosted lines. status.translateplus.io is the vendor's own page; on 6 November 2026 it showed 'All systems unknown' and a last update of 22 January 2026, with data loading by script (5). No incident history to read (5). The rate-limits guide gives 100,000 requests a minute and 100,000,000 an hour per key, while llms.txt gives 50 requests a second on the Free plan, so limits are published but inconsistent (10). 429 returns a JSON detail message, responses carry X-RateLimit-Limit, -Remaining and -Reset, and the guide shows waiting for the reset with capped retries (15). No SLA. The terms say TranslatePlus strives for 99.9% uptime 'but do not guarantee uninterrupted service' (0). API v2 is the current, non-beta version (10). 5+5+10+15+0+10 = 45."
        },
        "scores": {
          "a": 70,
          "b": 45
        }
      },
      {
        "by": 23,
        "category": "security",
        "leads": "phrase",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "The hosted MCP server uses OAuth with PKCE, dynamic client registration and three scopes. Service accounts use the client credentials grant limited by product and scope, and platform tokens are exchanged for JWTs that last about four hours (30). Less 10 because the Strings docs give an `access_token` query parameter as an option, and still document Basic authentication with email and password (20 of 30). View, create and delete consents on MCP, revocable under the Consents tab, with role permissions still applied. No confirmation step for destructive calls was found (15 of 20). Tools return customer strings, comments and translations, and no prompt-injection guidance was found (3 of 15). Each user sees their login history, while audit logs are held by Phrase engineers and supplied on request (6 of 15). ISO 27001 certificate, SOC 2 Type I with Type II expected in 2026, annual third-party penetration tests and a disclosure address at security@phrase.com. No security.txt and no bug bounty found (14 of 20).",
          "b": "One API key per account in the X-API-KEY header, which the docs say 'carries full access to your account's resources', and can be revoked in the dashboard (15). No scopes or read-only keys (5). Translations return the caller's own text, so little untrusted content (10). llms.txt claims request logging and an analytics dashboard, which we couldn't see without an account (5). translateplus.io/.well-known/security.txt returns 404 and no disclosure policy was found; llms.txt says 'SOC 2 compliant' and 'SOC 2 Type II certified infrastructure' with no report or auditor named (0). 15+5+10+5+0 = 35."
        },
        "scores": {
          "a": 58,
          "b": 35
        }
      },
      {
        "by": 22,
        "category": "transparency",
        "leads": "phrase",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with published terms, and the CLI, clients and local MCP server under MIT (15). The privacy notice of 6 October 2026, the Data Processing Addendum and the AI statement agree on processor status, a 60-day deletion period and which products train on customer content. The terms still permit training non-text models, and any model for internal research, on customer content without approval (22 of 30). Deprecations are announced in the changelog with dates, such as the Quality Evaluator v1 and v2 endpoints on 2 July 2026, but without removal dates, and no written notice period was found (10 of 20). A sub-processor list with locations and transfer mechanisms, a choice of EU or US data centre, and hosting on AWS and Google Cloud disclosed (18 of 20).",
          "b": "Editorial half only. Closed service under terms last updated 18 December 2024 that name PetaBytes, Inc. as a US corporation but give no address, governing law or courts (10). The terms say translation requests aren't permanently stored 'unless required by law', the privacy policy says 'unless required for caching or service improvement purposes', and the terms allow using anonymised usage data to improve the service (8). API v1 is kept as legacy, with no dated deprecation notice (5). No subprocessor list or data location found (0). 10+8+5+0 = 23."
        },
        "scores": {
          "a": 74,
          "b": 52
        }
      },
      {
        "by": 9,
        "category": "ergonomics",
        "leads": "phrase",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "API reading of the checklist, with the hosted MCP server noted where its behaviour is documented. Strings lists return 25 items by default with `per_page` up to 100, and locale downloads support ETag. The hosted MCP server's tool list isn't published, and the deprecated local server listed 145 tools (17 of 25). `page` and `per_page` with `Link` headers, and filters on list endpoints (18 of 20). Strings returns a message on 400 and field-level errors on 422, and names the limit hit on 429. Language AI error bodies are undocumented (14 of 20). No idempotency keys. Conditional GETs are safe to repeat, and the MCP consent separates view, create, and modify and delete (8 of 20). Language AI needs three fields, six official Strings clients and a CLI exist, but a missing `User-Agent` header earns a 400 and the clients cover Strings alone (13 of 15).",
          "b": "API reading. Batch translation of up to 100 texts a call and separate HTML, email, subtitle and i18n job endpoints (16). Few output controls or filters (10). Errors are a `detail` string with HTTP status codes (12). No idempotency key for i18n jobs, though text translation is stateless (8). Official SDKs listed for Python, JavaScript and TypeScript, Java and PHP, with few required fields (15). 16+10+12+8+15 = 61."
        },
        "scores": {
          "a": 70,
          "b": 61
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Phrase a.s.",
        "b": "PetaBytes, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.eu.phrase.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Phrase Terms of Service. The CLI, the Strings API clients and the deprecated local MCP server on GitHub are MIT",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.phrase/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-28",
        "b": "2026-01-11",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2024-12-18",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-06",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "49 stars, 40k npm/wk, 14k PyPI/wk",
        "b": "6 npm/wk, 4 PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Phrase scores 67.2 (B) on agent readiness against TranslatePlus's 39.7 (E), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Phrase or TranslatePlus?"
      },
      {
        "answer": "Phrase takes an API key or an OAuth sign-in. TranslatePlus needs an API key.",
        "question": "Do Phrase and TranslatePlus need an API key?"
      },
      {
        "answer": "Phrase has a hosted endpoint at https://mcp.eu.phrase.com. No hosted endpoint is listed for TranslatePlus.",
        "question": "Can an agent call Phrase and TranslatePlus without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 70 against 45",
          "Schema \u0026 documentation, 87 against 52",
          "Agent ergonomics, 70 against 61",
          "Security \u0026 auth, 58 against 35",
          "Maintenance \u0026 community, 83 against 10",
          "Transparency \u0026 trust, 74 against 52"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Free to start without a card",
          "No incidents deducted, where TranslatePlus loses 3 points for them"
        ],
        "goodFor": "Teams that keep translation projects, term bases and translation memories in Phrase and want an agent to run them, or to translate through engines chosen per language pair.",
        "slug": "phrase",
        "watchFor": "status.phrase.com lists nine incidents between 4 August and 2 November 2026, each confined to one component, one region or some users"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Low-cost per-request translation of short strings, HTML, emails, subtitles and i18n files for small projects.",
        "slug": "translateplus",
        "watchFor": "llms.txt claims a 99.9% uptime SLA and SOC 2 Type II, while the terms disclaim any uptime guarantee and no audit is named"
      }
    ],
    "history": {
      "phrase": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-02",
          "delta": 3,
          "from": 64.2,
          "fromGrade": "B",
          "to": 67.2,
          "toGrade": "B"
        }
      ],
      "translateplus": null
    },
    "job": {
      "capability": "translate.text",
      "name": "Translation"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-translate-vs-phrase.json",
        "title": "Amazon Translate vs Phrase",
        "url": "https://www.anchorterminal.com/compare/amazon-translate-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-translate-vs-translateplus.json",
        "title": "Amazon Translate vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/amazon-translate-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-translator-vs-phrase.json",
        "title": "Azure Translator vs Phrase",
        "url": "https://www.anchorterminal.com/compare/azure-translator-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-translator-vs-translateplus.json",
        "title": "Azure Translator vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/azure-translator-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-phrase.json",
        "title": "Crowdin vs Phrase",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-translateplus.json",
        "title": "Crowdin vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepl-api-vs-phrase.json",
        "title": "DeepL API vs Phrase",
        "url": "https://www.anchorterminal.com/compare/deepl-api-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepl-api-vs-translateplus.json",
        "title": "DeepL API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/deepl-api-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-phrase.json",
        "title": "Google Cloud Translation vs Phrase",
        "url": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-translateplus.json",
        "title": "Google Cloud Translation vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lara-translate-vs-phrase.json",
        "title": "Lara Translate API vs Phrase",
        "url": "https://www.anchorterminal.com/compare/lara-translate-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lara-translate-vs-translateplus.json",
        "title": "Lara Translate API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lara-translate-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-phrase.json",
        "title": "LibreTranslate vs Phrase",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-translateplus.json",
        "title": "LibreTranslate vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lingo-dev-vs-phrase.json",
        "title": "Lingo.dev vs Phrase",
        "url": "https://www.anchorterminal.com/compare/lingo-dev-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lingo-dev-vs-translateplus.json",
        "title": "Lingo.dev vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lingo-dev-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lingvanex-vs-phrase.json",
        "title": "Lingvanex Translation API vs Phrase",
        "url": "https://www.anchorterminal.com/compare/lingvanex-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lingvanex-vs-translateplus.json",
        "title": "Lingvanex Translation API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lingvanex-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localazy-vs-phrase.json",
        "title": "Localazy vs Phrase",
        "url": "https://www.anchorterminal.com/compare/localazy-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localazy-vs-translateplus.json",
        "title": "Localazy vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/localazy-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lokalise-vs-phrase.json",
        "title": "Lokalise vs Phrase",
        "url": "https://www.anchorterminal.com/compare/lokalise-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lokalise-vs-translateplus.json",
        "title": "Lokalise vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lokalise-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/phrase-vs-smartcat.json",
        "title": "Phrase vs Smartcat",
        "url": "https://www.anchorterminal.com/compare/phrase-vs-smartcat"
      },
      {
        "json": "https://www.anchorterminal.com/compare/phrase-vs-systran.json",
        "title": "Phrase vs SYSTRAN Translate API",
        "url": "https://www.anchorterminal.com/compare/phrase-vs-systran"
      },
      {
        "json": "https://www.anchorterminal.com/compare/smartcat-vs-translateplus.json",
        "title": "Smartcat vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/smartcat-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/systran-vs-translateplus.json",
        "title": "SYSTRAN Translate API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/systran-vs-translateplus"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 25,
        "edge": "phrase",
        "key": "reliability",
        "name": "Reliability",
        "phrase": 70,
        "translateplus": 45,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 35,
        "edge": "phrase",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "phrase": 87,
        "translateplus": 52,
        "weight": 13
      },
      {
        "by": 9,
        "edge": "phrase",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "phrase": 70,
        "translateplus": 61,
        "weight": 13
      },
      {
        "by": 23,
        "edge": "phrase",
        "key": "security",
        "name": "Security \u0026 auth",
        "phrase": 58,
        "translateplus": 35,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "phrase": 30,
        "translateplus": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 73,
        "edge": "phrase",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "phrase": 83,
        "translateplus": 10,
        "weight": 7
      },
      {
        "by": 22,
        "edge": "phrase",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "phrase": 74,
        "translateplus": 52,
        "weight": 7
      }
    ],
    "summary": "Phrase scores 67.2 (B) on agent readiness against TranslatePlus's 39.7 (E), and leads in 6 of 7 scored categories. Both do translation.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "phrase": "Nine APIs with public OpenAPI specs, Markdown docs and a hosted MCP server that signs in with OAuth and separates view, create and delete consents. Every status incident in the last 90 days touched one component, region or group of users. Capacity top-up prices aren't public, and the terms permit training some models on customer content and prohibit benchmarking.",
      "translateplus": "TranslatePlus has a simple key-in-header REST API with per-request prices from $0.0001, a 5,000-request free plan, batch, HTML, subtitle and i18n endpoints and documented 429 handling. Its changelog and SDKs haven't changed since January 2026 or earlier, the status page is stale, and llms.txt promises an SLA the terms disclaim."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/phrase-vs-translateplus",
    "json": "https://www.anchorterminal.com/compare/phrase-vs-translateplus.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/phrase-vs-translateplus.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/phrase-vs-translateplus.min.md"
  },
  "markdown": "Phrase scores 67.2 (B) on agent readiness against TranslatePlus's 39.7 (E), and leads in 6 of 7 scored categories. Both do translation.\n\n- Phrase: grade B, 67.2/100, rank #337 of 1510. Markdown https://www.anchorterminal.com/tools/phrase.md · JSON https://www.anchorterminal.com/api/v1/tools/phrase.json\n- TranslatePlus: grade E, 39.7/100, rank #1335 of 1510. Markdown https://www.anchorterminal.com/tools/translateplus.md · JSON https://www.anchorterminal.com/api/v1/tools/translateplus.json\n- Best machine translation APIs for AI agents: https://www.anchorterminal.com/best/translation/index.md\n- All 105 translation comparisons: https://www.anchorterminal.com/compare/translation/index.md\n\n## Which one, for what\n\n### Phrase (B)\n\nGood for: Teams that keep translation projects, term bases and translation memories in Phrase and want an agent to run them, or to translate through engines chosen per language pair.\n\nAhead on:\n- Reliability, 70 against 45\n- Schema \u0026 documentation, 87 against 52\n- Agent ergonomics, 70 against 61\n- Security \u0026 auth, 58 against 35\n- Maintenance \u0026 community, 83 against 10\n- Transparency \u0026 trust, 74 against 52\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Free to start without a card\n- No incidents deducted, where TranslatePlus loses 3 points for them\n\nWatch for: status.phrase.com lists nine incidents between 4 August and 2 November 2026, each confined to one component, one region or some users\n\n### TranslatePlus (E)\n\nGood for: Low-cost per-request translation of short strings, HTML, emails, subtitles and i18n files for small projects.\n\nWatch for: llms.txt claims a 99.9% uptime SLA and SOC 2 Type II, while the terms disclaim any uptime guarantee and no audit is named\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Phrase +73\n\n- Phrase (83): The changelog's latest entry is 22 October 2026, CLI 2.71.0 is of 23 October and `phrase-js` 3.31.0 was tagged on 28 October (30). 39 dated changelog entries since 4 August 2026, and CLI and `phrase-js` releases in October (20). A public changelog, a help centre and written support around the clock on paid plans. We didn't read the GitHub issues (11 of 15). The hosted MCP server is in the official MCP registry as `io.github.phrase/mcp`, and `phrase-js` 3.31.0 is current (15). The CLI has release and vulnerability workflows. The local MCP server was deprecated on 7 August 2026, under six months after its first tag (7 of 10). Total 83.\n- TranslatePlus (10): The newest dated change found is translateplus-python 2.0.7 and translateplus-js 2.0.1 on 11 January 2026, about ten months before this check, and the API changelog stops at 9 December 2024 (0). No release or dated change in the last 90 days (0). Support by email and a support portal; the status page hasn't updated since January (3). SDKs exist for four languages but haven't changed since January (5). Weekly downloads of 4 (PyPI) and 6 (npm) (2). 0+0+3+5+2 = 10.\n\n### Schema \u0026 documentation: Phrase +35\n\n- Phrase (87): OpenAPI 3 specs for all nine APIs at developers.phrase.com/openapi, among them Strings with 301 operations and TMS with 547 (25). llms.txt and a Markdown copy of every docs page (10). Every Strings and Language AI operation has a description, 390 of 547 TMS operations do, and a page titled Choose the right API says which API fits which job. Few operations say when not to use them (14 of 20). Language AI inputs carry length limits, item counts and enums. The Strings spec has 49 enums across 301 operations (11 of 15). Strings documents 400, 401, 403, 404 and 429 on nearly every operation with 896 examples, while the Language AI error responses have no body schema (12 of 15). Versioned paths, four TMS versions to pin, and a dated changelog (15).\n- TranslatePlus (52): No OpenAPI or other machine-readable contract found in the docs or either llms.txt (0). llms.txt on the site and on docs.translateplus.io (10). Endpoint pages say what each call does, with little on when to choose HTML, email or i18n jobs over plain text (10). Required fields and per-plan character limits per request are documented, without enums for language codes beyond a supported-languages call (10). Code examples in several languages and an error-handling guide with status codes (12). Versioned /v1 and /v2 paths and a changelog, whose newest entry is 2.0.0 on 9 December 2024 (10). 0+10+10+10+12+10 = 52.\n\n### Reliability: Phrase +25\n\n- Phrase (70): Hosted reading, for the public APIs and the hosted MCP server. status.phrase.com on Statuspage, with components for Strings, TMS and the Language AI API in the EU and the US (20). Its history feed, re-read on 2 November 2026, lists nine incidents between 4 August and 2 November, besides scheduled maintenance. Each touched one component, one region or some users, such as TMS project management in the EU and the US for about three and a half hours on 31 August, Strings branching in the EU for about 19 hours on 6 and 7 August, TMS access for some users on 23 September and TMS in the EU for 11 minutes on 15 October. Read as partial, whatever the label, so minor incidents only (20 of 30). Strings publishes 1,000 requests in 5 minutes and, since 22 October, 8 concurrent, TMS 6,000 a minute and 100 concurrent, and the Language AI API says only that per-account limits apply (12 of 15). 429 responses carry `X-Rate-Limit-Reset` and `X-Rate-Limit-Reason` on Strings and `Ratelimit-Remaining` on TMS. No `Retry-After`, backoff guidance or idempotency keys were found in the reviewed documentation (8 of 15). No SLA in the public terms, which disclaim uninterrupted availability (0). The APIs and the MCP server are generally available (10). Total 70.\n- TranslatePlus (45): Hosted lines. status.translateplus.io is the vendor's own page; on 6 November 2026 it showed 'All systems unknown' and a last update of 22 January 2026, with data loading by script (5). No incident history to read (5). The rate-limits guide gives 100,000 requests a minute and 100,000,000 an hour per key, while llms.txt gives 50 requests a second on the Free plan, so limits are published but inconsistent (10). 429 returns a JSON detail message, responses carry X-RateLimit-Limit, -Remaining and -Reset, and the guide shows waiting for the reset with capped retries (15). No SLA. The terms say TranslatePlus strives for 99.9% uptime 'but do not guarantee uninterrupted service' (0). API v2 is the current, non-beta version (10). 5+5+10+15+0+10 = 45.\n\n### Security \u0026 auth: Phrase +23\n\n- Phrase (58): The hosted MCP server uses OAuth with PKCE, dynamic client registration and three scopes. Service accounts use the client credentials grant limited by product and scope, and platform tokens are exchanged for JWTs that last about four hours (30). Less 10 because the Strings docs give an `access_token` query parameter as an option, and still document Basic authentication with email and password (20 of 30). View, create and delete consents on MCP, revocable under the Consents tab, with role permissions still applied. No confirmation step for destructive calls was found (15 of 20). Tools return customer strings, comments and translations, and no prompt-injection guidance was found (3 of 15). Each user sees their login history, while audit logs are held by Phrase engineers and supplied on request (6 of 15). ISO 27001 certificate, SOC 2 Type I with Type II expected in 2026, annual third-party penetration tests and a disclosure address at security@phrase.com. No security.txt and no bug bounty found (14 of 20).\n- TranslatePlus (35): One API key per account in the X-API-KEY header, which the docs say 'carries full access to your account's resources', and can be revoked in the dashboard (15). No scopes or read-only keys (5). Translations return the caller's own text, so little untrusted content (10). llms.txt claims request logging and an analytics dashboard, which we couldn't see without an account (5). translateplus.io/.well-known/security.txt returns 404 and no disclosure policy was found; llms.txt says 'SOC 2 compliant' and 'SOC 2 Type II certified infrastructure' with no report or auditor named (0). 15+5+10+5+0 = 35.\n\n### Transparency \u0026 trust: Phrase +22\n\n- Phrase (74): Closed service with published terms, and the CLI, clients and local MCP server under MIT (15). The privacy notice of 6 October 2026, the Data Processing Addendum and the AI statement agree on processor status, a 60-day deletion period and which products train on customer content. The terms still permit training non-text models, and any model for internal research, on customer content without approval (22 of 30). Deprecations are announced in the changelog with dates, such as the Quality Evaluator v1 and v2 endpoints on 2 July 2026, but without removal dates, and no written notice period was found (10 of 20). A sub-processor list with locations and transfer mechanisms, a choice of EU or US data centre, and hosting on AWS and Google Cloud disclosed (18 of 20).\n- TranslatePlus (52): Editorial half only. Closed service under terms last updated 18 December 2024 that name PetaBytes, Inc. as a US corporation but give no address, governing law or courts (10). The terms say translation requests aren't permanently stored 'unless required by law', the privacy policy says 'unless required for caching or service improvement purposes', and the terms allow using anonymised usage data to improve the service (8). API v1 is kept as legacy, with no dated deprecation notice (5). No subprocessor list or data location found (0). 10+8+5+0 = 23.\n\n### Agent ergonomics: Phrase +9\n\n- Phrase (70): API reading of the checklist, with the hosted MCP server noted where its behaviour is documented. Strings lists return 25 items by default with `per_page` up to 100, and locale downloads support ETag. The hosted MCP server's tool list isn't published, and the deprecated local server listed 145 tools (17 of 25). `page` and `per_page` with `Link` headers, and filters on list endpoints (18 of 20). Strings returns a message on 400 and field-level errors on 422, and names the limit hit on 429. Language AI error bodies are undocumented (14 of 20). No idempotency keys. Conditional GETs are safe to repeat, and the MCP consent separates view, create, and modify and delete (8 of 20). Language AI needs three fields, six official Strings clients and a CLI exist, but a missing `User-Agent` header earns a 400 and the clients cover Strings alone (13 of 15).\n- TranslatePlus (61): API reading. Batch translation of up to 100 texts a call and separate HTML, email, subtitle and i18n job endpoints (16). Few output controls or filters (10). Errors are a `detail` string with HTTP status codes (12). No idempotency key for i18n jobs, though text translation is stateless (8). Official SDKs listed for Python, JavaScript and TypeScript, Java and PHP, with few required fields (15). 16+10+12+8+15 = 61.\n\n## Score by category\n\n| Category | Weight | Phrase | TranslatePlus | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 70 | 45 | Phrase +25 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 87 | 52 | Phrase +35 |\n| Agent ergonomics | 13% (16.2 this run) | 70 | 61 | Phrase +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 58 | 35 | Phrase +23 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 30 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 10 | Phrase +73 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 74 | 52 | Phrase +22 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **67.2 · B** | **39.7 · E** | |\n\n## Facts side by side\n\n| Fact | Phrase | TranslatePlus |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Phrase a.s. | PetaBytes, Inc. |\n| Hosted endpoint | `https://mcp.eu.phrase.com` | no (local only) |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under the Phrase Terms of Service. The CLI, the Strings API clients and the deprecated local MCP server on GitHub are MIT | none |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.phrase/mcp` | not listed |\n| Last release | 2026-10-28 | 2026-01-11 |\n| Terms last updated | no date given | 2024-12-18 |\n| Privacy policy last updated | 2026-10-06 | no date given |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 49 stars, 40k npm/wk, 14k PyPI/wk | 6 npm/wk, 4 PyPI/wk |\n| Agent reviews | 3/5 (4) | none |\n\n## How the scores have moved\n\n### Phrase\n\n- +3.0 on 2 November 2026: correction\n\n### TranslatePlus\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Phrase.** Nine APIs with public OpenAPI specs, Markdown docs and a hosted MCP server that signs in with OAuth and separates view, create and delete consents. Every status incident in the last 90 days touched one component, region or group of users. Capacity top-up prices aren't public, and the terms permit training some models on customer content and prohibit benchmarking.\n\n**TranslatePlus.** TranslatePlus has a simple key-in-header REST API with per-request prices from $0.0001, a 5,000-request free plan, batch, HTML, subtitle and i18n endpoints and documented 429 handling. Its changelog and SDKs haven't changed since January 2026 or earlier, the status page is stale, and llms.txt promises an SLA the terms disclaim.\n\n## Before you call either\n\n### Phrase\n\n1. Exchange a Phrase Platform API token at `https://eu.phrase.com/idm/oauth/token` (or `us.phrase.com`) for a Bearer JWT, which lasts about four hours, and refresh it before it expires\n2. Send a `User-Agent` header naming your application on every Strings and TMS call. The Strings API answers 400 without one\n3. Keep Strings calls under 1,000 in five minutes and eight in parallel, and read `X-Rate-Limit-Reset` and `X-Rate-Limit-Reason` on a 429\n4. Send at most six texts of 2,000 characters to `/v2/textTranslations`, with `consumerId` and `targetLang`. Term bases and translation memories work only with an AI translation agent profile\n5. Use the MCP URL for the account's region, `https://mcp.eu.phrase.com` or `https://mcp.us.phrase.com`, and ask the user for the view consent alone unless the task writes\n\n### TranslatePlus\n\n1. Send the key as X-API-KEY; there is no read-only or scoped key\n2. Use /v2/translate/batch for up to 100 texts instead of looping single calls\n3. Keep each text under the plan's per-request character limit (500 on Free, up to 2,000 on Mega)\n4. On 429 wait until X-RateLimit-Reset, then retry a few times at most\n5. Don't rely on an SLA; the terms don't guarantee uptime\n\n## Questions\n\n### Which is better for AI agents, Phrase or TranslatePlus?\n\nPhrase scores 67.2 (B) on agent readiness against TranslatePlus's 39.7 (E), and leads in 6 of 7 scored categories.\n\n### Do Phrase and TranslatePlus need an API key?\n\nPhrase takes an API key or an OAuth sign-in. TranslatePlus needs an API key.\n\n### Can an agent call Phrase and TranslatePlus without installing anything?\n\nPhrase has a hosted endpoint at https://mcp.eu.phrase.com. No hosted endpoint is listed for TranslatePlus.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/phrase-vs-translateplus.json, and with the fewest tokens: https://www.anchorterminal.com/compare/phrase-vs-translateplus.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"phrase\", \"b\": \"translateplus\"}`. From a terminal: `anchor compare phrase translateplus`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/phrase.json and https://www.anchorterminal.com/api/v1/tools/translateplus.json\n\n## Other comparisons with Phrase or TranslatePlus\n\n- [Amazon Translate vs Phrase](https://www.anchorterminal.com/compare/amazon-translate-vs-phrase.md)\n- [Amazon Translate vs TranslatePlus](https://www.anchorterminal.com/compare/amazon-translate-vs-translateplus.md)\n- [Azure Translator vs Phrase](https://www.anchorterminal.com/compare/azure-translator-vs-phrase.md)\n- [Azure Translator vs TranslatePlus](https://www.anchorterminal.com/compare/azure-translator-vs-translateplus.md)\n- [Crowdin vs Phrase](https://www.anchorterminal.com/compare/crowdin-vs-phrase.md)\n- [Crowdin vs TranslatePlus](https://www.anchorterminal.com/compare/crowdin-vs-translateplus.md)\n- [DeepL API vs Phrase](https://www.anchorterminal.com/compare/deepl-api-vs-phrase.md)\n- [DeepL API vs TranslatePlus](https://www.anchorterminal.com/compare/deepl-api-vs-translateplus.md)\n- [Google Cloud Translation vs Phrase](https://www.anchorterminal.com/compare/google-cloud-translation-vs-phrase.md)\n- [Google Cloud Translation vs TranslatePlus](https://www.anchorterminal.com/compare/google-cloud-translation-vs-translateplus.md)\n- [Lara Translate API vs Phrase](https://www.anchorterminal.com/compare/lara-translate-vs-phrase.md)\n- [Lara Translate API vs TranslatePlus](https://www.anchorterminal.com/compare/lara-translate-vs-translateplus.md)\n- [LibreTranslate vs Phrase](https://www.anchorterminal.com/compare/libretranslate-vs-phrase.md)\n- [LibreTranslate vs TranslatePlus](https://www.anchorterminal.com/compare/libretranslate-vs-translateplus.md)\n- [Lingo.dev vs Phrase](https://www.anchorterminal.com/compare/lingo-dev-vs-phrase.md)\n- [Lingo.dev vs TranslatePlus](https://www.anchorterminal.com/compare/lingo-dev-vs-translateplus.md)\n- [Lingvanex Translation API vs Phrase](https://www.anchorterminal.com/compare/lingvanex-vs-phrase.md)\n- [Lingvanex Translation API vs TranslatePlus](https://www.anchorterminal.com/compare/lingvanex-vs-translateplus.md)\n- [Localazy vs Phrase](https://www.anchorterminal.com/compare/localazy-vs-phrase.md)\n- [Localazy vs TranslatePlus](https://www.anchorterminal.com/compare/localazy-vs-translateplus.md)\n- [Lokalise vs Phrase](https://www.anchorterminal.com/compare/lokalise-vs-phrase.md)\n- [Lokalise vs TranslatePlus](https://www.anchorterminal.com/compare/lokalise-vs-translateplus.md)\n- [Phrase vs Smartcat](https://www.anchorterminal.com/compare/phrase-vs-smartcat.md)\n- [Phrase vs SYSTRAN Translate API](https://www.anchorterminal.com/compare/phrase-vs-systran.md)\n- [Smartcat vs TranslatePlus](https://www.anchorterminal.com/compare/smartcat-vs-translateplus.md)\n- [SYSTRAN Translate API vs TranslatePlus](https://www.anchorterminal.com/compare/systran-vs-translateplus.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Phrase vs TranslatePlus",
        "url": ""
      }
    ],
    "description": "Phrase scores 67.2 (B) to TranslatePlus's 39.7 (E) for translation. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Phrase B 67.2",
      "TranslatePlus E 39.7",
      "scores"
    ],
    "h1": "Phrase vs TranslatePlus",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/phrase-vs-translateplus",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Phrase vs TranslatePlus for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/phrase-vs-translateplus"
  },
  "tokens": {
    "markdown": 4900,
    "slim": 2980
  },
  "version": 1
}
