SourceReceipt - Source Verification for AI Agents avatar

SourceReceipt - Source Verification for AI Agents

Pricing

from $10.00 / 1,000 source receipts

Go to Apify Store
SourceReceipt - Source Verification for AI Agents

SourceReceipt - Source Verification for AI Agents

Verify sources and citations before AI agents act. Check public URLs for required, contradictory, or stale evidence and return structured receipts with exact snippets, redirects, dates, and SHA-256 hashes.

Pricing

from $10.00 / 1,000 source receipts

Rating

0.0

(0)

Developer

Sassy Labs

Sassy Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

SourceReceipt is a deterministic source-verification and citation-checking utility for AI agents. Before an agent acts on a price, deadline, eligibility rule, policy, availability statement, or other time-sensitive claim, it checks the cited public URL against explicit machine-readable evidence requirements. It returns one compact receipt per URL: HTTP status, final URL, page title, declared content date, freshness, normalized content hash, exact-match snippets, contradiction matches, and a conservative verdict.

Each source check costs $0.01. No API key, browser session, proxy, or language model is required. SourceReceipt is not a search engine, a semantic fact checker, or a truth oracle: it reports exactly what the live source supports, contradicts, or cannot establish under the rules supplied by the caller.

When to use SourceReceipt

  • verify that a source or citation is still reachable before an AI agent acts;
  • check whether required wording, numbers, dates, or eligibility terms remain on the live page;
  • catch explicit contradiction terms such as closed, expired, discontinued, or no longer available;
  • enforce a content-freshness limit when the page declares a date;
  • create an auditable receipt with snippets, redirects, metadata, and a SHA-256 content hash for an agent workflow, API integration, or MCP-discovered tool.

To run it, add one to twenty public URLs, define the exact terms that must or must not appear, optionally set maxAgeDays, and start the Actor. One structured dataset item is returned for each checked source.

Why this is different

Generic crawlers return page content and leave the caller to decide whether it is current or actually contains the required evidence. SourceReceipt makes that last mile deterministic:

  • supported - the page is reachable, every explicit rule passes, and any requested freshness can be verified;
  • contradicted - a forbidden term such as closed, expired, or discontinued appears;
  • stale - the content rules pass but the declared date exceeds the caller's maximum age;
  • insufficient - a required term or requested date signal is missing;
  • unreachable - the URL, response, redirect chain, content type, or size could not be safely verified.

The caller supplies exact mustContainAll, mustContainAny, and mustNotContain terms. The free-form claim is a label for humans and is never silently interpreted by a model.

Example input

{
"targets": [
{
"url": "https://example.com/program-rules",
"label": "Program deadline",
"claim": "The program remains open and offers a $100,000 cash pool.",
"mustContainAll": ["$100,000"],
"mustContainAny": ["applications are open", "entries are open"],
"mustNotContain": ["closed", "expired", "cancelled"],
"maxAgeDays": 30
}
],
"timeoutSeconds": 20,
"maxResponseBytes": 1000000,
"snippetChars": 240,
"concurrency": 4
}

Example output

{
"targetIndex": 0,
"label": "Program deadline",
"requestedUrl": "https://example.com/program-rules",
"finalUrl": "https://example.com/program-rules",
"httpStatus": 200,
"verdict": "supported",
"freshnessStatus": "fresh",
"declaredDate": "2026-07-10T09:30:00.000Z",
"contentHashSha256": "...",
"responseBytes": 41238,
"ruleSummary": {
"allRequiredMatched": true,
"anyRequiredMatched": true,
"forbiddenMatched": false,
"missingAll": [],
"missingAny": [],
"matchedForbidden": []
},
"evidence": [
{
"kind": "required_all",
"term": "$100,000",
"snippet": "...verified cash pool is $100,000...",
"position": 148
}
]
}

Safety and privacy

  • SourceReceipt is an independent utility. It is not affiliated with, endorsed by, or sponsored by any website a user chooses to check.
  • Only public HTTP(S) pages are accepted.
  • URL credentials, localhost, internal hostnames, and private, reserved, link-local, multicast, or otherwise non-public IP addresses are rejected.
  • Every redirect destination is resolved and checked again.
  • Responses have hard time and byte limits.
  • Only supported text, HTML, XML, and JSON content is read.
  • Scripts are never executed. Script, style, template, SVG, and canvas content is removed before matching.
  • Output contains only short matching snippets, not a full copied page.
  • No API key, LLM call, browser session, customer credential, or personal data is required.

Marketplace economics

SourceReceipt uses Apify Store pay-per-event pricing. One explicit source-receipt event costs $0.01 per checked source ($10 per 1,000), with platform usage included in the price. Apify documents profit as 80% of event revenue minus platform costs, so the pre-cost creator share is $0.008 per receipt. A low-priced synthetic apify-actor-start event costs $0.00005 per run. apify-default-dataset-item is not configured; the runtime fails closed if a second result event could double charge a receipt.

The Actor uses no browser, proxy, or paid model, defaults to 256 MB, and is capped at 512 MB. The private owner benchmark below establishes the measured cost boundary; it is not customer demand or revenue evidence.

SourceReceipt runs with limited permissions and Standby disabled. The account has completed the payout eligibility gate. The one owner benchmark remains cost evidence, not demand or revenue evidence.

Local verification

npm ci
npm run verify
npm run preflight
npx --yes apify-cli@1.7.1 validate-schema
npm run demo
npm run benchmark

npm run demo performs one read-only request to https://example.com/ and prints the resulting receipt. Unit tests use injected responses and do not depend on live websites.

Local PPE boundary test

The following uses Apify's documented local PPE test mode, where each test event is modeled at $1. A three-target run with a $2 cap must fetch, emit, and log exactly two receipts:

$env:ACTOR_TEST_PAY_PER_EVENT = "true"
$env:ACTOR_USE_CHARGING_LOG_DATASET = "true"
$env:ACTOR_MAX_TOTAL_CHARGE_USD = "2"
npx --yes apify-cli@1.7.1 run --purge --input-file demo/ppe-input.json

The verified 16 July 2026 run produced two default-dataset items and two source-receipt charging-log items. The third target was omitted before its network request, proving the charge cap bounds work as well as output.

Local live cost preflight

npm run benchmark performs three bounded runs across ten varied public pages and writes the full evidence to var/source-receipt/local-benchmark.json. The 16 July 2026 preflight measured a 388 ms median wall time per ten receipts, 25.8 receipts/second median throughput, and 161 MB maximum RSS. Eight pages were supported and two conservatively returned unreachable (one oversized response and one page with no extractable server text).

Using current documented Bronze rates, 256 MB memory, decoded response bytes with a 25% transfer safety factor, a two-times runtime multiplier, storage operations, and the five-second synthetic-start compute credit, the worst modeled platform cost was $0.0000227 per receipt. That conservative model is now bracketed by the measured private-cloud result below.

Private cloud cost evidence

On 16 July 2026, one private owner run used the 256 MB configuration and finished in 6.06 seconds. It returned all ten schema-compatible receipts: eight supported and two unreachable, matching the local benchmark's conservative outcomes. The run processed 621,794 response bytes, consumed 0.000410069 compute units, and reported $0.000188695 total platform usage, or $0.00001887 per receipt.

Against the $0.008 pre-cost creator share, that measured usage leaves about $0.007981 per receipt before maintenance time and payout effects, a 99.76% unit margin on the creator share. This clears the private cost/output gate. It does not establish willingness to pay, a paying customer, or revenue.

Marketplace evidence, not revenue evidence

Public Apify Store data checked on 16 July 2026 showed substantial existing agent demand for web inputs: the official RAG Web Browser reported about 27,000 users in the preceding 30 days and the official Website Content Crawler about 8,000. Apify documents native Store discovery, pay-per-event billing, an 80% creator share before platform costs, and automatic eligibility for agentic payments when a limited-permission PPE Actor meets its rules.

That is evidence for the distribution surface, not proof that SourceReceipt will sell. The experiment is successful only after paid runs from users other than the owner produce verified positive net revenue.

Maintenance boundary

Dynamic, client-rendered pages may expose too little server HTML. SourceReceipt returns insufficient with a warning rather than adding a costly browser tier or pretending the content was observed. A browser-backed tier should be added only if paid usage proves the need.