LLMs answer with confidence. We answer with receipts.
Submit an agent's factual premises, or a question. Each one is adjudicated against named live public sources under a hard deadline, and back comes ONE Ed25519-signed answer object carrying the complete evidence chain: the exact calls made, the exact source readings, a per-premise verdict computed by a published deterministic rule, and a confidence whose formula ships inside the payload. No model sits anywhere in the loop. If it cannot evidence something, it says so, in a signed refusal that states exactly what it does cover.
full signed receipt (JSON)
CI for facts.
The gate an agent runs before it acts, and the evidence bundle it leaves behind.
Say what must hold
Structured checks name a live tool, arguments, and an expectation: semver_gte, between, fresh_within_s and friends. A closed set of pure operators, published verbatim. Questions compile to checks deterministically, or get refused.
Against named sources
Every check fans out concurrently under a hard deadline and is graded against the live reading, each returned as a canonical fact with its source, licence, observation time and honest confidence. Missing evidence degrades the answer, it never blocks it.
Verifiable offline, years later
Verdict, per-check evidence, the exact calls to reproduce it, and the confidence formula, all inside one Ed25519-signed object. Any holder can timestamp it with any public RFC 3161 authority. Strip nothing: the disclaimer travels inside the signature.
Its silence is as trustworthy as its speech.
supported means every required premise held against the live sources. contradicted means at least one failed, and the receipt shows exactly which reading refuted it. insufficient_evidence means required evidence was missing, so it refuses to call it supported. And outside its coverage it returns a signed refusal: a verifiable, timestamped record that Dynamic Feed declined to guess. Every answer it gives inherits credibility from the answers it declines.
Structured checks reach every live tool.
Question mode covers a small, honest set of families. Checks mode reaches all live tools directly, with result shapes published so paths are authored against real structures, not guesses.
curl -s -X POST https://dynamicfeed.ai/v1/answer -H 'content-type: application/json' -d '{
"checks": [
{"id":"py","tool":"software_version","args":{"product":"python"},
"expect":{"path":"results.0.latest_version","op":"semver_gte","value":"3.12"}},
{"id":"quake","tool":"earthquakes","args":{"min_magnitude":8.5,"period":"day"},
"expect":{"path":"count","op":"eq","value":0}},
{"id":"yield","tool":"treasury_yields","args":{},"observe":true}
]}'
Tool catalog: /tools.json · result shapes for authoring paths: /tool-shapes.json · evaluation semantics: answer-eval/1. Verify any receipt with the open verifiers: pip install dynamicfeed-verify, or npm and crates.io equivalents.
Evidence, not truth.
A receipt is advisory evidence: a signed, timestamped record of what the named public sources reported at issue time. It is not a certification and not a guarantee the underlying claim is true in the world. The signature proves integrity, not truth; verified is reserved for two or more independent sources agreeing while fresh. Records are tamper-evident, not tamper-proof. Zero personal data; a neutral witness, never on the money path.
Get your first receipt.
Keyless, one POST. The evaluator is published, the verifiers are open source, and every receipt can be checked without trusting us.