{
  "data": {
    "a": {
      "slug": "lokalise",
      "name": "Lokalise",
      "vendor": "Lokalise, Inc.",
      "vendorUrl": "https://lokalise.com",
      "kind": "http-api",
      "category": "translation",
      "summary": "Lokalise is a hosted translation management system for software strings, documents and marketing content. Agents reach it through a REST API, the `lokalise2` CLI, SDKs in four languages and a hosted MCP server in beta.",
      "url": "https://www.anchorterminal.com/tools/lokalise",
      "markdownUrl": "https://www.anchorterminal.com/tools/lokalise.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/lokalise.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/lokalise.json",
      "repo": "https://github.com/lokalise/lokalise-cli-2-go",
      "license": "Proprietary service under the Lokalise Master Service Agreement. The CLI and the Node SDK on GitHub are BSD 3-Clause",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.lokalise.com/api2",
      "packages": [
        {
          "registry": "npm",
          "name": "@lokalise/node-api"
        },
        {
          "registry": "pypi",
          "name": "python-lokalise-api"
        },
        {
          "registry": "go",
          "name": "github.com/lokalise/lokalise-cli-2-go"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A user creates a personal API token under Profile settings, read-only or read/write, and sends it in the `X-Api-Token` header. Tokens don't expire, can be deleted, and carry the creating user's project access. OAuth 2 for the API needs an app registered through Lokalise support, with scopes such as `read_keys` and `write_projects`. The MCP server takes OAuth with dynamic client registration, or an API token in the `apikey` header.",
      "pricing": "paid",
      "pricingNotes": "Explorer $149, Growth $379 and Advanced $1,049 a month billed yearly, Enterprise by quote. Monthly-billing prices load only in a browser and were not read. Every plan starts with a 14-day trial with no card, so an agent can start without a contract. There is no free plan except for open-source non-profit projects on request. The MCP article says API access depends on the plan, and the page did not show which plans include it (checked 2026-10-08).",
      "priceSummary": "$149 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI files or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 124,
        "npmWeekly": 337721,
        "pypiWeekly": 39399,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.lokalise.com",
      "llmsTxt": "https://developers.lokalise.com/llms.txt",
      "openapi": "https://developers.lokalise.com/openapi/lokalise-api-without-branches.yml",
      "capabilities": [
        "translate.text",
        "translate.glossary",
        "translate.documents"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "cli",
        "typescript",
        "python",
        "no-card",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 71.3,
        "grade": "BB",
        "agentReady": true,
        "rank": 115,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 84,
          "payments": 30,
          "reliability": 84,
          "schema": 76,
          "security": 73,
          "transparency": 81
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The REST API has public OpenAPI files, Markdown docs, published rate limits, read-only tokens, scoped OAuth and an audit log endpoint. Access needs a paid plan after a 14-day trial, a person signs up in a browser, and the Master Service Agreement forbids benchmarking. No idempotency keys or deprecation policy were found in the reviewed documentation.",
        "bestFor": "Agents that manage localisation work, such as adding keys, uploading and exporting string files, keeping a glossary and starting AI or machine translation tasks for a team that already uses Lokalise.",
        "strengths": [
          "Three public OpenAPI 3.0.3 files, llms.txt and a Markdown twin of every reference page",
          "Rate limits published as 6 requests a second per token and per IP, with 10 concurrent requests per project",
          "API tokens are read-only or read/write, and OAuth 2 carries read and write scopes per resource",
          "The MCP server signs in with OAuth, PKCE and dynamic client registration, and lists 22 scopes",
          "`GET /v1/audit-logs` returns team audit events in OCSF 1.3.0 format since 16 July 2026"
        ],
        "weaknesses": [
          "The Master Service Agreement forbids using the service for benchmarking or competitive analysis",
          "No free plan. Explorer is $149 a month billed yearly after a 14-day trial without a card",
          "No idempotency keys in the OpenAPI files, though the errors page mentions an idempotent key under 409",
          "API tokens never expire and carry every permission of the user who made them",
          "The Developer Program Agreement lets Lokalise change or end API access with or without notice",
          "The MCP server is labelled beta in the help centre article"
        ],
        "agentNotes": [
          "Send the token in the `X-Api-Token` header to `https://api.lokalise.com/api2`. OAuth access tokens go in `Authorization: Bearer` and expire after about 60 minutes.",
          "Stay under 6 requests a second per token and 10 concurrent requests per project. On 429, back off exponentially and read `X-RateLimit-Reset`.",
          "Use a read-only token for reads. A read/write token can call `PUT /projects/{project_id}/empty`, which deletes every key and translation.",
          "Use `pagination=cursor` on `/keys` and `/translations`, with `limit` at most 500 on keys, and follow `X-Pagination-Next-Cursor`.",
          "Projects above 10,000 key-language pairs need `/files/async-download`. Poll `/processes/{process_id}` for the bundle URL, and do the same after `/files/upload`."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 71.3
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 84,
          "payments": 30,
          "reliability": 84,
          "schema": 76,
          "security": 73,
          "transparency": 63
        },
        "provenanceScore": 98
      },
      "connect": {
        "install": "brew tap lokalise/cli-2\nbrew install lokalise2",
        "http": "curl \"https://api.lokalise.com/api2/projects?limit=5\" -H \"X-Api-Token: $LOKALISE_API_TOKEN\"",
        "claudeCode": "claude mcp add lokalise_pm --transport http https://mcp.lokalise.com/mcp/project-management",
        "config": {
          "lokalise_pm": {
            "url": "https://mcp.lokalise.com/mcp/project-management"
          },
          "lokalise_sd": {
            "url": "https://mcp.lokalise.com/mcp/software-development"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/translate.text",
        "tool": "https://letme.dev/lokalise"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Explorer",
          "unit": "month",
          "usd": 149,
          "note": "billed yearly"
        },
        {
          "item": "Growth",
          "unit": "month",
          "usd": 379,
          "note": "billed yearly"
        },
        {
          "item": "Advanced",
          "unit": "month",
          "usd": 1049,
          "note": "billed yearly"
        }
      ],
      "provenance": {
        "legalEntity": "Lokalise, Inc.",
        "domain": "lokalise.com",
        "domainRegistered": "2016-09-26",
        "endpointOnVendorDomain": true,
        "terms": "https://lokalise.com/msa-new/",
        "privacy": "https://lokalise.com/privacy-policy/",
        "statusPage": "https://status.lokalise.com",
        "changelog": "https://lokalise.com/changelog/",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Master Service Agreement (last updated November 2025) names Lokalise, Inc., a Delaware company at 3500 South DuPont Highway, Suite BZ-101, Dover, DE 19901. It governs paid subscriptions.",
          "Trial and individual users fall under the User and Trial Access Terms of Service at https://lokalise.com/terms-of-service/ (November 2025). API integrations published in the app library fall under the Developer Program Agreement at https://lokalise.com/dev-hub-terms/, which shows no date.",
          "The privacy policy (last updated March 2026) covers the website, platform and services, and says Lokalise is the processor for customer data.",
          "The API answers at api.lokalise.com and the MCP server at mcp.lokalise.com.",
          "https://lokalise.com/.well-known/security.txt gives vdp.lokalise.com and security@lokalise.com as contacts and expires on 20 August 2027.",
          "RDAP for lokalise.com gives a registration date of 2016-09-26."
        ],
        "score": 98
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/lokalise.json",
      "live": {
        "slug": "lokalise",
        "probe": {
          "target": "https://api.lokalise.com/api2",
          "method": "get",
          "lastAt": "2026-10-08T21:12:14.334951139Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 88,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 91,
          "p95ms24h": 137,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.lokalise.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:11.514257187Z"
        },
        "updatedAt": "2026-10-08T21:12:14.334951139Z"
      }
    },
    "answer": "Lokalise scores 71.3 (BB) on agent readiness against Phrase's 64.2 (B), and leads in 4 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": "Lokalise, Inc.",
        "b": "Phrase a.s.",
        "name": "Vendor"
      },
      {
        "a": "https://api.lokalise.com/api2",
        "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": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Lokalise Master Service Agreement. The CLI and the Node SDK on GitHub are BSD 3-Clause",
        "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-10-05",
        "b": "2026-10-06",
        "name": "Last release"
      },
      {
        "a": "2025-11-01",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-03-01",
        "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": "yes",
        "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": "124 stars, 338k npm/wk, 39k PyPI/wk",
        "b": "49 stars, 40k npm/wk, 14k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Lokalise scores 71.3 (BB) on agent readiness against Phrase's 64.2 (B), and leads in 4 of 7 scored categories. Phrase leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, Lokalise or Phrase?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Lokalise and Phrase need an API key?"
      },
      {
        "answer": "Yes. Lokalise has a hosted endpoint at https://api.lokalise.com/api2 and Phrase at https://mcp.eu.phrase.com.",
        "question": "Can an agent call Lokalise and Phrase without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 84 against 55",
          "Security \u0026 auth, 73 against 58",
          "Transparency \u0026 trust, 81 against 74"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Agents that manage localisation work, such as adding keys, uploading and exporting string files, keeping a glossary and starting AI or machine translation tasks for a team that already uses Lokalise.",
        "slug": "lokalise",
        "watchFor": "The Master Service Agreement forbids using the service for benchmarking or competitive analysis"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 87 against 76"
        ],
        "also": null,
        "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-lokalise.json",
        "title": "Amazon Translate vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/amazon-translate-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "Azure Translator vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/azure-translator-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "Crowdin vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "DeepL API vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/deepl-api-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "Google Cloud Translation vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "Lara Translate API vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/lara-translate-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "LibreTranslate vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "Lingo.dev vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/lingo-dev-vs-lokalise"
      },
      {
        "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-lokalise.json",
        "title": "Lingvanex Translation API vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/lingvanex-vs-lokalise"
      },
      {
        "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-systran.json",
        "title": "Lokalise vs SYSTRAN Translate API",
        "url": "https://www.anchorterminal.com/compare/lokalise-vs-systran"
      },
      {
        "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": 29,
        "edge": "lokalise",
        "key": "reliability",
        "lokalise": 84,
        "name": "Reliability",
        "phrase": 55,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "edge": "phrase",
        "key": "schema",
        "lokalise": 76,
        "name": "Schema \u0026 documentation",
        "phrase": 87,
        "weight": 13
      },
      {
        "by": 1,
        "edge": "phrase",
        "key": "ergonomics",
        "lokalise": 69,
        "name": "Agent ergonomics",
        "phrase": 70,
        "weight": 13
      },
      {
        "by": 15,
        "edge": "lokalise",
        "key": "security",
        "lokalise": 73,
        "name": "Security \u0026 auth",
        "phrase": 58,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "lokalise": 30,
        "name": "Payments \u0026 pricing",
        "phrase": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "lokalise",
        "key": "maintenance",
        "lokalise": 84,
        "name": "Maintenance \u0026 community",
        "phrase": 83,
        "weight": 7
      },
      {
        "by": 7,
        "edge": "lokalise",
        "key": "transparency",
        "lokalise": 81,
        "name": "Transparency \u0026 trust",
        "phrase": 74,
        "weight": 7
      }
    ],
    "summary": "Lokalise scores 71.3 (BB) on agent readiness against Phrase's 64.2 (B), and leads in 4 of 7 scored categories. Phrase leads on schema \u0026 documentation. Both do translate text.",
    "verdicts": {
      "lokalise": "The REST API has public OpenAPI files, Markdown docs, published rate limits, read-only tokens, scoped OAuth and an audit log endpoint. Access needs a paid plan after a 14-day trial, a person signs up in a browser, and the Master Service Agreement forbids benchmarking. No idempotency keys or deprecation policy 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/lokalise-vs-phrase",
    "json": "https://www.anchorterminal.com/compare/lokalise-vs-phrase.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/lokalise-vs-phrase.md",
    "slim": "https://www.anchorterminal.com/compare/lokalise-vs-phrase.min.md"
  },
  "markdown": "Lokalise scores 71.3 (BB) on agent readiness against Phrase's 64.2 (B), and leads in 4 of 7 scored categories. Phrase leads on schema \u0026 documentation. Both do translate text.\n\n- Lokalise: grade BB, 71.3/100, rank #115 of 722. Markdown https://www.anchorterminal.com/tools/lokalise.md · JSON https://www.anchorterminal.com/api/v1/tools/lokalise.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### Lokalise (BB)\n\nGood for: Agents that manage localisation work, such as adding keys, uploading and exporting string files, keeping a glossary and starting AI or machine translation tasks for a team that already uses Lokalise.\n\nAhead on:\n- Reliability, 84 against 55\n- Security \u0026 auth, 73 against 58\n- Transparency \u0026 trust, 81 against 74\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: The Master Service Agreement forbids using the service for benchmarking or competitive analysis\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 76\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 | Lokalise | Phrase | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 84 | 55 | Lokalise +29 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 76 | 87 | Phrase +11 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 70 | Phrase +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 73 | 58 | Lokalise +15 |\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) | 84 | 83 | Lokalise +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 81 | 74 | Lokalise +7 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **71.3 · BB** | **64.2 · B** | |\n\n## Facts side by side\n\n| Fact | Lokalise | Phrase |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Lokalise, Inc. | Phrase a.s. |\n| Hosted endpoint | `https://api.lokalise.com/api2` | `https://mcp.eu.phrase.com` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under the Lokalise Master Service Agreement. The CLI and the Node SDK on GitHub are BSD 3-Clause | 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-10-05 | 2026-10-06 |\n| Terms last updated | 2025-11-01 | no date given |\n| Privacy policy last updated | 2026-03-01 | 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 | yes | 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 | 124 stars, 338k npm/wk, 39k PyPI/wk | 49 stars, 40k npm/wk, 14k PyPI/wk |\n\n## Verdicts\n\n**Lokalise.** The REST API has public OpenAPI files, Markdown docs, published rate limits, read-only tokens, scoped OAuth and an audit log endpoint. Access needs a paid plan after a 14-day trial, a person signs up in a browser, and the Master Service Agreement forbids benchmarking. No idempotency keys or deprecation policy 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### Lokalise\n\n1. Send the token in the `X-Api-Token` header to `https://api.lokalise.com/api2`. OAuth access tokens go in `Authorization: Bearer` and expire after about 60 minutes.\n2. Stay under 6 requests a second per token and 10 concurrent requests per project. On 429, back off exponentially and read `X-RateLimit-Reset`.\n3. Use a read-only token for reads. A read/write token can call `PUT /projects/{project_id}/empty`, which deletes every key and translation.\n4. Use `pagination=cursor` on `/keys` and `/translations`, with `limit` at most 500 on keys, and follow `X-Pagination-Next-Cursor`.\n5. Projects above 10,000 key-language pairs need `/files/async-download`. Poll `/processes/{process_id}` for the bundle URL, and do the same after `/files/upload`.\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, Lokalise or Phrase?\n\nLokalise scores 71.3 (BB) on agent readiness against Phrase's 64.2 (B), and leads in 4 of 7 scored categories. Phrase leads on schema \u0026 documentation.\n\n### Do Lokalise and Phrase need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Lokalise and Phrase without installing anything?\n\nYes. Lokalise has a hosted endpoint at https://api.lokalise.com/api2 and Phrase at https://mcp.eu.phrase.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/lokalise-vs-phrase.json, and with the fewest tokens: https://www.anchorterminal.com/compare/lokalise-vs-phrase.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"lokalise\", \"b\": \"phrase\"}`. From a terminal: `anchor compare lokalise phrase`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/lokalise.json and https://www.anchorterminal.com/api/v1/tools/phrase.json\n\n## Other comparisons with Lokalise or Phrase\n\n- [Amazon Translate vs Lokalise](https://www.anchorterminal.com/compare/amazon-translate-vs-lokalise.md)\n- [Amazon Translate vs Phrase](https://www.anchorterminal.com/compare/amazon-translate-vs-phrase.md)\n- [Azure Translator vs Lokalise](https://www.anchorterminal.com/compare/azure-translator-vs-lokalise.md)\n- [Azure Translator vs Phrase](https://www.anchorterminal.com/compare/azure-translator-vs-phrase.md)\n- [Crowdin vs Lokalise](https://www.anchorterminal.com/compare/crowdin-vs-lokalise.md)\n- [Crowdin vs Phrase](https://www.anchorterminal.com/compare/crowdin-vs-phrase.md)\n- [DeepL API vs Lokalise](https://www.anchorterminal.com/compare/deepl-api-vs-lokalise.md)\n- [DeepL API vs Phrase](https://www.anchorterminal.com/compare/deepl-api-vs-phrase.md)\n- [Google Cloud Translation vs Lokalise](https://www.anchorterminal.com/compare/google-cloud-translation-vs-lokalise.md)\n- [Google Cloud Translation vs Phrase](https://www.anchorterminal.com/compare/google-cloud-translation-vs-phrase.md)\n- [Lara Translate API vs Lokalise](https://www.anchorterminal.com/compare/lara-translate-vs-lokalise.md)\n- [Lara Translate API vs Phrase](https://www.anchorterminal.com/compare/lara-translate-vs-phrase.md)\n- [LibreTranslate vs Lokalise](https://www.anchorterminal.com/compare/libretranslate-vs-lokalise.md)\n- [LibreTranslate vs Phrase](https://www.anchorterminal.com/compare/libretranslate-vs-phrase.md)\n- [Lingo.dev vs Lokalise](https://www.anchorterminal.com/compare/lingo-dev-vs-lokalise.md)\n- [Lingo.dev vs Phrase](https://www.anchorterminal.com/compare/lingo-dev-vs-phrase.md)\n- [Lingvanex Translation API vs Lokalise](https://www.anchorterminal.com/compare/lingvanex-vs-lokalise.md)\n- [Lingvanex Translation API vs Phrase](https://www.anchorterminal.com/compare/lingvanex-vs-phrase.md)\n- [Lokalise vs SYSTRAN Translate API](https://www.anchorterminal.com/compare/lokalise-vs-systran.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": "Lokalise vs Phrase",
        "url": ""
      }
    ],
    "description": "Lokalise scores 71.3 (BB) on agent readiness against Phrase's 64.2 (B), and leads in 4 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": [
      "Lokalise BB 71.3",
      "Phrase B 64.2",
      "scores"
    ],
    "h1": "Lokalise vs Phrase",
    "image": "https://www.anchorterminal.com/assets/og/compare-lokalise-vs-phrase.png",
    "path": "/compare/lokalise-vs-phrase",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Lokalise vs Phrase for AI agents, BB 71.3 vs B 64.2 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/lokalise-vs-phrase"
  },
  "tokens": {
    "markdown": 2450,
    "slim": 680
  },
  "version": 1
}
