1. readfetch
  2. integrations

Integrations

Three ways in, no SDK to install

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.

MCP

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.

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":1,"method":"tools/list"}'
tools/call
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.

A tool definition for a model API

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:

tool
{
  "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.

Any HTTP client

Nothing to install, nothing to authenticate.

NeedWhat to useWhat you get back
one HTTP callPOST https://readfetch.com/v1/…JSON body; 402 first, 200 after the signature
the schema/openapi.jsonOpenAPI 3.1, one operation per endpoint
the prices/.well-known/x402-resources.jsonx402 records: resource, accepts, input schema, output example
the manifest/.well-known/service.jsonname, version, payment block, limits, endpoint list
routing for an agent/SKILL.mdintent → endpoint, and the recovery table
a liveness check/healthzfree, 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.

What does not exist

So you do not go looking for it.

No SDK

There is no npm, pip, cargo or gem package published for this service. An integration is a POST and one header.

No API key

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.