Get started

MCP server

Connect Claude, Cursor, or any MCP client to ChangeThisFile — 1,000+ supported conversion routes, public discovery, shared developer quotas, and one-time file jobs.

ChangeThisFile ships a remote Model Context Protocol server, listed in the official Claude connectors directory. Discovery and paid-preview jobs are public. General format conversion (convert_file) gives every anonymous caller 25 free conversions per month per network; after that a free verified API key is required (25/month shared across REST + MCP, sent as Authorization: Bearer ctf_sk_...). Each result reports how much of the allowance is used, and the key-required response spells out the two-step signup (POST /v1/keys/free → verification email → key on the dashboard).

Endpointhttps://changethisfile.com/mcp
TransportStreamable HTTP (POST); negotiates MCP spec 2025-11-25, 2025-06-18 or 2025-03-26 on initialize, and answers server/discover
AuthenticationAnonymous: 25 conversions/month per network, then a free key is required. Authorization: Bearer ctf_sk_... switches to the per-account developer meter (get a key: POST /v1/keys/free or /dashboard)
Claude directoryChangeThisFile connector (one-click for Claude users)
Source (stdio bridge)github.com/aadilr/changethisfile-mcp

Connect #

Claude.ai (web) — easiest: install from the Claude connectors directory with one click. Or manually: Settings → Connectors → Add custom connector → paste https://changethisfile.com/mcp.

Claude Code:

claude mcp add --transport http changethisfile https://changethisfile.com/mcp

Claude Desktop / Cursor (stdio clients) — add to your MCP config:

{
  "mcpServers": {
    "changethisfile": {
      "command": "npx",
      "args": ["-y", "github:aadilr/changethisfile-mcp"],
      "env": { "CTF_API_KEY": "ctf_sk_your_key_here" }
    }
  }
}

CTF_API_KEY is read by the external GitHub stdio bridge and forwarded as an Authorization header; it is not a Worker environment binding. It is optional: omit the env block to use the anonymous allowance (25 conversions/month per network); add a verified Free key once that runs out, or to get a per-account allowance that follows you across networks.

Anything else — it is plain JSON-RPC 2.0 over HTTPS:

curl -X POST https://changethisfile.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Tools #

convert_file #

Convert a file and get back a temporary download URL. Pass either source_url or base64_content (+ source_format).

ArgumentRequiredDescription
target_formatYesTarget extension, e.g. pdf, mp3, json
source_urlOne ofPublicly accessible URL of the file (preferred for large files)
base64_contentOne ofBase64-encoded file content (≤ 25 MB decoded)
source_formatWith base64Source extension; auto-detected from URL/filename otherwise
filenameNoFilename hint for auto-detection
curl -X POST https://changethisfile.com/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ctf_sk_your_key_here" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"convert_file","arguments":{"source_url":"https://example.com/report.docx","target_format":"pdf"}}}'

The result text contains a signed download URL (valid 1 hour); the converted file itself is deleted within 24 hours.

list_conversions #

List every supported route, optionally filtered by source format:

curl -X POST https://changethisfile.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_conversions","arguments":{"source_format":"docx"}}}'

File job tools #

Beyond format conversion, the server runs instruction-driven file jobs. Paid jobs execute immediately and return a free preview plus a Stripe checkout link — the full output unlocks after a one-time payment, no account needed. All job tools take source_url or base64_content, plus a filename with extension.

ToolPriceWhat it does
do_file_jobNatural-language entry point: describe what you want ("translate this to German", "shrink this under 25MB") and it routes to the right job — or answers honestly when something isn't supported yet.
translate_file$4.99Translate DOCX / PPTX / XLSX / PDF / TXT / MD / SRT / VTT into any language with layout and formatting preserved (target_language required). Preview: first output pages, free.
extract_tables$3.99Extract every table from a PDF or image (PNG/JPG/WebP) into a multi-sheet Excel file. Preview: first table, free.
compress_fileFreeCompress PDF / images / video to an exact target size (target_size_kb required). Fails honestly with the smallest reachable size if the target is impossible. Daily limit applies.
check_jobFreeRe-check a job by job_id — returns status, preview, payment link, or download URL.

Long-running jobs return a job_id before completion — poll with check_job. Paid outputs stay downloadable for 7 days; everything else is deleted within 24 hours.

Limits #

LimitValue
Authenticated convert_fileDeveloper plan account limit (Free: 10/minute and 25/month shared with REST)
Anonymous convert_file25 / calendar month (UTC) per network, then a free key is required; 5 / minute per IP
Expensive job tools (anonymous)5 / minute per IP
Discovery and status calls30 / minute per IP
Per-type daily job capsTranslation: 10; table extraction: 10; compression: 3
Max input size25 MB
Download URL validity1 hour
File retentionDeleted within 24 hours

Get a verified free API key for 25 conversions/month shared across MCP and REST, or see pricing for production tiers.

Use as an Agent Skill #

For skills-capable agents (Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, and others), install the file-conversion skill — it uses the MCP tools when connected and falls back to a bundled script over plain HTTPS otherwise:

npx skills add aadilr/changethisfile-mcp

Claude Code users can alternatively install the plugin (bundles the MCP server + skill): /plugin marketplace add aadilr/changethisfile-mcp then /plugin install changethisfile@changethisfile.

Troubleshooting #

"Rate limit exceeded" — wait 60 seconds. Authenticated conversion uses your developer plan's shared per-account rate limit.

"Unsupported conversion: X→Y" — the error lists valid targets for your source format; call list_conversions to browse all routes, or see supported formats.

"File too large" — MCP inputs are currently capped at 25 MB even on paid plans. Use the authenticated REST API for larger files.

Download URL returns 410/expired — signed URLs last 1 hour. Re-run the conversion to get a fresh URL.

GET /mcp returns 405 — expected. The server is POST-only (no SSE stream); MCP clients fall back to POST mode automatically.

Tools don't appear in your client — remove and re-add the server (Claude.ai: Settings → Connectors; Claude Code: claude mcp remove changethisfile then re-add). Verify the endpoint responds with the curl tools/list example above.

Conversion fails with a 5xx — transient backend issue; retry once, then check system status or email support@changethisfile.com.