{
  "data": {
    "a": {
      "slug": "localazy",
      "name": "Localazy",
      "vendor": "Localazy s.r.o.",
      "vendorUrl": "https://localazy.com",
      "kind": "http-api",
      "category": "translation",
      "summary": "Localazy is a Czech localisation platform for software teams, with a translation management system, AI and human translation, a CLI, a REST API for projects, keys, files and glossaries, and a translation CDN.",
      "url": "https://www.anchorterminal.com/tools/localazy",
      "markdownUrl": "https://www.anchorterminal.com/tools/localazy.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/localazy.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/localazy.json",
      "dns": "localazy.grade.anchorterminal.com",
      "repo": "https://github.com/localazy/api-client",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@localazy/api-client"
        },
        {
          "registry": "npm",
          "name": "@localazy/cli"
        }
      ],
      "auth": "pat",
      "authNotes": "Bearer tokens minted by a project owner at localazy.com/developer/tokens after a browser signup. Project tokens have read and write access to every endpoint of one project. Translation tokens reach only the AI Translation endpoint. Organisation tokens are a beta on request.",
      "pricing": "freemium",
      "pricingNotes": "Free plan for small projects. Professional $34, Autopilot $78 and Business $175 a month billed annually, each including monthly translation credits ($1 each). Localazy AI averages $0.005 a word. 14-day Business trial with no credit card.",
      "priceSummary": "$34 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs or pricing (checked 2026-11-06). Plans and credits are paid by card through Stripe, or SEPA on request.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 61319,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://localazy.com/docs/api/introduction",
      "llmsTxt": "https://localazy.com/llms.txt",
      "capabilities": [
        "translate.text",
        "translate.glossary",
        "translate.documents",
        "cms.localisation"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "no-card",
        "free-trial",
        "cli",
        "typescript",
        "android",
        "ios",
        "status-page",
        "eu",
        "localisation",
        "beta",
        "closed-source"
      ],
      "lastRelease": "2026-10-26",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 54.4,
        "grade": "C",
        "agentReady": false,
        "rank": 915,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 62,
          "maintenance": 75,
          "payments": 35,
          "reliability": 68,
          "schema": 51,
          "security": 37,
          "transparency": 57
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Localazy is a localisation platform whose REST API, CLI and AI Translation endpoint use project-scoped bearer tokens, with published limits, a free plan and a no-card trial. There's no OpenAPI spec, no 429 guidance, no security.txt or disclosure policy, and project tokens carry full read and write access.",
        "bestFor": "App and game teams that keep source strings in a TMS and want agents to push keys, pull translations or run AI translation with a glossary.",
        "strengths": [
          "A translation-only token limits an agent to the AI Translation endpoint",
          "Rate and request limits published per plan, with daily import and fetch caps",
          "Free plan for small projects and a 14-day Business trial without a credit card",
          "Endpoint pages show token type, permission and role needed, with sample requests and errors",
          "TypeScript API client released 26 October 2026, plus a CLI and mobile libraries"
        ],
        "weaknesses": [
          "No OpenAPI spec, and llms.txt only lists top-level pages",
          "Project tokens get read and write access to every endpoint of the project",
          "No security.txt, disclosure policy or certification found",
          "No 429 or retry guidance, and no SLA",
          "The AI Translation endpoint is in beta"
        ],
        "agentNotes": [
          "Ask for a translation token when the task is only machine translation, rather than a project token",
          "Keep under 10 requests a second and the plan's daily import and fetch caps per project",
          "Use the Localazy CDN, not the API, to fetch translations in a live app",
          "Import at most 1,000 keys and 50 files a request, and don't run parallel imports into the same new file",
          "Check the account's credit balance before bulk AI translation, since each word uses credits"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 54.4
          }
        ],
        "editorialScores": {
          "ergonomics": 62,
          "maintenance": 75,
          "payments": 35,
          "reliability": 68,
          "schema": 51,
          "security": 37,
          "transparency": 40
        },
        "provenanceScore": 73,
        "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": "npm install -g @localazy/cli",
        "http": "curl -H \"Authorization: Bearer $LOCALAZY_TOKEN\" https://api.localazy.com/projects"
      },
      "letme": {
        "capability": "https://letme.dev/translate.text",
        "tool": "https://letme.dev/localazy"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Professional plan, billed annually",
          "unit": "month",
          "usd": 34,
          "note": "1,000 source keys, 12,000 words of Localazy AI translation"
        },
        {
          "item": "Business plan, billed annually",
          "unit": "month",
          "usd": 175,
          "note": "Monthly credits included"
        }
      ],
      "provenance": {
        "legalEntity": "Localazy s.r.o.",
        "domain": "localazy.com",
        "domainRegistered": "2018-04-24",
        "endpointOnVendorDomain": true,
        "terms": "https://localazy.com/terms-and-conditions",
        "privacy": "https://localazy.com/privacy-policy",
        "statusPage": "https://status.localazy.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms name Localazy s.r.o., Mlýnská 326/13, 602 00 Brno, Czech Republic, company ID 09050451, registered at the Regional Court in Brno, under Czech law.",
          "robots.txt on localazy.com disallows ClaudeBot, GPTBot, Google-Extended, CCBot and Bytespider and allows Claude-User, Claude-SearchBot, ChatGPT-User and others by name; research continued on that basis, as the founder decided on 30 October 2026 (arcmira's precedent).",
          "localazy.com/.well-known/security.txt and /security return 404.",
          "No API changelog was found; localazy.com/changelog returns 404. Release updates appear as blog posts.",
          "RDAP gives localazy.com a registration date of 24 April 2018."
        ],
        "score": 73
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/localazy.json",
      "live": {
        "slug": "localazy",
        "vendorStatus": {
          "page": "https://status.localazy.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:00.405159441Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "localazy/api-client",
            "version": "2.3.2",
            "released": "2026-10-26",
            "seenAt": "2026-11-06T23:41:15.049514814Z"
          },
          {
            "registry": "npm",
            "name": "@localazy/api-client",
            "version": "2.3.2",
            "seenAt": "2026-11-06T23:41:12.850780355Z"
          },
          {
            "registry": "npm",
            "name": "@localazy/cli",
            "version": "2.0.12",
            "seenAt": "2026-11-06T23:41:13.725514176Z"
          }
        ],
        "githubStars": 3,
        "npmWeekly": 1211,
        "securityTxt": {
          "url": "https://localazy.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:35.625950014Z"
        },
        "llmsTxt": {
          "url": "https://localazy.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:54.35604842Z"
        },
        "pages": [
          {
            "url": "https://localazy.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:22.759899743Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3ab88891f9db"
          },
          {
            "url": "https://localazy.com/terms-and-conditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:24.897447568Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9d1fa669c0c4"
          }
        ],
        "updatedAt": "2026-11-07T15:59:35.625950014Z"
      }
    },
    "answer": "Phrase scores 67.2 (B) on agent readiness against Localazy's 54.4 (C), and leads in 6 of 7 scored categories. Localazy leads on payments \u0026 pricing.",
    "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",
      "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"
      }
    },
    "edges": [
      {
        "by": 36,
        "category": "schema",
        "leads": "phrase",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI or other machine-readable contract was found (0). localazy.com/llms.txt is a six-link index of top-level pages, with no Markdown docs for agents (5). Each endpoint page states which token types can call it, whether write permission is needed and the minimum role, and the limits page says to use the CDN, not the API, for production fetches (14). Request bodies list required and optional fields with limits, such as 512 characters for a key and 1,000 for a comment (12). Sample requests, responses and error responses per endpoint (13). Docs pages carry 'last updated' dates and the blog posts dated release updates, but there's no API version or changelog (7). 0+5+14+12+13+7 = 51.",
          "b": "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)."
        },
        "scores": {
          "a": 51,
          "b": 87
        }
      },
      {
        "by": 21,
        "category": "security",
        "leads": "phrase",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Bearer tokens in the Authorization header. A project token reaches every endpoint of one project with read and write access; a translation token reaches only the AI Translation endpoint; organisation tokens are in beta on request (20). The translation token is the only least-privilege option, and project tokens can delete keys and glossary items without a confirmation step (10). The API returns strings written by translators and contributors, with no guidance on untrusted content (5). No per-call log or audit trail for tokens found (2). localazy.com/.well-known/security.txt and /security return 404, and we found no disclosure policy or certification (0). 20+10+5+2+0 = 37.",
          "b": "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)."
        },
        "scores": {
          "a": 37,
          "b": 58
        }
      },
      {
        "by": 17,
        "category": "transparency",
        "leads": "phrase",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Editorial half only. Closed service under terms that name Localazy s.r.o. of Brno and Czech law; the CLI is BSD-3-Clause and the API client MIT (15). The privacy policy keeps data while the service is used and 24 months after, and includes a DPA, but says nothing on whether content sent to Localazy AI is used for training (15). No deprecation policy or dated notices found (0). The DPA links a list of suppliers and subprocessors on an external knowledge base we didn't read (10). 15+15+0+10 = 40.",
          "b": "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)."
        },
        "scores": {
          "a": 57,
          "b": 74
        }
      },
      {
        "by": 8,
        "category": "ergonomics",
        "leads": "phrase",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "API reading. List endpoints return whole projects, files and keys with few output controls (13). Filtering by file, language and tags, and batch imports of up to 1,000 keys and 50 files a request (14). Error responses are documented per endpoint, with HTTP codes and messages (12). No idempotency keys, and the docs warn against parallel imports into the same new file (8). Official TypeScript API client, a CLI and Android and iOS libraries, with few required fields (15). 13+14+12+8+15 = 62.",
          "b": "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)."
        },
        "scores": {
          "a": 62,
          "b": 70
        }
      },
      {
        "by": 8,
        "category": "maintenance",
        "leads": "phrase",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "@localazy/api-client 2.3.2 on 26 October 2026 (30). Releases 2.3.0 (12 August), 2.3.1 (29 September) and 2.3.2 (26 October) in the last 90 days (20). Support by email, blog release updates, and public GitHub repositories, but we didn't read issue reply times (7). The TypeScript client and the CLI (2.0.12 on 31 July 2026) are current (13). The client repository shows coverage badges; we didn't confirm CI runs (5). 30+20+7+13+5 = 75.",
          "b": "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."
        },
        "scores": {
          "a": 75,
          "b": 83
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "localazy",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Plan prices are public ($34, $78 and $175 a month billed annually) and credits are $1 each, with Localazy AI at about $0.005 a word on average, so partial per-unit credit (15). A free plan for small projects and a 14-day Business trial with no credit card (20). A person signs up in a browser and mints tokens in the developer settings (0). 0+15+20+0 = 35.",
          "b": "No x402, MPP or L402 (0). Plan prices are public, $27, $525 and $1,245 a month billed annually, with included capacities and the MTU conversion published. Top-up prices and the Business and Enterprise plans are quoted by sales, so plan-only credit (10). A 14-day trial whose signup form asks for an email address and a password, with no automatic charge afterwards (20). A person signs up in a browser, and the MCP server needs a Phrase account login (0)."
        },
        "scores": {
          "a": 35,
          "b": 30
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Localazy s.r.o.",
        "b": "Phrase a.s.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://mcp.eu.phrase.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "Token",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "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": "no",
        "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-10-26",
        "b": "2026-10-28",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-10-06",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "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": "61k npm/wk",
        "b": "49 stars, 40k npm/wk, 14k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Phrase scores 67.2 (B) on agent readiness against Localazy's 54.4 (C), and leads in 6 of 7 scored categories. Localazy leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Localazy or Phrase?"
      },
      {
        "answer": "Localazy needs an access token. Phrase takes an API key or an OAuth sign-in.",
        "question": "Do Localazy and Phrase need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for Localazy. Phrase has a hosted endpoint at https://mcp.eu.phrase.com.",
        "question": "Can an agent call Localazy and Phrase without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 35 against 30"
        ],
        "also": null,
        "goodFor": "App and game teams that keep source strings in a TMS and want agents to push keys, pull translations or run AI translation with a glossary.",
        "slug": "localazy",
        "watchFor": "No OpenAPI spec, and llms.txt only lists top-level pages"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 87 against 51",
          "Agent ergonomics, 70 against 62",
          "Security \u0026 auth, 58 against 37",
          "Maintenance \u0026 community, 83 against 75",
          "Transparency \u0026 trust, 74 against 57"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "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"
      }
    ],
    "history": {
      "localazy": null,
      "phrase": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-02",
          "delta": 3,
          "from": 64.2,
          "fromGrade": "B",
          "to": 67.2,
          "toGrade": "B"
        }
      ]
    },
    "job": {
      "capability": "translate.text",
      "name": "Translation"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-translate-vs-localazy.json",
        "title": "Amazon Translate vs Localazy",
        "url": "https://www.anchorterminal.com/compare/amazon-translate-vs-localazy"
      },
      {
        "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-localazy.json",
        "title": "Azure Translator vs Localazy",
        "url": "https://www.anchorterminal.com/compare/azure-translator-vs-localazy"
      },
      {
        "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-localazy.json",
        "title": "Crowdin vs Localazy",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-localazy"
      },
      {
        "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/deepl-api-vs-localazy.json",
        "title": "DeepL API vs Localazy",
        "url": "https://www.anchorterminal.com/compare/deepl-api-vs-localazy"
      },
      {
        "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-localazy.json",
        "title": "Google Cloud Translation vs Localazy",
        "url": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-localazy"
      },
      {
        "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-localazy.json",
        "title": "Lara Translate API vs Localazy",
        "url": "https://www.anchorterminal.com/compare/lara-translate-vs-localazy"
      },
      {
        "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-localazy.json",
        "title": "LibreTranslate vs Localazy",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-localazy"
      },
      {
        "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-localazy.json",
        "title": "Lingo.dev vs Localazy",
        "url": "https://www.anchorterminal.com/compare/lingo-dev-vs-localazy"
      },
      {
        "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-localazy.json",
        "title": "Lingvanex Translation API vs Localazy",
        "url": "https://www.anchorterminal.com/compare/lingvanex-vs-localazy"
      },
      {
        "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/localazy-vs-lokalise.json",
        "title": "Localazy vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/localazy-vs-lokalise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localazy-vs-smartcat.json",
        "title": "Localazy vs Smartcat",
        "url": "https://www.anchorterminal.com/compare/localazy-vs-smartcat"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localazy-vs-systran.json",
        "title": "Localazy vs SYSTRAN Translate API",
        "url": "https://www.anchorterminal.com/compare/localazy-vs-systran"
      },
      {
        "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/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/phrase-vs-translateplus.json",
        "title": "Phrase vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/phrase-vs-translateplus"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 2,
        "edge": "phrase",
        "key": "reliability",
        "localazy": 68,
        "name": "Reliability",
        "phrase": 70,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 36,
        "edge": "phrase",
        "key": "schema",
        "localazy": 51,
        "name": "Schema \u0026 documentation",
        "phrase": 87,
        "weight": 13
      },
      {
        "by": 8,
        "edge": "phrase",
        "key": "ergonomics",
        "localazy": 62,
        "name": "Agent ergonomics",
        "phrase": 70,
        "weight": 13
      },
      {
        "by": 21,
        "edge": "phrase",
        "key": "security",
        "localazy": 37,
        "name": "Security \u0026 auth",
        "phrase": 58,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "localazy",
        "key": "payments",
        "localazy": 35,
        "name": "Payments \u0026 pricing",
        "phrase": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "edge": "phrase",
        "key": "maintenance",
        "localazy": 75,
        "name": "Maintenance \u0026 community",
        "phrase": 83,
        "weight": 7
      },
      {
        "by": 17,
        "edge": "phrase",
        "key": "transparency",
        "localazy": 57,
        "name": "Transparency \u0026 trust",
        "phrase": 74,
        "weight": 7
      }
    ],
    "summary": "Phrase scores 67.2 (B) on agent readiness against Localazy's 54.4 (C), and leads in 6 of 7 scored categories. Localazy leads on payments \u0026 pricing. Both do translation.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "localazy": "Localazy is a localisation platform whose REST API, CLI and AI Translation endpoint use project-scoped bearer tokens, with published limits, a free plan and a no-card trial. There's no OpenAPI spec, no 429 guidance, no security.txt or disclosure policy, and project tokens carry full read and write access.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/localazy-vs-phrase",
    "json": "https://www.anchorterminal.com/compare/localazy-vs-phrase.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/localazy-vs-phrase.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/localazy-vs-phrase.min.md"
  },
  "markdown": "Phrase scores 67.2 (B) on agent readiness against Localazy's 54.4 (C), and leads in 6 of 7 scored categories. Localazy leads on payments \u0026 pricing. Both do translation.\n\n- Localazy: grade C, 54.4/100, rank #915 of 1510. Markdown https://www.anchorterminal.com/tools/localazy.md · JSON https://www.anchorterminal.com/api/v1/tools/localazy.json\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- 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### Localazy (C)\n\nGood for: App and game teams that keep source strings in a TMS and want agents to push keys, pull translations or run AI translation with a glossary.\n\nAhead on:\n- Payments \u0026 pricing, 35 against 30\n\nWatch for: No OpenAPI spec, and llms.txt only lists top-level pages\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 51\n- Agent ergonomics, 70 against 62\n- Security \u0026 auth, 58 against 37\n- Maintenance \u0026 community, 83 against 75\n- Transparency \u0026 trust, 74 against 57\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\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\n## Why the edge\n\n### Schema \u0026 documentation: Phrase +36\n\n- Localazy (51): No OpenAPI or other machine-readable contract was found (0). localazy.com/llms.txt is a six-link index of top-level pages, with no Markdown docs for agents (5). Each endpoint page states which token types can call it, whether write permission is needed and the minimum role, and the limits page says to use the CDN, not the API, for production fetches (14). Request bodies list required and optional fields with limits, such as 512 characters for a key and 1,000 for a comment (12). Sample requests, responses and error responses per endpoint (13). Docs pages carry 'last updated' dates and the blog posts dated release updates, but there's no API version or changelog (7). 0+5+14+12+13+7 = 51.\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\n### Security \u0026 auth: Phrase +21\n\n- Localazy (37): Bearer tokens in the Authorization header. A project token reaches every endpoint of one project with read and write access; a translation token reaches only the AI Translation endpoint; organisation tokens are in beta on request (20). The translation token is the only least-privilege option, and project tokens can delete keys and glossary items without a confirmation step (10). The API returns strings written by translators and contributors, with no guidance on untrusted content (5). No per-call log or audit trail for tokens found (2). localazy.com/.well-known/security.txt and /security return 404, and we found no disclosure policy or certification (0). 20+10+5+2+0 = 37.\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\n### Transparency \u0026 trust: Phrase +17\n\n- Localazy (57): Editorial half only. Closed service under terms that name Localazy s.r.o. of Brno and Czech law; the CLI is BSD-3-Clause and the API client MIT (15). The privacy policy keeps data while the service is used and 24 months after, and includes a DPA, but says nothing on whether content sent to Localazy AI is used for training (15). No deprecation policy or dated notices found (0). The DPA links a list of suppliers and subprocessors on an external knowledge base we didn't read (10). 15+15+0+10 = 40.\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\n### Agent ergonomics: Phrase +8\n\n- Localazy (62): API reading. List endpoints return whole projects, files and keys with few output controls (13). Filtering by file, language and tags, and batch imports of up to 1,000 keys and 50 files a request (14). Error responses are documented per endpoint, with HTTP codes and messages (12). No idempotency keys, and the docs warn against parallel imports into the same new file (8). Official TypeScript API client, a CLI and Android and iOS libraries, with few required fields (15). 13+14+12+8+15 = 62.\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\n### Maintenance \u0026 community: Phrase +8\n\n- Localazy (75): @localazy/api-client 2.3.2 on 26 October 2026 (30). Releases 2.3.0 (12 August), 2.3.1 (29 September) and 2.3.2 (26 October) in the last 90 days (20). Support by email, blog release updates, and public GitHub repositories, but we didn't read issue reply times (7). The TypeScript client and the CLI (2.0.12 on 31 July 2026) are current (13). The client repository shows coverage badges; we didn't confirm CI runs (5). 30+20+7+13+5 = 75.\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\n### Payments \u0026 pricing: Localazy +5\n\n- Localazy (35): No x402, MPP or L402 (0). Plan prices are public ($34, $78 and $175 a month billed annually) and credits are $1 each, with Localazy AI at about $0.005 a word on average, so partial per-unit credit (15). A free plan for small projects and a 14-day Business trial with no credit card (20). A person signs up in a browser and mints tokens in the developer settings (0). 0+15+20+0 = 35.\n- Phrase (30): No x402, MPP or L402 (0). Plan prices are public, $27, $525 and $1,245 a month billed annually, with included capacities and the MTU conversion published. Top-up prices and the Business and Enterprise plans are quoted by sales, so plan-only credit (10). A 14-day trial whose signup form asks for an email address and a password, with no automatic charge afterwards (20). A person signs up in a browser, and the MCP server needs a Phrase account login (0).\n\n## Score by category\n\n| Category | Weight | Localazy | Phrase | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 70 | Phrase +2 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 51 | 87 | Phrase +36 |\n| Agent ergonomics | 13% (16.2 this run) | 62 | 70 | Phrase +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 37 | 58 | Phrase +21 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 30 | Localazy +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 83 | Phrase +8 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 57 | 74 | Phrase +17 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **54.4 · C** | **67.2 · B** | |\n\n## Facts side by side\n\n| Fact | Localazy | Phrase |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Localazy s.r.o. | Phrase a.s. |\n| Hosted endpoint | no (local only) | `https://mcp.eu.phrase.com` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | Token | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | none | 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 | no | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.github.phrase/mcp` |\n| Last release | 2026-10-26 | 2026-10-28 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | no date given | 2026-10-06 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | yes |\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 | 61k npm/wk | 49 stars, 40k npm/wk, 14k PyPI/wk |\n| Agent reviews | none | 3/5 (4) |\n\n## How the scores have moved\n\n### Localazy\n\nNo score change since it was listed.\n\n### Phrase\n\n- +3.0 on 2 November 2026: correction\n\n## Verdicts\n\n**Localazy.** Localazy is a localisation platform whose REST API, CLI and AI Translation endpoint use project-scoped bearer tokens, with published limits, a free plan and a no-card trial. There's no OpenAPI spec, no 429 guidance, no security.txt or disclosure policy, and project tokens carry full read and write access.\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## Before you call either\n\n### Localazy\n\n1. Ask for a translation token when the task is only machine translation, rather than a project token\n2. Keep under 10 requests a second and the plan's daily import and fetch caps per project\n3. Use the Localazy CDN, not the API, to fetch translations in a live app\n4. Import at most 1,000 keys and 50 files a request, and don't run parallel imports into the same new file\n5. Check the account's credit balance before bulk AI translation, since each word uses credits\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## Questions\n\n### Which is better for AI agents, Localazy or Phrase?\n\nPhrase scores 67.2 (B) on agent readiness against Localazy's 54.4 (C), and leads in 6 of 7 scored categories. Localazy leads on payments \u0026 pricing.\n\n### Do Localazy and Phrase need an API key?\n\nLocalazy needs an access token. Phrase takes an API key or an OAuth sign-in.\n\n### Can an agent call Localazy and Phrase without installing anything?\n\nNo hosted endpoint is listed for Localazy. Phrase has a hosted endpoint at https://mcp.eu.phrase.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/localazy-vs-phrase.json, and with the fewest tokens: https://www.anchorterminal.com/compare/localazy-vs-phrase.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"localazy\", \"b\": \"phrase\"}`. From a terminal: `anchor compare localazy phrase`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/localazy.json and https://www.anchorterminal.com/api/v1/tools/phrase.json\n\n## Other comparisons with Localazy or Phrase\n\n- [Amazon Translate vs Localazy](https://www.anchorterminal.com/compare/amazon-translate-vs-localazy.md)\n- [Amazon Translate vs Phrase](https://www.anchorterminal.com/compare/amazon-translate-vs-phrase.md)\n- [Azure Translator vs Localazy](https://www.anchorterminal.com/compare/azure-translator-vs-localazy.md)\n- [Azure Translator vs Phrase](https://www.anchorterminal.com/compare/azure-translator-vs-phrase.md)\n- [Crowdin vs Localazy](https://www.anchorterminal.com/compare/crowdin-vs-localazy.md)\n- [Crowdin vs Phrase](https://www.anchorterminal.com/compare/crowdin-vs-phrase.md)\n- [DeepL API vs Localazy](https://www.anchorterminal.com/compare/deepl-api-vs-localazy.md)\n- [DeepL API vs Phrase](https://www.anchorterminal.com/compare/deepl-api-vs-phrase.md)\n- [Google Cloud Translation vs Localazy](https://www.anchorterminal.com/compare/google-cloud-translation-vs-localazy.md)\n- [Google Cloud Translation vs Phrase](https://www.anchorterminal.com/compare/google-cloud-translation-vs-phrase.md)\n- [Lara Translate API vs Localazy](https://www.anchorterminal.com/compare/lara-translate-vs-localazy.md)\n- [Lara Translate API vs Phrase](https://www.anchorterminal.com/compare/lara-translate-vs-phrase.md)\n- [LibreTranslate vs Localazy](https://www.anchorterminal.com/compare/libretranslate-vs-localazy.md)\n- [LibreTranslate vs Phrase](https://www.anchorterminal.com/compare/libretranslate-vs-phrase.md)\n- [Lingo.dev vs Localazy](https://www.anchorterminal.com/compare/lingo-dev-vs-localazy.md)\n- [Lingo.dev vs Phrase](https://www.anchorterminal.com/compare/lingo-dev-vs-phrase.md)\n- [Lingvanex Translation API vs Localazy](https://www.anchorterminal.com/compare/lingvanex-vs-localazy.md)\n- [Lingvanex Translation API vs Phrase](https://www.anchorterminal.com/compare/lingvanex-vs-phrase.md)\n- [Localazy vs Lokalise](https://www.anchorterminal.com/compare/localazy-vs-lokalise.md)\n- [Localazy vs Smartcat](https://www.anchorterminal.com/compare/localazy-vs-smartcat.md)\n- [Localazy vs SYSTRAN Translate API](https://www.anchorterminal.com/compare/localazy-vs-systran.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- [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- [Phrase vs TranslatePlus](https://www.anchorterminal.com/compare/phrase-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": "Localazy vs Phrase",
        "url": ""
      }
    ],
    "description": "Phrase scores 67.2 (B) to Localazy's 54.4 (C) for translation. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Localazy C 54.4",
      "Phrase B 67.2",
      "scores"
    ],
    "h1": "Localazy vs Phrase",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/localazy-vs-phrase",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Localazy vs Phrase for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/localazy-vs-phrase"
  },
  "tokens": {
    "markdown": 4600,
    "slim": 2680
  },
  "version": 1
}
