Prove what a web page said
Prove what a web page said: signed, timestamped evidence of a page's content, with a screenshot. Returns the rendered text and its SHA-256 hash, a screenshot and its hash, response headers, the serving IP and TLS certificate, all signed so anyone can verify it later without trusting us. Use for web evidence, archiving terms of service or prices, compliance records, citation checks and disputes. $0.25 per page; verification is free.
Answeringour last check, 2026-09-24
1 of 1checks answered this week
255 msmedian answer time
$0.25listed price per call
$0.25price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://attest.tollkit.dev/attest
| Category | Company and compliance |
|---|---|
| Provider host | attest.tollkit.dev |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 3 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.25 | 255 ms |
Example input (from the provider)
{
"body": {
"url": "https://fly.io/pricing"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"properties": {
"input": {
"properties": {
"body": {
"properties": {
"screenshot": {
"default": true,
"description": "Capture and hash a screenshot. On by default \u2014 an attestation without one is much weaker evidence. Turn it off for a faster, text-only record.",
"type": "boolean"
},
"url": {
"description": "Absolute https:// URL of the page to attest to. Anything a dispute could turn on: terms of service, a price, a published policy, a competitor's claim, a listing that may be edited later.",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"bodyType": {
"enum": [
"json"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "A signed, timestamped record of what a page contained. The `attestation` object is the evidence; `content` holds the bytes its hashes are over. Store the whole response \u2014 this service keeps no copy, by design, so that the record cannot be altered or withdrawn later.",
"properties": {
"attestation": {
"properties": {
"algorithm": {
"type": "string"
},
"claim": {
"description": "Exactly what was signed. Re-serialize this with sorted keys and no whitespace, keccak256 it, and you get `digest`.",
"properties": {
"attestedBy": {
"description": "Signer address, inside the signed payload.",
"type": "string"
},
"capturedAt": {
"description": "ISO 8601 render time.",
"type": "string"
},
"finalUrl": {
"description": "Where the browser ended up.",
"type": "string"
},
"headers": {
"description": "Lowercased, sorted; set-cookie removed.",
"type": "object"
},
"httpStatus": {
"type": "integer"
},
"redirected": {
"type": "boolean"
},
"remoteAddress": {
"description": "IP that served it.",
"type": [
"string",
"null"
]
},
"screenshotSha256": {
"type": [
"string",
"null"
]
},
"textLength": {
"type": "integer"
},
"textSha256": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"tlsIssuer": {
"type": [
"string",
"null"
]
},
"tlsSubject": {
"type": [
"string",
"null"
]
},
"tlsValidFrom": {
"type": [
"string",
"null"
]
},
"tlsValidTo": {
"type": [
"string",
"null"
]
},
"url": {
"description": "The URL as submitted.",
"type": "string"
},
"version": {
"type": "integer"
}
},
"type": "object"
},
"digest": {
"description": "keccak256 of the canonical claim.",
"type": "string"
},
"signature": {
"description": "EIP-191 personal_sign over the digest.",
"type": "string"
},
"signer": {
"type": "string"
}
},
"required": [
"claim",
"digest",
"signature",
"signer"
],
"type": "object"
},
"content": {
"properties": {
"screenshotBase64": {
"type": [
"string",
"null"
]
},
"screenshotMimeType": {
"type": [
"string",
"null"
]
},
"text": {
"type": "string"
},
"textTruncated": {
"type": "boolean"
}
},
"type": "object"
},
"verify