Skip to main content
TextSetu ships a remote Model Context Protocol server so AI agents — Claude, Cursor, VS Code Copilot, or any MCP-capable client — can manage your translations directly: read completeness stats, search keys, add and translate strings, import/export files, and work with branches, all in natural language. It’s a thin layer over the REST API: every tool call goes through /api/v1, so the exact same authentication, scopes, permissions, and approval rules apply. Nothing the API won’t let you do is reachable through MCP.
  • Endpoint: https://api.textsetu.com/mcp (self-host: <server>/mcp)
  • Transport: Streamable HTTP
  • Auth: OAuth (approve in your browser) or a Bearer API token

Connecting

You don’t need to paste a token. Connecting runs a standard OAuth flow — the first time a tool runs, TextSetu opens an Authorize screen in your browser; approve it and your client caches the token. (You can still use a token directly — see Use a token instead.)
Run any TextSetu tool and Claude Code walks you through the Authorize screen.

Use a token instead

To skip the browser flow, present an API token on every request. In a JSON-configured client, add a headers object to the server entry from above:
Claude Code takes the same thing as a flag on claude mcp add:

Authentication

The MCP server accepts either TextSetu token type: When you connect through the browser Authorize flow, the consent screen lets you choose exactly this: a PAT (your full access) or a project-scoped token, and for the project token which permissions it may use (e.g. translation_read, translation_create), plus an optional expiry. Prefer the narrowest grant that does the job. Because every tool proxies to the REST API, all the usual rules hold:
  • Writes (create_key, update_value, import_sources, …) require the matching permission (e.g. translation_create / translation_update).
  • On a project whose main branch is protected, direct-to-main writes are rejected — target a branch (branch argument), then merge_branch.
  • When approval is required, non-approver edits land as proposals, exactly as they would over the API or in the app.

Tools

Translation memory & glossary

The tools an agent reaches for while translating — reuse what was translated before, and honor the customer’s terminology. Glossary and TM management tools operate on organization-level resources and therefore require a PAT (tsu_pat_…) — a project-scoped token is refused:

Translations, files & branches

projectId is optional only for a project-scoped token (it defaults to that token’s project). With a PAT, pass it explicitly. branch targets an open translation branch instead of main.

AI translation

Draft translations with AI through the project’s AI engine. Runs are asynchronous — start one, then poll for progress.

Example prompts

Once connected, just ask — the agent picks the right tools:
  • “How complete is the French translation for project <id>?”get_stats
  • “Find every key containing ‘checkout’ that’s still in draft.”list_keys
  • “Add a key cart.empty with English ‘Your cart is empty’.”create_key
  • “Translate cart.empty into German as ‘Ihr Warenkorb ist leer’.”update_value
  • “Export the approved French and German translations as nested JSON.”export_translations
  • “Create a branch feature/checkout and merge it once it’s clean.”create_branch / merge_branch
With translation memory and glossary, the agent can translate the way you already do:
  • “Translate these new strings into French — reuse anything we’ve translated before and follow our glossary.”get_tm_matches + lookup_glossary, then update_value
  • “How have we translated ‘checkout’ before?”search_tm
  • “Review my French translation of this string for terminology problems.”check_glossary
  • “Fill in every French string that has a 90%+ match in the TM.”pretranslate
  • “Add ‘invoice’ to the glossary as ‘facture’ in French.”create_glossary_term

Notes

  • Rate limit: 120 requests/min per IP on the MCP endpoint (separate from the REST API’s per-token limit).
  • Sessions are stateful (Streamable HTTP) and idle sessions are evicted after 30 minutes — your client re-initializes transparently.
  • The server exposes standard MCP discovery, so OAuth-capable clients configure themselves; see the API Reference for the underlying endpoints.