Use ThinkingNative inside Cursor, Claude Desktop, and other MCP hosts — same presets and API key as the REST API. This is a client surface, not a second engine.
| Tool | Maps to | Notes |
|---|---|---|
naturalize | POST /v1/naturalize | text, optional language (ISO/BCP-47 tag or auto), preset, fidelity, hints, preserve_terms; voice (opt-in): use_voice_profile, optional voice_tone (me | casual | formal), optional voice_pack, voice_sample, match_strength |
list_presets | GET /v1/presets | Dial catalog |
version | GET /v1/version | Build metadata |
Language defaults to auto-detection and is returned in response metadata. For short or ambiguous text, pass an explicit language tag. English-only deterministic cleanup and English-specific engine prompts are skipped for non-English or uncertain language; this is safe routing, not a claim of equal quality across locales. If a selected preset needs an English-specific engine and no language-safe OpenRouter route is configured, TN returns ENGINE_UNAVAILABLE rather than a successful-looking unchanged result.
URL: https://api.thinkingnative.com/mcp
Auth: same Bearer API key as REST (tn_… from Account). Keep that secret in the MCP client on your machine — not in a public git repo, a mobile binary, or page JavaScript. Placement rules: API tokens.
Cursor / remote MCP (streamable-HTTP) — exact JSON shape varies by client version. Use the host’s “HTTP / SSE MCP” UI if this snippet is rejected.
Auth header must be present on every request (401 otherwise). Word spend uses the same balance as REST.
If you run the ThinkingNative MCP package locally (stdio), point the host at python -m thinkingnative.mcp_server and set:
| Variable | Required | Default |
|---|---|---|
THINKINGNATIVE_API_KEY | yes | — |
THINKINGNATIVE_BASE_URL | no | https://api.thinkingnative.com |
THINKINGNATIVE_TIMEOUT_S | no | 300 |
THINKINGNATIVE_CLIENT_ID | no | mcp |
Prefer the hosted URL above unless you already have the package installed. Long Undetectable calls should hit the Railway API origin to avoid Cloudflare ~100s timeouts.