{
  "data": {
    "a": {
      "slug": "crowdin",
      "name": "Crowdin",
      "vendor": "Crowdin OÜ",
      "vendorUrl": "https://crowdin.com",
      "kind": "http-api",
      "category": "translation",
      "summary": "Crowdin is a hosted localisation platform that stores source files and strings, translation memories and glossaries, and runs machine and AI translation over them. Agents reach it through a REST API, a CLI and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/crowdin",
      "markdownUrl": "https://www.anchorterminal.com/tools/crowdin.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/crowdin.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/crowdin.json",
      "repo": "https://github.com/crowdin/crowdin-cli",
      "license": "Proprietary service under Crowdin's terms. The CLI and the official API clients are MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.crowdin.com/api/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "@crowdin/crowdin-api-client"
        },
        {
          "registry": "npm",
          "name": "@crowdin/cli"
        },
        {
          "registry": "pypi",
          "name": "crowdin-api-client"
        }
      ],
      "auth": "mixed",
      "authNotes": "A person signs up in a browser, then creates a personal access token in Account Settings or registers an OAuth app. No review or sales approval is described. Every call sends `Authorization: Bearer \u003ctoken\u003e`. Tokens take an expiry date (the default is never), scopes with read-only or read-and-write access, and a granular option that limits them to chosen projects. OAuth is the authorisation code grant at accounts.crowdin.com, with a client secret or PKCE, and access tokens last 7,200 seconds with a refresh token. The MCP server accepts the same tokens, or an OAuth sign-in where the client registers itself at `https://mcp.crowdin.com/register`.",
      "pricing": "freemium",
      "pricingNotes": "A Free plan at $0 and a 14-day trial of the Team plan let an agent's owner start without a contract. Paid plans in the pricing page's structured data are Pro $50, Team $150 and Team+ $450 a month, with annual billing giving two months free. Plans are sized by hosted words (source words multiplied by target languages). Machine translation, AI and professional translation are paid from prepaid Crowdin Credits, or run on the customer's own engine keys. Plan limits, the comparison table and the CDN add-on's unit prices are drawn by script and were not read. Whether the Free plan needs a card is not stated on the page (https://crowdin.com/pricing, checked 2026-10-08).",
      "priceSummary": "$50 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer documentation, the OpenAPI document or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 320,
        "npmWeekly": 264028,
        "pypiWeekly": 13847,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://support.crowdin.com/developer/api/",
      "llmsTxt": "https://support.crowdin.com/llms.txt",
      "openapi": "https://support.crowdin.com/src/assets/api/crowdin/file-based.yml",
      "capabilities": [
        "translate.text",
        "translate.documents",
        "translate.glossary",
        "translate.detect"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "cli",
        "typescript",
        "python",
        "eu",
        "status-page",
        "closed-source",
        "localisation"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.6,
        "grade": "B",
        "agentReady": false,
        "rank": 153,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 82,
          "payments": 30,
          "reliability": 78,
          "schema": 80,
          "security": 68,
          "transparency": 79
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The REST API has a public OpenAPI document with 374 operations, and tokens can be limited by scope, access level and project. Translation runs inside Crowdin projects and connected engines, so it is not a stateless per-character translation API. No Retry-After guidance, idempotency keys or SLA were found in the reviewed documentation.",
        "bestFor": "Teams that keep product strings and files in Crowdin and want an agent to upload sources, check progress, apply pre-translation, manage glossaries and pull builds.",
        "strengths": [
          "Public OpenAPI 3.0 document with 374 operations on 218 paths, plus `llms.txt` with one text file per route",
          "Personal access tokens take an expiry date, per-scope read-only or read-and-write access, and a granular option limiting them to chosen projects",
          "The MCP V2 endpoint filters tools by header, with `crowdin-read-only`, `crowdin-tool-sets`, `crowdin-project-type` and `crowdin-tool-filter`",
          "status.crowdin.com lists no incident between 10 July and 8 October 2026, with separate components for the API and the EU data centre",
          "Seven official API clients under MIT, with `@crowdin/crowdin-api-client` 1.59.0 on 29 September and `@crowdin/cli` 5.3.0 on 24 September 2026"
        ],
        "weaknesses": [
          "The terms forbid accessing the service to monitor availability, performance or functionality, or for benchmarking, without Crowdin's prior written consent",
          "A 429 is returned above 20 simultaneous requests an account, with no Retry-After header or backoff guidance in the reference",
          "No idempotency keys in the OpenAPI document, and no SLA found in the terms or the help centre",
          "Plan limits and add-on unit prices on the pricing page are drawn by script. Only four plan prices were readable, from the page's structured data",
          "MCP V1 and 12 API operations are marked deprecated with no removal date, and no deprecation policy was found"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer \u003ctoken\u003e` to `https://api.crowdin.com/api/v2`. Crowdin Enterprise uses `https://\u003corganization_domain\u003e.api.crowdin.com/api/v2`",
          "Use the MCP V2 endpoint `https://mcp.crowdin.com/v2/mcp` and set `crowdin-tool-sets`, because the server loads all 33 tool sets by default",
          "Set `crowdin-read-only: true` on the MCP connection for exploration. It exposes only list and get tools",
          "Keep to 20 concurrent requests an account across all tokens, and add your own backoff on 429",
          "Upload a file to `/storages` first, then pass the `storageId` to the add-file call. Builds, exports and reports are asynchronous and need a status poll",
          "`/mts/{mtId}/translations` takes at most 100 strings a call and needs the `mt` scope and a configured engine"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.6
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 82,
          "payments": 30,
          "reliability": 78,
          "schema": 80,
          "security": 68,
          "transparency": 65
        },
        "provenanceScore": 93
      },
      "connect": {
        "install": "npm i @crowdin/crowdin-api-client   # or: pip install crowdin-api-client",
        "http": "curl -H \"Authorization: Bearer ACCESS_TOKEN\" https://api.crowdin.com/api/v2/projects",
        "claudeCode": "claude mcp add --transport http --header \"Authorization: Bearer {YOUR_CROWDIN_TOKEN}\" crowdin https://mcp.crowdin.com/v2/mcp",
        "config": {
          "mcpServers": {
            "crowdin": {
              "headers": {
                "Authorization": "Bearer {YOUR_CROWDIN_TOKEN}"
              },
              "url": "https://mcp.crowdin.com/v2/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/translate.text",
        "tool": "https://letme.dev/crowdin"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 50,
          "note": "from the pricing page's structured data, plan limits not read"
        },
        {
          "item": "Team plan",
          "unit": "month",
          "usd": 150,
          "note": "from the pricing page's structured data, plan limits not read"
        },
        {
          "item": "Team+ plan",
          "unit": "month",
          "usd": 450,
          "note": "from the pricing page's structured data, plan limits not read"
        }
      ],
      "provenance": {
        "legalEntity": "Crowdin OÜ",
        "domain": "crowdin.com",
        "domainRegistered": "2009-02-07",
        "endpointOnVendorDomain": true,
        "terms": "https://support.crowdin.com/terms/",
        "privacy": "https://support.crowdin.com/privacy-policy/",
        "statusPage": "https://status.crowdin.com",
        "changelog": "https://crowdin.com/blog/whats-new-at-crowdin-september-2026",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms (last revised 24 September 2026) name Crowdin OÜ, Liivalaia 36, Tallinn, Estonia, register code 14479905, as the contracting party, under Estonian law.",
          "The terms govern the platform and its APIs (the definition of Software Services includes APIs) and carry the data processing contract in section 9.",
          "The privacy policy (last revised 24 September 2026) covers the site and the service. crowdin.com/privacy redirects to it.",
          "crowdin.com/.well-known/security.txt gives a contact page, a policy link and an expiry of 31 January 2030.",
          "No dated API changelog was found. The changelog link is the latest monthly product update on the blog, published 1 October 2026.",
          "RDAP for crowdin.com gives a registration date of 2009-02-07.",
          "The API answers at api.crowdin.com and the MCP server at mcp.crowdin.com."
        ],
        "score": 93
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/crowdin.json",
      "live": {
        "slug": "crowdin",
        "probe": {
          "target": "https://api.crowdin.com/api/v2",
          "method": "get",
          "lastAt": "2026-10-08T21:12:08.255292657Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 271,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 280,
          "p95ms24h": 301,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.crowdin.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:05:58.709720971Z"
        },
        "updatedAt": "2026-10-08T21:12:08.255292657Z"
      }
    },
    "answer": "Crowdin scores 69.6 (B) on agent readiness against Phrase's 64.2 (B), and leads in 3 of 7 scored categories. Phrase leads on schema \u0026 documentation.",
    "b": {
      "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",
      "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-10-08).",
      "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-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.2,
        "grade": "B",
        "agentReady": false,
        "rank": 285,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 30,
          "reliability": 55,
          "schema": 87,
          "security": 58,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "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. The status page lists 14 incidents in 90 days, 12 marked major or critical. 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 51 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 14 incidents between 10 July and 8 October 2026, two marked critical and ten major, most confined to one component",
          "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 four 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": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.2
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 30,
          "reliability": 55,
          "schema": 87,
          "security": 58,
          "transparency": 65
        },
        "provenanceScore": 82
      },
      "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": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/phrase.json",
      "live": {
        "slug": "phrase",
        "probe": {
          "target": "https://mcp.eu.phrase.com",
          "method": "get",
          "lastAt": "2026-10-08T21:12:18.37223698Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 71,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 63,
          "p95ms24h": 134,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.phrase.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:21.711443908Z"
        },
        "updatedAt": "2026-10-08T21:12:18.37223698Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Crowdin OÜ",
        "b": "Phrase a.s.",
        "name": "Vendor"
      },
      {
        "a": "https://api.crowdin.com/api/v2",
        "b": "https://mcp.eu.phrase.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Crowdin's terms. The CLI and the official API clients are MIT",
        "b": "Proprietary service under the Phrase Terms of Service. The CLI, the Strings API clients and the deprecated local MCP server on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.github.phrase/mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-30",
        "b": "2026-10-06",
        "name": "Last release"
      },
      {
        "a": "2026-09-24",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-24",
        "b": "2026-10-06",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "320 stars, 264k npm/wk, 14k PyPI/wk",
        "b": "49 stars, 40k npm/wk, 14k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Crowdin scores 69.6 (B) on agent readiness against Phrase's 64.2 (B), and leads in 3 of 7 scored categories. Phrase leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, Crowdin or Phrase?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Crowdin and Phrase need an API key?"
      },
      {
        "answer": "Yes. Crowdin has a hosted endpoint at https://api.crowdin.com/api/v2 and Phrase at https://mcp.eu.phrase.com.",
        "question": "Can an agent call Crowdin and Phrase without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 78 against 55",
          "Security \u0026 auth, 68 against 58",
          "Transparency \u0026 trust, 79 against 74"
        ],
        "also": null,
        "goodFor": "Teams that keep product strings and files in Crowdin and want an agent to upload sources, check progress, apply pre-translation, manage glossaries and pull builds.",
        "slug": "crowdin",
        "watchFor": "The terms forbid accessing the service to monitor availability, performance or functionality, or for benchmarking, without Crowdin's prior written consent"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 87 against 80"
        ],
        "also": [
          "Free to start without a card"
        ],
        "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 14 incidents between 10 July and 8 October 2026, two marked critical and ten major, most confined to one component"
      }
    ],
    "job": {
      "capability": "translate.text",
      "name": "Translate text"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-translate-vs-crowdin.json",
        "title": "Amazon Translate vs Crowdin",
        "url": "https://www.anchorterminal.com/compare/amazon-translate-vs-crowdin"
      },
      {
        "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/azure-translator-vs-crowdin.json",
        "title": "Azure Translator vs Crowdin",
        "url": "https://www.anchorterminal.com/compare/azure-translator-vs-crowdin"
      },
      {
        "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/crowdin-vs-deepl-api.json",
        "title": "Crowdin vs DeepL API",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-deepl-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-google-cloud-translation.json",
        "title": "Crowdin vs Google Cloud Translation",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-google-cloud-translation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-lara-translate.json",
        "title": "Crowdin vs Lara Translate API",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-lara-translate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-libretranslate.json",
        "title": "Crowdin vs LibreTranslate",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-libretranslate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-lingo-dev.json",
        "title": "Crowdin vs Lingo.dev",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-lingo-dev"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-lingvanex.json",
        "title": "Crowdin vs Lingvanex Translation API",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-lingvanex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-lokalise.json",
        "title": "Crowdin vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-lokalise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-systran.json",
        "title": "Crowdin vs SYSTRAN Translate API",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-systran"
      },
      {
        "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/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/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/libretranslate-vs-phrase.json",
        "title": "LibreTranslate vs Phrase",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-phrase"
      },
      {
        "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/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/lokalise-vs-phrase.json",
        "title": "Lokalise vs Phrase",
        "url": "https://www.anchorterminal.com/compare/lokalise-vs-phrase"
      },
      {
        "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"
      }
    ],
    "scores": [
      {
        "by": 23,
        "crowdin": 78,
        "edge": "crowdin",
        "key": "reliability",
        "name": "Reliability",
        "phrase": 55,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 7,
        "crowdin": 80,
        "edge": "phrase",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "phrase": 87,
        "weight": 13
      },
      {
        "by": 1,
        "crowdin": 69,
        "edge": "phrase",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "phrase": 70,
        "weight": 13
      },
      {
        "by": 10,
        "crowdin": 68,
        "edge": "crowdin",
        "key": "security",
        "name": "Security \u0026 auth",
        "phrase": 58,
        "weight": 14
      },
      {
        "by": 0,
        "crowdin": 30,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "phrase": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "crowdin": 82,
        "edge": "phrase",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "phrase": 83,
        "weight": 7
      },
      {
        "by": 5,
        "crowdin": 79,
        "edge": "crowdin",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "phrase": 74,
        "weight": 7
      }
    ],
    "summary": "Crowdin scores 69.6 (B) on agent readiness against Phrase's 64.2 (B), and leads in 3 of 7 scored categories. Phrase leads on schema \u0026 documentation. Both do translate text.",
    "verdicts": {
      "crowdin": "The REST API has a public OpenAPI document with 374 operations, and tokens can be limited by scope, access level and project. Translation runs inside Crowdin projects and connected engines, so it is not a stateless per-character translation API. No Retry-After guidance, idempotency keys or SLA were found in the reviewed documentation.",
      "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. The status page lists 14 incidents in 90 days, 12 marked major or critical. Capacity top-up prices aren't public, and the terms permit training some models on customer content and prohibit benchmarking."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/crowdin-vs-phrase",
    "json": "https://www.anchorterminal.com/compare/crowdin-vs-phrase.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/crowdin-vs-phrase.md",
    "slim": "https://www.anchorterminal.com/compare/crowdin-vs-phrase.min.md"
  },
  "markdown": "Crowdin scores 69.6 (B) on agent readiness against Phrase's 64.2 (B), and leads in 3 of 7 scored categories. Phrase leads on schema \u0026 documentation. Both do translate text.\n\n- Crowdin: grade B, 69.6/100, rank #153 of 722. Markdown https://www.anchorterminal.com/tools/crowdin.md · JSON https://www.anchorterminal.com/api/v1/tools/crowdin.json\n- Phrase: grade B, 64.2/100, rank #285 of 722. Markdown https://www.anchorterminal.com/tools/phrase.md · JSON https://www.anchorterminal.com/api/v1/tools/phrase.json\n\n## Which one, for what\n\n### Crowdin (B)\n\nGood for: Teams that keep product strings and files in Crowdin and want an agent to upload sources, check progress, apply pre-translation, manage glossaries and pull builds.\n\nAhead on:\n- Reliability, 78 against 55\n- Security \u0026 auth, 68 against 58\n- Transparency \u0026 trust, 79 against 74\n\nWatch for: The terms forbid accessing the service to monitor availability, performance or functionality, or for benchmarking, without Crowdin's prior written consent\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- Schema \u0026 documentation, 87 against 80\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: status.phrase.com lists 14 incidents between 10 July and 8 October 2026, two marked critical and ten major, most confined to one component\n\n\n## Score by category\n\n| Category | Weight | Crowdin | Phrase | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 78 | 55 | Crowdin +23 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 80 | 87 | Phrase +7 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 70 | Phrase +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 58 | Crowdin +10 |\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) | 82 | 83 | Phrase +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 79 | 74 | Crowdin +5 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **69.6 · B** | **64.2 · B** | |\n\n## Facts side by side\n\n| Fact | Crowdin | Phrase |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Crowdin OÜ | Phrase a.s. |\n| Hosted endpoint | `https://api.crowdin.com/api/v2` | `https://mcp.eu.phrase.com` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Crowdin's terms. The CLI and the official API clients are MIT | Proprietary service under the Phrase Terms of Service. The CLI, the Strings API clients and the deprecated local MCP server on GitHub are MIT |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.github.phrase/mcp` |\n| Last release | 2026-09-30 | 2026-10-06 |\n| Terms last updated | 2026-09-24 | no date given |\n| Privacy policy last updated | 2026-09-24 | 2026-10-06 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 320 stars, 264k npm/wk, 14k PyPI/wk | 49 stars, 40k npm/wk, 14k PyPI/wk |\n\n## Verdicts\n\n**Crowdin.** The REST API has a public OpenAPI document with 374 operations, and tokens can be limited by scope, access level and project. Translation runs inside Crowdin projects and connected engines, so it is not a stateless per-character translation API. No Retry-After guidance, idempotency keys or SLA were found in the reviewed documentation.\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. The status page lists 14 incidents in 90 days, 12 marked major or critical. Capacity top-up prices aren't public, and the terms permit training some models on customer content and prohibit benchmarking.\n\n## Before you call either\n\n### Crowdin\n\n1. Send `Authorization: Bearer \u003ctoken\u003e` to `https://api.crowdin.com/api/v2`. Crowdin Enterprise uses `https://\u003corganization_domain\u003e.api.crowdin.com/api/v2`\n2. Use the MCP V2 endpoint `https://mcp.crowdin.com/v2/mcp` and set `crowdin-tool-sets`, because the server loads all 33 tool sets by default\n3. Set `crowdin-read-only: true` on the MCP connection for exploration. It exposes only list and get tools\n4. Keep to 20 concurrent requests an account across all tokens, and add your own backoff on 429\n5. Upload a file to `/storages` first, then pass the `storageId` to the add-file call. Builds, exports and reports are asynchronous and need a status poll\n6. `/mts/{mtId}/translations` takes at most 100 strings a call and needs the `mt` scope and a configured engine\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 four 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## Questions\n\n### Which is better for AI agents, Crowdin or Phrase?\n\nCrowdin scores 69.6 (B) on agent readiness against Phrase's 64.2 (B), and leads in 3 of 7 scored categories. Phrase leads on schema \u0026 documentation.\n\n### Do Crowdin and Phrase need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Crowdin and Phrase without installing anything?\n\nYes. Crowdin has a hosted endpoint at https://api.crowdin.com/api/v2 and Phrase at https://mcp.eu.phrase.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/crowdin-vs-phrase.json, and with the fewest tokens: https://www.anchorterminal.com/compare/crowdin-vs-phrase.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"crowdin\", \"b\": \"phrase\"}`. From a terminal: `anchor compare crowdin phrase`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/crowdin.json and https://www.anchorterminal.com/api/v1/tools/phrase.json\n\n## Other comparisons with Crowdin or Phrase\n\n- [Amazon Translate vs Crowdin](https://www.anchorterminal.com/compare/amazon-translate-vs-crowdin.md)\n- [Amazon Translate vs Phrase](https://www.anchorterminal.com/compare/amazon-translate-vs-phrase.md)\n- [Azure Translator vs Crowdin](https://www.anchorterminal.com/compare/azure-translator-vs-crowdin.md)\n- [Azure Translator vs Phrase](https://www.anchorterminal.com/compare/azure-translator-vs-phrase.md)\n- [Crowdin vs DeepL API](https://www.anchorterminal.com/compare/crowdin-vs-deepl-api.md)\n- [Crowdin vs Google Cloud Translation](https://www.anchorterminal.com/compare/crowdin-vs-google-cloud-translation.md)\n- [Crowdin vs Lara Translate API](https://www.anchorterminal.com/compare/crowdin-vs-lara-translate.md)\n- [Crowdin vs LibreTranslate](https://www.anchorterminal.com/compare/crowdin-vs-libretranslate.md)\n- [Crowdin vs Lingo.dev](https://www.anchorterminal.com/compare/crowdin-vs-lingo-dev.md)\n- [Crowdin vs Lingvanex Translation API](https://www.anchorterminal.com/compare/crowdin-vs-lingvanex.md)\n- [Crowdin vs Lokalise](https://www.anchorterminal.com/compare/crowdin-vs-lokalise.md)\n- [Crowdin vs SYSTRAN Translate API](https://www.anchorterminal.com/compare/crowdin-vs-systran.md)\n- [DeepL API vs Phrase](https://www.anchorterminal.com/compare/deepl-api-vs-phrase.md)\n- [Google Cloud Translation vs Phrase](https://www.anchorterminal.com/compare/google-cloud-translation-vs-phrase.md)\n- [Lara Translate API vs Phrase](https://www.anchorterminal.com/compare/lara-translate-vs-phrase.md)\n- [LibreTranslate vs Phrase](https://www.anchorterminal.com/compare/libretranslate-vs-phrase.md)\n- [Lingo.dev vs Phrase](https://www.anchorterminal.com/compare/lingo-dev-vs-phrase.md)\n- [Lingvanex Translation API vs Phrase](https://www.anchorterminal.com/compare/lingvanex-vs-phrase.md)\n- [Lokalise vs Phrase](https://www.anchorterminal.com/compare/lokalise-vs-phrase.md)\n- [Phrase vs SYSTRAN Translate API](https://www.anchorterminal.com/compare/phrase-vs-systran.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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": "Crowdin vs Phrase",
        "url": ""
      }
    ],
    "description": "Crowdin scores 69.6 (B) on agent readiness against Phrase's 64.2 (B), and leads in 3 of 7 scored categories. Phrase leads on schema \u0026 documentation. Both do translate text. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Crowdin B 69.6",
      "Phrase B 64.2",
      "scores"
    ],
    "h1": "Crowdin vs Phrase",
    "image": "https://www.anchorterminal.com/assets/og/compare-crowdin-vs-phrase.png",
    "path": "/compare/crowdin-vs-phrase",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Crowdin vs Phrase for AI agents, B 69.6 vs B 64.2 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/crowdin-vs-phrase"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 730
  },
  "version": 1
}
