An agent can cite eight of twelve sources. The useful part is knowing which four it cannot

A reading list goes in, citable records come out — for two thirds of it. The remaining third is refused by the publishers to any server that asks. What makes the endpoint useful is not the two thirds; it is that it names the third precisely enough to act on.

3 August 2026 · 12 sources, one pass · raw data

The task

An agent is handed a list of addresses and asked to prepare them for a bibliography. For each one it calls extract_citation on this site's MCP endpoint, which reads whatever citation data the page declares about itself and returns a structured record with RIS and BibTeX.

8/12
done by the agent
4
handed back
1.09 s
per source

What came back for the eight

Complete records — authors, year, container, identifier — each with an RIS entry that imports into Citavi, Zotero or EndNote without retyping. A journal article from Springer with five authors, a PLOS article, a PubMed Central paper, an arXiv preprint, a Wikipedia entry, a Zenodo record, and a bare DOI that resolved through the registration agency because the publisher's page refused.

Two of the eight carry no author, because the page declares none. That is the page's gap, not the reader's — and it is reported as an empty field rather than filled in with a guess. A bibliography entry that looks complete and is wrong costs more than one with a visible hole.

What was handed back, and why

SourceReason
www.mdpi.comhttp-403
www.sciencedirect.comhttp-403
www.ssoar.infobot wall served to server-side readers
eur-lex.europa.eunear-empty response to server-side readers

Every one of these was re-fetched from an unrelated network to check the block is real rather than a fault at this end. All four are genuine.

Why the refusal is the valuable half

A citation tool that returns something for every URL sounds better and is worse. Fed a bot wall, it produces a reference whose title reads Making sure you're not a bot! — formatted, complete-looking, and worthless. We have measured that happening to an established service on two of eighteen random sources.

A refusal, by contrast, is actionable. The agent can tell its user exactly four addresses to open in a browser, where a capture extension reaches what no server can: the page is loaded in the reader's own session, with the reader's own access. The division of labour is not a workaround — it follows from who is allowed to see what.

What this does not settle

Trying it

curl -X POST https://provinglab.dev/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
       "name":"extract_citation",
       "arguments":{"url":"https://arxiv.org/abs/1706.03762"}}}'

No key, no account, no rate limit worth mentioning. A record comes back with a source field saying where the details were read, and a warning field that is empty when there is nothing to warn about.