MCP server
Ownlate exposes a Model Context Protocol server, so an assistant like Claude can read your projects, translate segments, run quality checks and cut releases — with your permission, and only within the workspaces you allow.
Endpoint: https://mcp.ownlate.com
Connecting
Section titled “Connecting”The server speaks streamable HTTP and authorises with OAuth 2.1, including dynamic client registration, so most clients need nothing more than the URL.
claude mcp add --transport http ownlate https://mcp.ownlate.com/The first call returns a 401 with the address of the protected-resource metadata; your client follows it, registers itself, and sends you to a consent screen. There you choose:
- Which workspaces the token may reach. It cannot see any other, whatever you are a member of.
- Which permissions it may exercise, taken from the same permission codes as everything else.
For a device with no browser, the same server supports the device authorisation flow: the client shows a code, you approve it at platform.ownlate.com/device.
A token can never do more than you can. Granting translation:approve to an assistant when you do not hold it yourself grants nothing.
Configuration files
Section titled “Configuration files”Claude Desktop — claude_desktop_config.json:
{ "mcpServers": { "ownlate": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.ownlate.com/"] } }}VS Code — .vscode/mcp.json:
{ "servers": { "ownlate": { "type": "http", "url": "https://mcp.ownlate.com/" } }}What leaves the workspace
Section titled “What leaves the workspace”Everything a tool returns is read by the model of the client you connected: source texts, translations, keys, glossary terms, comments and the names of the people who wrote them. Connect an assistant only where that is acceptable — for a workspace under an agreement that forbids it, it is not.
What never leaves: the OTA access key of a project, the credentials of any integration, and anything about billing. No tool returns them.
A grant is yours to withdraw: platform.ownlate.com → your profile → connected applications. Withdrawing it stops the tokens at the next call.
What the tools cover
Section titled “What the tools cover”Thirty-two tools, grouped by what they touch.
Getting oriented
Section titled “Getting oriented”| Tool | What it returns |
|---|---|
list_workspaces | The workspaces this token covers |
get_workspace | One of them |
list_projects | Projects of a workspace |
get_project | A project with its source and target languages |
list_languages | The language catalogue |
add_target_languages | Adds languages to a project, keeping the existing ones |
Reading segments
Section titled “Reading segments”| Tool | What it returns |
|---|---|
list_segments | Segments of a project, filtered by language and status |
search_segments_by_keys | Segments for a list of keys; keys with no segment are reported separately |
get_project_progress | Translated and approved share per language |
get_project_analytics | Aggregate counts for a project |
list_translation_files | The files registered in a project |
get_translation_history | Who changed a translation, when, and what it was before |
export_translations | A whole locale in one call, shaped like the localisation file |
Writing translations
Section titled “Writing translations”| Tool | What it does |
|---|---|
translate_segment | Saves a translation for one segment in one language |
save_draft_translation | Stores it as a draft, leaving review to a human |
mark_translation_reviewed | Records that it was read through |
approve_translation | Approves it |
reject_translation | Sends it back for rework |
create_segment | Adds a key with its source text |
import_segments | Writes many keys at once — sources without a language, translations with one |
update_segment_source_text | Rewrites the source string |
set_segment_translatable | Marks a key that must ship as written |
Quality
Section titled “Quality”| Tool | What it does |
|---|---|
search_translation_memory | How similar source texts were translated before, with a score |
list_glossary_entries | Terms and forbidden wordings |
find_glossary_matches | The glossary entries occurring in a given text |
check_segment_quality | Which QA rules a translation violates |
list_segment_comments | The discussion on a segment |
add_segment_comment | Leaves a note — a question, or why a wording was chosen |
Releasing
Section titled “Releasing”| Tool | What it does |
|---|---|
list_releases | Releases with versions, languages and segment counts |
create_release | Snapshots approved translations into a new release |
recreate_latest_release | Rebuilds the latest release from what is approved now, keeping its version |
get_ota_distribution | The project’s distribution — without the access key |
What each tool needs
Section titled “What each tool needs”A tool is offered only when the token carries the right, and the call goes through only when you still hold that right in the workspace. Losing a right takes the tool away from the next call on, without reissuing the token.
| Right | Tools |
|---|---|
workspace:view | list_workspaces, get_workspace, find_glossary_matches |
project:view | list_projects, get_project, list_languages, list_glossary_entries, list_releases, list_translation_files, get_ota_distribution |
project:create | add_target_languages, create_release, recreate_latest_release |
segment:view | list_segments, search_segments_by_keys, get_project_progress, get_project_analytics, get_translation_history, search_translation_memory, check_segment_quality, list_segment_comments, export_translations |
segment:create | create_segment, import_segments, update_segment_source_text, set_segment_translatable |
translation:write | translate_segment, save_draft_translation, add_segment_comment |
translation:approve | approve_translation, reject_translation, mark_translation_reviewed |
Every call that changes something is written to the workspace audit log as mcp.<tool>, with the client and the grant it came from.
Resources and prompts
Section titled “Resources and prompts”Two resources are readable without calling a tool:
ownlate://project/{projectId}/progress— counts and percentage per language.ownlate://project/{projectId}/release/latest— version, languages and segment count of the newest release.
Two prompts set up the work an assistant is usually asked for. Both take projectId and language:
translate_missing— walks the untranslated keys, consults the translation memory and the glossary, and writes drafts.review_translations— reads a language through against the glossary and the quality rules and reports what is off, changing nothing.
Limits
Section titled “Limits”A grant may make 120 calls a minute; beyond that the server answers 429 with Retry-After. A session lives an hour of inactivity, after which the client initialises again on its own.
Working with an assistant
Section titled “Working with an assistant”A few patterns this is good at:
- Reviewing rather than writing.
list_segmentswithstatus: needs_review, thencheck_segment_qualityandfind_glossary_matcheson each — the assistant flags what a human should look at instead of approving on its own. - First-pass translation into a draft.
save_draft_translationrather thantranslate_segment, so nothing enters the review queue unread. - Keeping terminology honest.
search_translation_memorybefore writing, so an assistant reuses the wording your team already approved rather than inventing a synonym. - Cutting a release after a merge.
get_project_progress, thencreate_releasewhen the languages you care about are complete.