Check that every claim in an evidence bundle has enough independent, fresh, quote-verified support

$0.005 USDC per call · Agent infrastructure · POST /api/v1/evidence-bundle-check · Id evidence-bundle-check

Checks a bundle an agent assembled before answering: each claim must be backed by at least N evidence items from distinct source groups, each item's quote must actually appear in the supplied text (with offsets), publication dates must be within the caller's maximum age relative to a caller-supplied asOf, and duplicates are collapsed. Does not fetch URLs or judge whether a source is reliable or whether the quote supports the claim; source groups come from the caller or an approximate host reduction.

What you get

Catches unsupported or single-source claims before they are asserted. 100 claims and 300 evidence items per $0.005 call.

Call it

Send the JSON body below to https://agents.writerslogic.com/api/v1/evidence-bundle-check. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.

curl -i -X POST https://agents.writerslogic.com/api/v1/evidence-bundle-check \
  -H 'content-type: application/json' \
  -d '{"claims":[{"id":"c1","text":"Revenue grew 12%.","minEvidence":2}],"evidence":[{"id":"e1","claimIds":["c1"],"url":"https://www.example.com/q3","publishedAt":"2026-10-01","text":"Q3 revenue grew 12% year over year.","quote":"revenue grew 12%"},{"id":"e2","claimIds":["c1"],"url":"https://news.example.org/a","publishedAt":"2026-10-02","text":"Analysts noted that revenue grew 12% in the quarter.","quote":"revenue grew 12%"}],"asOf":"2026-11-04","maxAgeDays":90}'

Input

FieldTypeRequiredDescription
claimsarray<object>; max 100 itemsyesClaims to support.
evidencearray<object>; max 300 itemsyesUp to 300 items; 300000 characters of text in total.
asOfstring; length 0..40noReference instant (ISO 8601) for age checks; required with maxAgeDays. The check never reads the clock.
maxAgeDaysinteger; 0..36500noEvidence published longer ago than this (relative to asOf) is stale.
requireQuotesbooleannoEvidence without a verifiable quote does not count as support. Default true.

Example request body

{
  "claims": [
    {
      "id": "c1",
      "text": "Revenue grew 12%.",
      "minEvidence": 2
    }
  ],
  "evidence": [
    {
      "id": "e1",
      "claimIds": [
        "c1"
      ],
      "url": "https://www.example.com/q3",
      "publishedAt": "2026-10-01",
      "text": "Q3 revenue grew 12% year over year.",
      "quote": "revenue grew 12%"
    },
    {
      "id": "e2",
      "claimIds": [
        "c1"
      ],
      "url": "https://news.example.org/a",
      "publishedAt": "2026-10-02",
      "text": "Analysts noted that revenue grew 12% in the quarter.",
      "quote": "revenue grew 12%"
    }
  ],
  "asOf": "2026-11-04",
  "maxAgeDays": 90
}

Result

The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.

FieldTypeRequiredDescription
statusstring; one of "pass", "fail", "unknown", "unsupported"nopass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass.
claimsarray<object>; max 100 itemsno
evidencearray<object>; max 300 itemsno
witnessesarray<object>no
versionsobjectnoEvery semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile).
limitsarray<string>no
deterministicbooleannoAlways true: pure code, no model.

Pay and connect

Available through: x402 (USDC on Base), MCP. MCP clients reach it through the context-evidence-kit package.

Machine-readable