REST API and MCP server for developers

Call our tools from your code, or connect them to an AI assistant such as Claude, ChatGPT or Cursor. Requests are processed in memory and not stored.

Just want to convert or edit a file? You do not need any of this. Use the free browser tools: no signup, no daily limit, and your files stay on your device.

Free trial limits: read this first

What you get
No keyCompute endpoints (text, JSON, CSV, hashing, dates, math, encoding, Korean tools and more): free under fair use, rate limited per IP.
File endpoints (PDF merge, split, rotate, watermark, metadata, extract, HTML or Markdown to PDF, PDF tables and text layout): 20 calls per day per IP.
AI endpoints (translate, summarize, OCR): 10 calls per day per IP.
Network endpoints (fetch a URL, DNS, WHOIS, SSL and similar): need a key.
Free key
email only, no card
1,000 credits per month, plus 20 file calls and 10 AI calls per day that cost nothing, counted per key. Credits per call: network 20, file call beyond the daily allowance 60, AI translate or summarize 50, AI OCR 100, AI quality "high" 150, AI with your own Claude or ChatGPT key 5. Compute endpoints use no credits.
When a limit runs outNo key: HTTP 429 with a Retry-After header. The daily count resets at 00:00 UTC.
With a key: HTTP 402 when this month's credits are used up. They reset at the start of the next month (UTC).
The JSON error says what happened and what you can do next.
Paid plansDev ($9 per month, 100,000 credits per month) and Business ($49 per month, 500,000 credits per month), billed monthly until you cancel, and one-time credit packs from $5. Payments are processed by Dodo Payments, our Merchant of Record. Checkout opens once Dodo Payments finishes reviewing our account; until then nothing is charged. Prices: API pricing. Manage or cancel a plan in the customer portal. Refunds: refund and cancellation policy.

Details: API pricing · Terms, section 4. AI clients that share an IP address can use up the anonymous daily limit sooner; a free key avoids that.

Start in one minute

A compute endpoint, no key needed:

curl -s -X POST https://toolsthatdontupload.com/api/uuid -H "Content-Type: application/json" -d '{}'

A file endpoint. The response headers show how many anonymous calls are left today:

curl -i -X POST https://toolsthatdontupload.com/api/pdf-metadata -F "file=@document.pdf"
# RateLimit-Limit: 20
# RateLimit-Remaining: 19

A network endpoint with a free key (get one with your email):

curl -s -X POST https://toolsthatdontupload.com/api/dns-lookup \
  -H "Content-Type: application/json" -H "X-API-Key: ttdu_free_..." \
  -d '{"domain":"example.com"}'

Connect the MCP server

Endpoint (Streamable HTTP): https://toolsthatdontupload.com/mcp. Three tools (search_tools, run_tool, list_categories) reach the whole catalog. MCP calls count against the same limits. Setup for Claude, Claude Code, Cursor, VS Code and ChatGPT: MCP setup. An offline bundle for Claude Desktop with 20 tools makes no network requests.

Response headers

HeaderWhenMeaning
RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (also sent as X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset)File and AI calls without a keyDaily anonymous allowance, what is left, and seconds until it resets
X-Free-Daily-Limit, X-Free-Daily-RemainingFile and AI calls with a key, inside the daily allowanceFree calls left today for this key
X-Credits-Used, X-Credits-Limit, X-Credits-Cost, X-Credits-RemainingCalls with a key that use creditsCredits used this month, monthly credits, cost of this call, monthly credits left
Retry-After429Seconds until the daily count resets
X-EgressEvery API responseExternal hosts contacted for this call ("none" for most tools)

Errors

StatusMeaningWhat to do
400Input is missing or invalid (for example not valid JSON, or a file endpoint called without multipart/form-data)Check the request against openapi.json
401A key is required (network tools, AI quality "high") or the key is invalidGet a free key and send it in X-API-Key
402This month's credits are used upWait for the monthly reset, or add a plan or credit pack on API pricing once checkout is open. Email us if you need more now
404Unknown or withdrawn endpointSee the current list in openapi.json
405Method not allowed, for example GET on an endpoint that needs POSTSend input as a POST body
413Request body too large (JSON up to 2 MiB, file uploads up to 15 MiB)Send a smaller file
422The file cannot be processed, for example an encrypted or damaged PDFRemove the password or use another file
429Anonymous daily limit reachedWait until 00:00 UTC (see Retry-After) or use a free key

401, 402 and 429 responses keep their usual fields and add developers_url plus a Link: <https://toolsthatdontupload.com/developers/#limits>; rel="help" header. 402 and 429 also include next_steps (English), next_steps_ko (Korean) and paid_plans. All of these headers can be read from browser JavaScript (CORS exposed).

Docs and machine-readable files

DocsAll guides in one placeAPI keysAdd your key to curl, Python, Claude, Cursor, VS Code, ChatGPTMCP setupConnect the MCP serverAI upgradeQuality "high" or your own Claude or ChatGPT key
FileWhat it is
openapi.jsonOpenAPI 3 spec of all REST endpoints
llms.txtShort summary for AI systems
llms-full.txtFull endpoint list
catalog.jsonTool catalog with counts and tiers
mcp.jsonMCP server discovery
ai-plugin.jsonChatGPT Actions manifest
rag-full.txtCombined RAG text
/api/healthStatus and counts (JSON)

Where your data goes

TierWhere it runs
GreenBrowser tools: in your browser, files are not uploaded
YellowMost API calls: Cloudflare Workers memory, request bodies not stored or logged by us
OrangeNetwork tools: our edge contacts the URL or domain you give, key required
BlueAI tools: input is sent to Cloudflare Workers AI (or to Anthropic or OpenAI with your own key)

More: Privacy Policy · Transparency · Status. Evaluating this for a company? See For business.