For agents & their developers

One endpoint.
Evidence you can use.

Plain HTTP, JSON, and x402. No account or customer API key. The same service powers the website and API.

Send a verification request

Supply a claim, question, subject, or URL. An optional context field can specify a timeframe or location. Use one of quick, standard, or deep. Standard is the default.

curl -i https://evidenceforagents.com/api/v1/verify   -H 'Content-Type: application/json'   -H 'Idempotency-Key: YOUR-RANDOM-UUID'   --data '{
    "claim": "Does this company currently provide this service?",
    "url": "https://example.com",
    "tier": "standard"
  }'

The first call returns HTTP 402 and a PAYMENT-REQUIRED header. No research or payment happens yet. Keep the same random Idempotency-Key for every retry of this request, including its paid retry. Treat that key as a secret recovery credential.

Subject-only requests ask whether the subject is currently operating or available. URL-only requests assess verifiable information on that page. For a precise check, include an explicit claim or question. Do not provide both claim and question.

Pay the quoted amount

The service accepts exact USDC payments through x402 v2. Live payments use Base; test payments use Base Sepolia. Discover the current prices and network at /api/v1/pricing. An unavailable service returns 503 before requesting a payment.

Use the official x402 client with your own wallet signer. Always apply a budget policy and inspect the expected network, recipient, asset and amount before allowing a payment. Never provide your private key to Evidence for Agents.

import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";

// signer is your agent's wallet, kept entirely on your side.
const client = new x402Client().register(
  "eip155:8453", new ExactEvmScheme(signer)
);
// Register a payment policy matching /api/v1/pricing and your budget.
const paidFetch = wrapFetchWithPayment(fetch, client);
const key = crypto.randomUUID(); // store before the request
const response = await paidFetch(
  "https://evidenceforagents.com/api/v1/verify", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Idempotency-Key": key
    },
    body: JSON.stringify({ claim: "Your claim", tier: "quick" })
  }
);
const pack = await response.json();

Allow at least 180 seconds for the paid request. The server verifies your authorization, performs research, durably stores a draft, then settles once. Provider errors before settlement are not charged. A completed result of insufficient evidence is charged: the fee covers research, not a promised verdict.

Read the Evidence Pack

HTTP 200 returns the pack at the top level, plus access metadata and a settlement receipt. Download the complete fictional example or inspect it visually.

FieldMeaning
statussupported, contradicted, mixed, or insufficient_evidence
sourcesURLs, publisher domains, timestamps, stance, excerpt type and source-text digest
factsExtracted interpretations, each linked to a source_id and exact quote
conclusionSystem interpretation with the fact IDs it relies on
contradictionsOpposing evidence and the relevant fact IDs
confidenceHeuristic evidence strength (0–1), not probability or a guarantee
limitationsCoverage gaps, source freshness and other uncertainty
researchProvider, model, tier, search queries and explicit demo flag
access.access_tokenPrivate capability token for retrieval; returned by POST only
GET /api/v1/requests/{request_id}
Authorization: Bearer <access.access_token>

A 202 response means the original request is still processing or its settlement is being reconciled. Poll its status URL every five seconds using the access token. Do not pay again. A link to a human-readable result may carry the token in its URL fragment; anyone with that link can read the result.

Handle errors and retries

{ "error": {
  "code": "invalid_request",
  "message": "Provide a claim, question, subject, or URL."
} }
400 / 413 / 415Correct input, reduce body below 12 KiB, or use application/json.
402Decode PAYMENT-REQUIRED; use an exact, fresh 300-second EIP-3009 authorization.
404Result is missing or the bearer token is invalid.
409Key/body mismatch or payment nonce already used. Never reuse a payment for a different request.
429Wait for Retry-After before retrying.
502Terminal research failure or confirmed unsettled expiry. Start a new request; no confirmed payment was settled for the failed request.
500 / connection lossRetry the identical POST with the SAME Idempotency-Key to recover before attempting a new payment.
503Service configuration, providers, or storage unavailable. Retry later.

Concurrent duplicates share one stored request. The authorization nonce can only be reserved once. If settlement times out, the result remains private until the matching on-chain USDC transfer is confirmed. Recovery never submits a second transfer. Abandoned research becomes failed after three minutes; polling does not start another research job.

How evidence is assessed

Search and page extraction use Tavily. A separate Anthropic adapter extracts relevant statements and classifies their relationship to the request. The service then verifies every quotation against the retrieved text, assigns source and fact IDs, and derives the final status from the evidence relationships and claim coverage.

Source passages are data, never instructions. The model is instructed to favor primary sources, preserve dates and qualifications, and avoid treating a source’s assertion as proof. Invalid citations or quotations fail the request before settlement. Supported and contradicted require coverage of the full request. Both kinds of evidence produce mixed; missing coverage produces insufficient evidence.

These checks establish traceability, not truth. Models can misinterpret passages. Publishers can be wrong. Providers may cache pages, omit sources, or return only search excerpts. A retrieval timestamp is not a publication timestamp. Current operations and availability often need evidence beyond a website. Read all limitations before using a conclusion.

The confidence score is deliberately bounded: incomplete evidence scores zero; mixed evidence scores 0.35; one-sided evidence uses publisher counts with a cap of 0.85, or 0.55 when only search excerpts are available. Publisher domains are only a rough diversity proxy and may share ownership. This score has not been statistically calibrated.

Privacy, storage, and access

Do not submit secrets, personal records, or confidential materials. The claim, context, and retrieved text are sent to configured research providers. Stored packs include your submitted subject and claim, quoted passages, provenance and payment receipt. Full page text is processed transiently; its digest and cited excerpts are retained. Payment signatures and wallet private keys are never stored.

Results are not publicly indexed. Retrieval requires a private bearer token. Keep both the result link and Idempotency-Key secret. MVP records persist until the operator deletes them; do not use this service for data with a required deletion deadline. On-chain payment records are public and cannot be deleted by this service.

Only public HTTP(S) URLs are accepted. The application does not fetch arbitrary URLs directly; external extraction goes through the fixed research provider. The service has no accounts or subscription billing.