Server definition
- Hash
- sha256:e57625306cc8f305af16bcf940f7cb2978a2e95775d9c46eee98d65375a4d4db
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": "Receipts attest signed declarations, not independently observed HTTP exchanges. Public issuance costs 0.002 USDC when payments are enabled. Preserve event, idempotencyKey AND the original x402 payment payload across retries. A pending payment must not be replaced with a new authorization. EOA EIP-3009 wallets on the advertised network are supported. Start without paying: resources/read datoka-api://demo-receipt then verify_api_receipt with that JSON. Read datoka-api://integration for capture and recoverable purchase instructions. Smithery payment forwarding is not validated; direct HTTP purchase is supported.",
"tools": [
{
"description": "Return issuer public keys. Establish issuer trust independently before offline verification.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_api_public_keys",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"issuer": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"keys": {
"items": {
"additionalProperties": false,
"properties": {
"jwk": {
"additionalProperties": false,
"properties": {
"crv": {
"const": "Ed25519",
"type": "string"
},
"ext": {
"type": "boolean"
},
"key_ops": {
"items": {
"type": "string"
},
"type": "array"
},
"kty": {
"const": "OKP",
"type": "string"
},
"x": {
"type": "string"
}
},
"required": [
"kty",
"crv",
"x"
],
"type": "object"
},
"keyId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
}
},
"required": [
"keyId",
"jwk"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"issuer",
"keys"
],
"type": "object"
}
},
{
"description": "Buy a portable signed commitment to a declared API exchange when a recipient needs independently verifiable receipt integrity: response handoff, archived decision input, or change investigation. Costs 0.002 USDC per receipt via x402 when enabled; verification is free. A local log may suffice for disposable data. Requires caller-approved budget. Keep event, idempotency key and original payment unchanged on retry. Attests a client declaration, not provider origin, content truth or independent observation.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"event": {
"additionalProperties": false,
"properties": {
"apiId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"attestation": {
"const": "client_declared",
"type": "string"
},
"bodyEncoding": {
"const": "application_bytes",
"type": "string"
},
"completedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"exchangeId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"headerEncoding": {
"const": "jcs-selected-headers-v1",
"type": "string"
},
"method": {
"enum": [
"GET",
"HEAD",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"type": "string"
},
"requestBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application request bytes; null means no body, not an empty body."
},
"requestHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"responseBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application response bytes after HTTP decoding. Preserve those bytes; do not reserialize JSON."
},
"responseHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"startedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"status": {
"maximum": 599,
"minimum": 200,
"type": "integer"
},
"targetHash": {
"additionalProperties": false,
"description": "SHA-256 of the exact UTF-8 target URL, computed locally. Never invent a digest or send the URL itself.",
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"version": {
"const": "datoka.api.exchange.v1",
"type": "string"
}
},
"required": [
"version",
"attestation",
"apiId",
"exchangeId",
"method",
"status",
"startedAt",
"completedAt",
"targetHash",
"requestBodyHash",
"responseBodyHash",
"requestHeadersHash",
"responseHeadersHash",
"bodyEncoding",
"headerEncoding"
],
"type": "object"
},
"idempotencyKey": {
"description": "One stable key per purchase, saved before payment. Keep it, the event and original payment authorization unchanged on retries.",
"pattern": "^[\\x21-\\x7e]{16,200}$",
"type": "string"
}
},
"required": [
"event",
"idempotencyKey"
],
"type": "object"
},
"name": "issue_api_receipt",
"outputSchema": null
},
{
"description": "Free validation before buying a receipt. Supply an event built locally with the SDK from real captured bytes; never fabricate hashes. Returns the commitment without issuing a receipt or paying. Use when retaining verifiable evidence of an API response for a handoff or archive.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"event": {
"additionalProperties": false,
"properties": {
"apiId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"attestation": {
"const": "client_declared",
"type": "string"
},
"bodyEncoding": {
"const": "application_bytes",
"type": "string"
},
"completedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"exchangeId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"headerEncoding": {
"const": "jcs-selected-headers-v1",
"type": "string"
},
"method": {
"enum": [
"GET",
"HEAD",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"type": "string"
},
"requestBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application request bytes; null means no body, not an empty body."
},
"requestHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"responseBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application response bytes after HTTP decoding. Preserve those bytes; do not reserialize JSON."
},
"responseHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"startedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"status": {
"maximum": 599,
"minimum": 200,
"type": "integer"
},
"targetHash": {
"additionalProperties": false,
"description": "SHA-256 of the exact UTF-8 target URL, computed locally. Never invent a digest or send the URL itself.",
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"version": {
"const": "datoka.api.exchange.v1",
"type": "string"
}
},
"required": [
"version",
"attestation",
"apiId",
"exchangeId",
"method",
"status",
"startedAt",
"completedAt",
"targetHash",
"requestBodyHash",
"responseBodyHash",
"requestHeadersHash",
"responseHeadersHash",
"bodyEncoding",
"headerEncoding"
],
"type": "object"
}
},
"required": [
"event"
],
"type": "object"
},
"name": "prepare_api_exchange",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"chain": {
"type": "string"
},
"commitment": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"type": "string"
},
"encoding": {
"const": "jcs",
"type": "string"
}
},
"required": [
"algorithm",
"encoding",
"digest"
],
"type": "object"
},
"event": {
"additionalProperties": false,
"properties": {
"apiId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"attestation": {
"const": "client_declared",
"type": "string"
},
"bodyEncoding": {
"const": "application_bytes",
"type": "string"
},
"completedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"exchangeId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"headerEncoding": {
"const": "jcs-selected-headers-v1",
"type": "string"
},
"method": {
"enum": [
"GET",
"HEAD",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"type": "string"
},
"requestBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application request bytes; null means no body, not an empty body."
},
"requestHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"responseBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application response bytes after HTTP decoding. Preserve those bytes; do not reserialize JSON."
},
"responseHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"startedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"status": {
"maximum": 599,
"minimum": 200,
"type": "integer"
},
"targetHash": {
"additionalProperties": false,
"description": "SHA-256 of the exact UTF-8 target URL, computed locally. Never invent a digest or send the URL itself.",
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"version": {
"const": "datoka.api.exchange.v1",
"type": "string"
}
},
"required": [
"version",
"attestation",
"apiId",
"exchangeId",
"method",
"status",
"startedAt",
"completedAt",
"targetHash",
"requestBodyHash",
"responseBodyHash",
"requestHeadersHash",
"responseHeadersHash",
"bodyEncoding",
"headerEncoding"
],
"type": "object"
}
},
"required": [
"event",
"commitment",
"chain"
],
"type": "object"
}
},
{
"description": "Free signature and declaration verification. To try before buying, read datoka-api://demo-receipt or /demo/receipt.json and pass the returned JSON here. No wallet needed for public verification. Verifies issuer, scope and event commitment; compare original response bytes locally with the SDK or /verify/.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"event": {
"additionalProperties": false,
"properties": {
"apiId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"attestation": {
"const": "client_declared",
"type": "string"
},
"bodyEncoding": {
"const": "application_bytes",
"type": "string"
},
"completedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"exchangeId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"headerEncoding": {
"const": "jcs-selected-headers-v1",
"type": "string"
},
"method": {
"enum": [
"GET",
"HEAD",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"type": "string"
},
"requestBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application request bytes; null means no body, not an empty body."
},
"requestHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"responseBodyHash": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "SHA-256 of exact application response bytes after HTTP decoding. Preserve those bytes; do not reserialize JSON."
},
"responseHeadersHash": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"startedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"status": {
"maximum": 599,
"minimum": 200,
"type": "integer"
},
"targetHash": {
"additionalProperties": false,
"description": "SHA-256 of the exact UTF-8 target URL, computed locally. Never invent a digest or send the URL itself.",
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"algorithm",
"digest"
],
"type": "object"
},
"version": {
"const": "datoka.api.exchange.v1",
"type": "string"
}
},
"required": [
"version",
"attestation",
"apiId",
"exchangeId",
"method",
"status",
"startedAt",
"completedAt",
"targetHash",
"requestBodyHash",
"responseBodyHash",
"requestHeadersHash",
"responseHeadersHash",
"bodyEncoding",
"headerEncoding"
],
"type": "object"
},
"receipt": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "Ed25519",
"type": "string"
},
"body": {
"additionalProperties": false,
"properties": {
"id": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"issuedAt": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
"type": "string"
},
"issuer": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"keyId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"previous": {
"anyOf": [
{
"pattern": "^[a-f0-9]{64}$",
"type": "string"
},
{
"type": "null"
}
]
},
"request": {
"additionalProperties": false,
"properties": {
"chain": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"eventType": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"scope": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"subject": {
"additionalProperties": false,
"properties": {
"algorithm": {
"const": "sha256",
"type": "string"
},
"digest": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
},
"encoding": {
"enum": [
"jcs",
"bytes"
],
"type": "string"
}
},
"required": [
"algorithm",
"encoding",
"digest"
],
"type": "object"
}
},
"required": [
"scope",
"chain",
"eventType",
"subject"
],
"type": "object"
},
"sequence": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"version": {
"const": "datoka.receipt.v1",
"type": "string"
}
},
"required": [
"version",
"id",
"issuer",
"keyId",
"issuedAt",
"request",
"sequence",
"previous"
],
"type": "object"
},
"signature": {
"pattern": "^[A-Za-z0-9_-]{86}$",
"type": "string"
}
},
"required": [
"body",
"algorithm",
"signature"
],
"type": "object"
}
},
"required": [
"event",
"receipt"
],
"type": "object"
},
"name": "verify_api_receipt",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"attestation": {
"const": "client_declared",
"type": "string"
},
"exchangeId": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"receiptId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"scope": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
"type": "string"
},
"valid": {
"const": true,
"type": "boolean"
}
},
"required": [
"valid",
"receiptId",
"scope",
"apiId",
"exchangeId",
"attestation"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:e57625306cc8f305af16bcf940f7cb2978a2e95775d9c46eee98d65375a4d4db | sha256sum