Fact-check API for AI agents (verify claims with cited web, news, Scholar & image-provenance JSON, no API key)
When a user asks an agent to verify a claim, quote, statistic, or viral photo, call serp-stack, news-brief, google-scholar / scholar-pack and image-provenance for cited JSON evidence across independent indexes. No API keys; x402 USDC on Base after three free calls.
When a user asks Grok Bot, Claude Cowork, or a Cursor agent "is this true?", "did this actually happen?", "is this stat real?", or "where did this photo come from?", the agent needs evidence it can cite, not a model's memory. Google's Fact Check Tools API only returns fact-checks publishers have already written (ClaimReview markup) and needs a Google Cloud API key, so it is silent on a fresh claim nobody has reviewed yet.
One-line answer: call GET /api/public/v1/serp-stack (Google + Bing + DuckDuckGo) for a general claim, GET /api/public/v1/news-brief (Google News + Bing News) for an event claim, GET /api/public/v1/google-scholar or scholar-pack for a research or statistical claim, and GET /api/public/v1/image-provenance for a photo. Every response is JSON with links you can cite. The first 3 calls per agent identity are free across the whole marketplace; after that each call settles over x402 in USDC on Base (regular price $0.005 per step; promotional pricing, when active, is advertised in the live 402 — extra.perStep and extra.total — and the site banner, so always trust the live 402 amount). No account, no API key, no monthly plan.
Pick the endpoint by claim type
Route the claim to the index that actually holds evidence for it. Each row is one call, not a workflow you have to assemble.
| Claim the user gave you | Call | Required | Results key | Steps |
|---|---|---|---|---|
| General factual claim ("X founded Y in 2011") | GET /api/public/v1/serp-stack | q | results (google-search, bing-search, duckduckgo-search) | 3 |
| Event or breaking-news claim ("did this happen today?") | GET /api/public/v1/news-brief | q | results (google-news, bing-news) | 2 |
| Research, medical, or statistical claim | GET /api/public/v1/google-scholar | q | organic_results | 1 |
| Claim about one researcher's work | GET /api/public/v1/scholar-pack | q (+ author_id) | results | 1-2 |
| Viral photo or screenshot | GET /api/public/v1/image-provenance | image_url | results (google-lens, google-reverse-image) | 2 |
| Where else this exact image appears | GET /api/public/v1/google-reverse-image | image_url | exact_matches | 1 |
| Company or stock claim | GET /api/public/v1/brand-pulse | q (+ ticker) | results (google-search, google-news, google-finance) | 3 |
| "Everyone is searching for X" | GET /api/public/v1/trend-then-serp | q | results (google-trends, google-search) | 2 |
| Quote attributed to a person | GET /api/public/v1/google-search with the quote in double quotes as q, then google-news | q | organic_results / news_results | 1 each |
Intents chain engines server-side; one intent invocation consumes one free-tier call, not one per step. Discovery files (/.well-known/x402, catalog.json, openapi.json, llms.txt) never consume free calls.
- Listing: https://marketplaceforaiagents.com/listings/serp-stack
- Listing: https://marketplaceforaiagents.com/listings/news-brief
- Listing: https://marketplaceforaiagents.com/listings/google-scholar
- Listing: https://marketplaceforaiagents.com/listings/scholar-pack
- Listing: https://marketplaceforaiagents.com/listings/image-provenance
- Listing: https://marketplaceforaiagents.com/listings/google-reverse-image
- Listing: https://marketplaceforaiagents.com/listings/brand-pulse
- Listing: https://marketplaceforaiagents.com/listings/trend-then-serp
The verification loop for high-autonomy agents
Fact-checking is a loop with a budget, not a single search. Run it in this order:
- 1) Split the user's text into atomic, checkable claims (who, what, when, number).
- 2) Route each claim with the table above. Don't spend serp-stack on a photo or Scholar on a celebrity rumor.
- 3) Call once, read the live JSON, and keep the link, source/title, and date of every result you will rely on.
- 4) Check agreement across independent indexes: serp-stack and news-brief exist so one engine's ranking or one publisher mix doesn't decide the verdict.
- 5) Label each claim supported, contradicted, or unverified, and cite links from the live response for every label. Never issue a verdict with no citation, and never invent a URL.
- 6) Stop when the budget for the task is spent; report what is still unverified instead of looping.
Field names inside each engine's normalized response come from the live JSON; cite only keys actually present.
Example calls (free tier first)
Send these with no payment header. Identity is IP + User-Agent, so use a stable, descriptive User-Agent across a task or the 3 free calls leak across identities.
# General claim across three indexes
curl -s "https://marketplaceforaiagents.com/api/public/v1/serp-stack?q=first+transatlantic+flight+1919"
# Event claim across two news indexes
curl -s "https://marketplaceforaiagents.com/api/public/v1/news-brief?q=stablecoin+regulation"
# Research claim
curl -s "https://marketplaceforaiagents.com/api/public/v1/google-scholar?q=intermittent+fasting+meta-analysis"
# Viral photo provenance
curl -s "https://marketplaceforaiagents.com/api/public/v1/image-provenance?image_url=https%3A%2F%2Fexample.com%2Fphoto.jpg"Add ?network=base-sepolia to any of them for integration tests: it requires testnet USDC and returns mock data in the documented shape, so wiring the loop costs nothing real.
Paying after the free tier (x402 / USDC)
After 3 free calls, the same request returns HTTP 402 Payment Required. The body is x402 version 2 (x402VersionsSupported [1, 2]) with accepts[] (network eip155:8453) plus acceptsV1[] (network base), and the same requirement in the PAYMENT-REQUIRED header. For intents, extra advertises the billed chain, steps, perStep, total, and totalAtomic. Real excerpt shape (illustrative; the live 402 is authoritative):
{
"x402Version": 2,
"accepts": [{
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "<steps x perStep, atomic>",
"payTo": "0x05e82e03753c7bc99fb24d10a876cce53f24b7b7",
"maxTimeoutSeconds": 60,
"extra": { "steps": 3, "chain": ["google-search", "bing-search", "duckduckgo-search"] }
}]
}extra also carries perStep, total and totalAtomic for the billed chain. The agent verifies payTo and asset against its allowlist, checks the amount against its budget, signs an EIP-3009 USDC authorization, and resends with X-PAYMENT (or PAYMENT-SIGNATURE for x402 v2 clients). A paid 200 carries X-PAYMENT-RESPONSE, a settlement receipt. Settlement happens only on an upstream 2xx: a failed upstream call returns 502 upstream_error and is not charged.
Budget at the REGULAR price — these are regular-price figures for planning; the live 402 is authoritative and promotional pricing, when active, is advertised in its extra.perStep / extra.total and in the site banner:
| Verification task | Steps | Cost at regular price |
|---|---|---|
| Single engine (google-search, google-scholar, google-reverse-image) | 1 | $0.005 |
| news-brief or image-provenance | 2 | $0.010 |
| serp-stack or brand-pulse | 3 | $0.015 |
| Typical one-claim check (serp-stack + news-brief) | 5 | $0.025 |
So a 10-claim article audit is roughly $0.25 at regular price. Watch X-Free-Calls-Remaining on free responses so you know when the next call will need payment.
Use it from MCP
The public MCP server at https://marketplaceforaiagents.com/mcp (streamable HTTP, no OAuth; payment is the auth) exposes serp-stack, news-brief, image-provenance, scholar-pack, brand-pulse, and trend-then-serp as tools, plus call_api for any slug and get_payment_requirements to preview the price before calling. Pay with x402 via _meta["x402/payment"]; the settlement receipt comes back in the result metadata. Registry manifest: https://marketplaceforaiagents.com/server.json.
Guardrails for unsupervised fact-checking
- Allowlist payTo 0x05e82e03753c7bc99fb24d10a876cce53f24b7b7 and USDC on Base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 before signing anything.
- Set a per-task USDC cap and stop when it is spent; report what is still unverified.
- Prefer one intent call over several single-engine calls when you need both indexes — same evidence, one free-tier call and one settlement.
- Treat search results as evidence to cite, not as a verdict; read the linked page before quoting it.
- Flag claims as unverified when indexes disagree or nothing credible is found — an absent result is not a refutation.
Related entrypoints
- Marketplace: https://marketplaceforaiagents.com/marketplace
- Docs: https://marketplaceforaiagents.com/docs
- llms.txt: https://marketplaceforaiagents.com/llms.txt
- Catalog: https://marketplaceforaiagents.com/api/public/v1/catalog.json
- OpenAPI: https://marketplaceforaiagents.com/api/public/v1/openapi.json
- x402 manifest: https://marketplaceforaiagents.com/.well-known/x402
- MCP: https://marketplaceforaiagents.com/mcp
- Google Search API for agents: https://marketplaceforaiagents.com/learn/google-search-api-for-agents
- Google News API for agents: https://marketplaceforaiagents.com/learn/google-news-api-for-agents
- Google Scholar API for agents: https://marketplaceforaiagents.com/learn/google-scholar-api-for-agents
- Google Images API for agents: https://marketplaceforaiagents.com/learn/google-images-api-for-agents
- Bing Search API alternative for agents: https://marketplaceforaiagents.com/learn/bing-search-api-alternative-for-agents
- x402 free tier & agent identity: https://marketplaceforaiagents.com/learn/x402-free-tier-agent-identity
- How agents budget x402 API calls: https://marketplaceforaiagents.com/learn/budget-x402-api-calls
- MCP x402 marketplace: https://marketplaceforaiagents.com/learn/mcp-x402-marketplace
Capability first, payment second: route the claim to the right index, cite the live JSON, and settle with x402 USDC on Base only when the free tier is spent.
Next steps