ReaderFunded · API

The index in your own tools

Two ways in, both free: a JSON API, and the same two things as an MCP server so an assistant can search the reader-funded web and look a site up. Send a User-Agent that says who you are; calls are never cached at the edge, so you always see the live ranking. Please link readerfunded.com where results are shown. The search needs no key; the site lookup does. A key is free: see keys.

Search

GET https://readerfunded.com/api/search?q=medieval+logistics
parameter
qthe words; operators as on the site: site:example.com, cat:history, after:2026-01-01, "a phrase", -word
langa two-letter language preferred first beside English (default en); all for no preference
cata site category: tech, science, history, food, health, art, music, film, games, sport, politics, news, finance, education, travel, comics, fiction, podcast
siteone domain
tday, week, month or year: pages published since
topresults, 1 to 50 (default 10)
sortrecent for newest first
{
  "query": "medieval logistics",
  "effective": "medieval logistics",
  "count": 10,
  "took_ms": 212,
  "results": [
    {
      "url": "https://acoup.blog/2022/07/15/collections-logistics-how-did-they-do-it-part-i-the-problem/",
      "title": "Collections: Logistics, How Did They Do It, Part I: The Problem",
      "domain": "acoup.blog",
      "snippet": "...",
      "published": "2022-07-15",
      "tier": "A",
      "paying": 1837,
      "paying_source": "patreon",
      "weight": 27.4
    }
  ]
}

tier: A, a published count of paying supporters; B, an estimated count; C, verified funding without a count. paying and paying_source come with tier A only: the count the platform publishes and which platform. weight is the site's standing in the rank, from those figures; the order of results is the ranking. published is null when the page carries no date. timed_out: true means the search ran past the time limit and results is empty; try fewer or rarer words. did_you_mean offers a spelling correction when one looks better.

A site

GET https://readerfunded.com/api/site/acoup.blog
X-Api-Key: ...
{
  "domain": "acoup.blog",
  "known": true,
  "category": "history",
  "lang": "en",
  "alive": true,
  "funded": true,
  "tier": "A",
  "weight": 27.4,
  "rank": 112,
  "of": 53104,
  "paying": 2825,
  "paying_source": "patreon",
  "revenue_yr": 96000,
  "revenue_source": "patreon",
  "funding": [
    { "platform": "patreon", "url": "https://www.patreon.com/acoup", "state": "verified", "since": "2026-08-18" }
  ]
}

A key is needed here (401 without one): the lookup answers the verified registry a domain at a time, and a caller taking it site by site should have a name. known: false is a domain the index has never met. funded: false is a domain in the index without two-way verified funding: it has no tier, rank or figures. The figures are what the platform publishes or what the index estimates; the source says which.

MCP server

Streamable HTTP at https://readerfunded.com/mcp, no session, no OAuth. Two tools: search_funded_web (query, language, category, site, time, top, recent) and site_info (domain; needs a key). Each answer carries the text for the model and the same JSON as the API as structured content. The same keys as the API, from the same file, and one allowance per key however the calls arrive.

In a coding assistant

claude mcp add --transport http readerfunded https://readerfunded.com/mcp
claude mcp add --transport http readerfunded https://readerfunded.com/mcp --header "X-Api-Key: ..."

Claude Desktop, Cursor, VS Code and the rest take the same URL in their MCP settings as a remote server of the streamable HTTP kind, with the key as a header where the client lets you set one. The second form is needed for site_info; the first searches without a key.

On the web: claude.ai, ChatGPT and the others

The web assistants take a remote MCP server as a URL and nothing more, so the key, when you have one, rides in the address:

https://readerfunded.com/mcp            the search alone, no key
https://readerfunded.com/mcp/<key>      the search and the site lookup

An address with a key in it is the key: give it to no one, and ask for a new key if it leaks. An address whose key the server does not know answers 401 rather than serving the search as a stranger, so a revoked or mistyped key is noticed. The server answers initialize, tools/list and tools/call; a raw call:

curl -s -X POST https://readerfunded.com/mcp -H "Content-Type: application/json" -H "Accept: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_funded_web","arguments":{"query":"sourdough starter","top":5}}}'

Keys

A key is free and instant: no account, no email. It opens the site lookup and gives your calls an allowance of their own, apart from everyone else behind your address.

Or from a terminal: curl -s -X POST https://readerfunded.com/api/key -d label=mytool. The key is shown once and kept nowhere you can ask again; a few keys an address a day. Send it as the X-Api-Key header, or on the web as the address /mcp/<key>. For a larger allowance than a key comes with, write with a line on what you are building.

Limits

about · method · blog