No SDK
There is no npm, pip, cargo or gem package published for this service. An integration is a POST and one header.
Integrations
The service is plain HTTP: a POST with a JSON body, a 402 with a quote, a retry with one header. MCP, a tool definition for a model API, or a call from your own loop — all three reach the same 14 endpoints at https://readfetch.com.
Streamable HTTP, JSON-RPC 2.0, one tool per endpoint.
POST https://readfetch.com/mcp speaks the Model Context Protocol over streamable HTTP. Tools are named readfetch_<endpoint> — readfetch_text, readfetch_scrape, readfetch_probe — and tools/list is generated from the same catalog as the REST surface, so the two cannot drift.
Tool calls ride the same 402 flow: an unpaid call comes back as isError with the quote in structuredContent, and the retry carries PAYMENT-SIGNATURE on the MCP HTTP request. The tool list is also a static document at /.well-known/mcp.json.
curl -s https://readfetch.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://readfetch.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"readfetch_text",
"arguments":{"url":"https://example.com"}}}'
Point an MCP host at https://readfetch.com/mcp with the streamable HTTP transport. There is no stdio binary to install and no server package to add.
OpenAI and Anthropic both take a JSON Schema for the arguments.
The parameters are the endpoint's input_schema from /openapi.json, verbatim. Copy it rather than retype it, because the two failure modes differ: an unknown field at the top level is ignored, so a typo there fails quietly, while a typo inside advanced, auth or a cookie is rejected with 422. This is the object for /v1/text with the optional fields trimmed to the one that changes cost:
{
"name": "readfetch_text",
"description": "Read a public URL and return its main text as Markdown, with title, author and date. No browser needed.",
"parameters": {
"type": "object",
"required": ["url"],
"properties": {
"url": { "type": "string", "format": "uri" }
}
}
}
Anthropic calls the same object input_schema; OpenAI calls it parameters inside a function. Everything else — the 402, the signature, the receipt — happens in the HTTP layer your tool executes against, not in the definition.
Nothing to install, nothing to authenticate.
| Need | What to use | What you get back |
|---|---|---|
| one HTTP call | POST https://readfetch.com/v1/… | JSON body; 402 first, 200 after the signature |
| the schema | /openapi.json | OpenAPI 3.1, one operation per endpoint |
| the prices | /.well-known/x402-resources.json | x402 records: resource, accepts, input schema, output example |
| the manifest | /.well-known/service.json | name, version, payment block, limits, endpoint list |
| routing for an agent | /SKILL.md | intent → endpoint, and the recovery table |
| a liveness check | /healthz | free, no payment |
No wallet library, no signer, no account. The only library a caller needs is the one that signs an EIP-3009 authorization for the amount in the quote — everything before that is a bare POST.
So you do not go looking for it.
There is no npm, pip, cargo or gem package published for this service. An integration is a POST and one header.
No key to rotate, no dashboard to sign into, no account to create. The wallet that signs the quote is the only credential, and only on a paid call.