Home/Developers
Developers

A translation API and an MCP server. No SDKs.

A REST API your build script can call with curl, and an MCP server your coding agent can talk to directly. Both use the same scoped tokens and the same permission model.

We don't ship client libraries. One in six languages goes stale, and a two-line HTTP call has nothing to update. The OpenAPI spec is published if you'd rather generate your own.

Full documentation lives at docs.locoloop.dev

Pull a language at build time
curl -sfL -o de.xcstrings \
  -H "Authorization: Bearer $LOCOLOOP_KEY" \
  "$API/projects/kestrel-ios/export\
?locale=de-DE&format=xcstrings&state=approved"

→ 200 · 4,182 keys · 41 KB
→ 304 if nothing changed since your last build
Documentation

Two references, kept separate

The API and the MCP server solve different problems, so each has its own documentation set with its own changelog and versioning.

REST API

Everything the interface can do, your pipeline can do. Read and write keys, trigger translation jobs, manage projects and variants, and export any format.

GET/projects/:id/export
POST/projects/:id/import
GET/projects/:id/keys
POST/projects/:id/translate
ETag caching. Exports return 304 when nothing changed, so a build that runs hourly costs almost nothing.
Idempotent writes. Retry any import with the same key and it won't duplicate.
Webhooks. Subscribe to translation approved, job finished or key added.
Open the API reference →

MCP server

New

Point Claude, Cursor or your own agent at locoloop and it can work with your strings as tools rather than scraped text.

lookup_key
propose_translation
check_glossary
list_untranslated
Same permissions. An agent holding a read-only project key can look things up and nothing else.
Proposals, not commits. Agent translations land as drafts for a human to approve.
Attributed. Every agent action is recorded in the audit log under the key that made it.
Open the MCP docs →
Authentication

One token type, scoped narrowly

A bearer token pinned to an organisation, a platform or a single project, set to read or write. Create one per consumer so you can revoke it alone.

Every key shows a last-used timestamp, so the ones nothing is calling are easy to find and retire.

# build key — read, one project
ios-build        read   kestrel-ios
# CI — write, whole platform
ci-pipeline      write  kestrel-ios/*
# agent — read, organisation
mcp-agent        read   kestrel/*

Start translating this week

Free while you are evaluating — no card, and no call in the way.

Start freeLog inBook a demo