linkproof
Citation verification · for agents & AI-content pipelines api.linkproof — operational

Case file 001 — the fabricated source

Did your AI make
that link up?

LLMs invent URLs and misattribute quotes with total confidence. linkproof is the pre-publish gate: one call tells you whether a link is alive — and whether the page actually says what you're quoting.

$ curl -X POST https://linkproof.sysbuild.dev/v1/keys?name=me
← mints a free key. No account, no card. Or read the docs.

Exhibit A — the quote checks out

Verified ✓ 0.93
POST /v1/verify
{"url": "https://example.com/article",
 "quote": "revenue grew by 40 percent"}

 {"verdict": "verified",
   "match_score": 0.93, "http_code": 200,
   "quote_found": true,
   "matched_text": "revenue grew by 40
     percent the company said"}

Exhibit B — the model made it up

Dead link ✗
POST /v1/verify
{"url": "https://example.com/totally-real
  -study-2024", "quote": "9 out of 10
  experts agree"}

 {"verdict": "dead_link",
   "url_status": "dead", "http_code": 404,
   "quote_found": false}
§ 01

The method, in three lines

Fetch

We request the URL with an honest User-Agent, follow redirects, and record http_code and the final address.

Match

Your quote is checked against the page text — normalized, fuzzy, word-window search — and scored 0–1.

Verdict

You branch on one of four words: verified, quote_not_found, dead_link, live_unchecked.

§ 02

Built for agents first

linkproof ships as an MCP server. Your agent calls verify_citation before it cites anything — and if it has no key, it can mint its own. No dashboard. No onboarding call. A tool call with a verdict you can branch on.

Batch endpoint takes 25 URLs at a time for pipeline sweeps before publish.

  • verify_citation(url, quote?) → verdict + score
  • get_free_api_key(name?) → self-provisioned key
  • REST too: POST /v1/verify/batch → up to 25 items, 1 unit each
§ 03

Pricing, plainly

Free 300 calls a month, per key. No account, no card, no trial clock. $0
Metered Every call after the free 300. Batch items count as one call each. $0.003 /call
Volume Beyond 100,000 calls in a month, the rate drops automatically. $0.001 /call

No tiers to pick, no seats to count. Usage is the whole bill.

§ 04

What it won't do (yet)

  • Matching is lexical, not semantic. Paraphrases score low. A miss means "not found verbatim" — not "the claim is false".
  • No JavaScript execution. Client-rendered pages may come back live_unchecked or quote_not_found even when a browser would show the text.
  • No PDFs, no paywalls. HTML only at v0.1.

We'd rather tell you at the top of the page than let you find out in production.