{"id":"acceptance-receipt","title":"Signed acceptance receipt: which deterministic tests a delivered output passed","description":"Runs your deterministic acceptance tests (equals, exists, absent, type, contains, length and number ranges, one-of, sha256, a JSON Schema subset) against a sub-agent's or vendor's JSON output at JSON Pointer paths, and returns per-test results plus a hub-signed receipt over the output hash, the tests hash and the results. Use it before paying for delegated work or releasing the next step. It certifies that these tests passed on these bytes, not that the output is semantically right.","roi":"Pay for delegated work against a receipt anyone can verify, for $0.005.","audience":"agent-infra","package":"agent-coordination-kit","channels":["x402","mcp"],"endpoint":{"method":"POST","url":"https://agents.writerslogic.com/api/v1/acceptance-receipt","path":"/api/v1/acceptance-receipt","contentType":"application/json"},"price":{"amount":"0.005","currency":"USDC","network":"base","perCall":true,"failedCallsCharged":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["output","tests"],"properties":{"output":{"description":"The delivered JSON (at most 262144 bytes as JCS)."},"tests":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["id","kind"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,64}$"},"kind":{"type":"string","enum":["equals","not-equals","exists","absent","type","contains","length-between","number-between","one-of","sha256","schema"]},"path":{"type":"string","maxLength":500,"description":"RFC 6901 JSON Pointer into output; empty or omitted = the whole output."},"value":{"description":"equals/not-equals/contains: the JSON value; type: a JSON type name; one-of: an array; sha256: lowercase hex; schema: a hub-subset JSON Schema."},"min":{"type":"number"},"max":{"type":"number"}}}},"label":{"type":"string","maxLength":200,"description":"Free text bound into the receipt, e.g. the task id."}}},"resultSchema":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: 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."},"passed":{"type":"integer"},"failed":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"path":{"type":"string"},"passed":{"type":"boolean"},"actual":{"description":"The inspected value, or its first 200 characters when longer."},"detail":{"type":"string"},"inconclusive":{"type":"boolean","description":"True when a schema pattern test ran out of its work budget; the call is then unknown, never pass."}}}},"outputHash":{"type":"string"},"testsHash":{"type":"string"},"receiptBody":{"type":"object"},"receipt":{"type":"object","description":"Standalone receipt: recompute digest from `receiptBody`, then recover the EIP-191 signer and compare with the DID document's attestation key. signature is null when the hub has no attestation key configured.","properties":{"digest":{"type":"string"},"scheme":{"type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]},"signer":{"anyOf":[{"type":"string"},{"type":"null"}]}}},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: 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."},"passed":{"type":"integer"},"failed":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"path":{"type":"string"},"passed":{"type":"boolean"},"actual":{"description":"The inspected value, or its first 200 characters when longer."},"detail":{"type":"string"},"inconclusive":{"type":"boolean","description":"True when a schema pattern test ran out of its work budget; the call is then unknown, never pass."}}}},"outputHash":{"type":"string"},"testsHash":{"type":"string"},"receiptBody":{"type":"object"},"receipt":{"type":"object","description":"Standalone receipt: recompute digest from `receiptBody`, then recover the EIP-191 signer and compare with the DID document's attestation key. signature is null when the hub has no attestation key configured.","properties":{"digest":{"type":"string"},"scheme":{"type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]},"signer":{"anyOf":[{"type":"string"},{"type":"null"}]}}},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]},"example":{"output":{"invoiceId":"INV-1009","total":1250,"lines":[{"sku":"A1","qty":2}]},"tests":[{"id":"has-id","kind":"exists","path":"/invoiceId"},{"id":"total-range","kind":"number-between","path":"/total","min":1,"max":5000},{"id":"one-line","kind":"length-between","path":"/lines","min":1,"max":50}],"label":"task-42"},"openapiOperation":{"operationId":"acceptance_receipt","summary":"Signed acceptance receipt: which deterministic tests a delivered output passed","description":"Runs your deterministic acceptance tests (equals, exists, absent, type, contains, length and number ranges, one-of, sha256, a JSON Schema subset) against a sub-agent's or vendor's JSON output at JSON Pointer paths, and returns per-test results plus a hub-signed receipt over the output hash, the tests hash and the results. Use it before paying for delegated work or releasing the next step. It certifies that these tests passed on these bytes, not that the output is semantically right.\n\nPrice: 0.005 USDC on Base (x402).","x-x402-price-usdc":"0.005","x-x402-amount":"5000","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"x-audience":"agent-infra","x-sample-url":"https://agents.writerslogic.com/api/v1/samples/acceptance-receipt","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["output","tests"],"properties":{"output":{"description":"The delivered JSON (at most 262144 bytes as JCS)."},"tests":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["id","kind"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,64}$"},"kind":{"type":"string","enum":["equals","not-equals","exists","absent","type","contains","length-between","number-between","one-of","sha256","schema"]},"path":{"type":"string","maxLength":500,"description":"RFC 6901 JSON Pointer into output; empty or omitted = the whole output."},"value":{"description":"equals/not-equals/contains: the JSON value; type: a JSON type name; one-of: an array; sha256: lowercase hex; schema: a hub-subset JSON Schema."},"min":{"type":"number"},"max":{"type":"number"}}}},"label":{"type":"string","maxLength":200,"description":"Free text bound into the receipt, e.g. the task id."}}},"example":{"output":{"invoiceId":"INV-1009","total":1250,"lines":[{"sku":"A1","qty":2}]},"tests":[{"id":"has-id","kind":"exists","path":"/invoiceId"},{"id":"total-range","kind":"number-between","path":"/total","min":1,"max":5000},{"id":"one-line","kind":"length-between","path":"/lines","min":1,"max":50}],"label":"task-42"}}}},"responses":{"200":{"description":"Paid result with provenance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: 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."},"passed":{"type":"integer"},"failed":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"path":{"type":"string"},"passed":{"type":"boolean"},"actual":{"description":"The inspected value, or its first 200 characters when longer."},"detail":{"type":"string"},"inconclusive":{"type":"boolean","description":"True when a schema pattern test ran out of its work budget; the call is then unknown, never pass."}}}},"outputHash":{"type":"string"},"testsHash":{"type":"string"},"receiptBody":{"type":"object"},"receipt":{"type":"object","description":"Standalone receipt: recompute digest from `receiptBody`, then recover the EIP-191 signer and compare with the DID document's attestation key. signature is null when the hub has no attestation key configured.","properties":{"digest":{"type":"string"},"scheme":{"type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]},"signer":{"anyOf":[{"type":"string"},{"type":"null"}]}}},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]}}}},"400":{"description":"Invalid request (no payment consumed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Invalid X-API-KEY","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"402":{"description":"Payment required or invalid","content":{"application/json":{"schema":{"type":"object","description":"x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}},"extensions":{"type":"object"}}}}}},"502":{"description":"Upstream failure; the payment is released or not settled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"links":{"docs":"https://agents.writerslogic.com/docs/acceptance-receipt/","docsJson":"https://agents.writerslogic.com/docs/acceptance-receipt.json","sample":"https://agents.writerslogic.com/api/v1/samples/acceptance-receipt","openapi":"https://agents.writerslogic.com/openapi.json","catalog":"https://agents.writerslogic.com/api/v1/catalog","verifyProvenance":"https://agents.writerslogic.com/api/v1/verify-provenance","index":"https://agents.writerslogic.com/docs/index.json"}}