GARPedia

/examples/srs-receipt

Reading an SRS receipt

Here is the artifact; here is how to read it; here is how to check it.

This page shows one real SRS signed-receipt: a public conformance vector copied byte-for-byte from arcs-srs, not a fictional example. Below it, a plain-language reading aid over the fields the receipt actually carries, and the real arcs-verify command syntax for independently checking it. This page is read-only. It does not run arcs-verify and does not claim any verification result. A receipt is an artifact, not a verdict.

The reading aid never replaces the artifact. The JSON is authoritative; the reading below is a convenience for a human reader.

1. The artifact

The JSON receipt

The JSON receipt is the artifact. ARCS owns the SRS envelope, its schema, its named conformance profiles, and its public vector set. This one is a valid, admitted-disposition vector from the srs.signed_receipt.v0.1 set.

srs-receipt.json
{
  "actor_ref": "actor:sha256:5e884898da28047151d0e56f8dc62927",
  "argument_digest": "sha256:83b7f8e6a1a2d366f0b3d6e87f6dbe78f67c9df6f6e52f4344d881cde935b27d",
  "artifact_classes_covered": [
    "tool_call_admission"
  ],
  "artifact_classes_excluded": [
    "raw_prompt",
    "raw_output",
    "raw_tool_arguments",
    "raw_tool_result"
  ],
  "attestation_limits": [
    "The receipt attests only to governance conditions at the named admission boundary."
  ],
  "boundary_id": "boundary:test:fastmcp",
  "boundary_type": "mcp_tool_call",
  "disposition": "admitted",
  "extensions": {
    "mcp": {
      "binding_version": "fastmcp.tool_result.v1"
    }
  },
  "issued_at": "2026-07-11T20:00:00Z",
  "issuer_id": "issuer:vcp:test",
  "logical_call_id": "call-0001",
  "policy_pack_id": "policy:test:mcp",
  "policy_pack_version": "2026.07.11",
  "profile_id": "srs.mcp.sdk_enforcement",
  "profile_version": "v0.1",
  "protocol_binding": "mcp",
  "receipt_id": "urn:srs:receipt:admission:0001",
  "receipt_kind": "admission",
  "receipt_signature": {
    "algorithm": "Ed25519",
    "canonicalization": "RFC8785-JCS",
    "key_id": "issuer.vcp.test/receipt-signing/2026-01",
    "signature": "bpUHi6dYI0xsF7gR3yOGp151kfE_2kk_3GjTbpny3V5UzoOYVS4Y_UJQzQi1TbdTyr9PMVBloQVkMbcogYDwBg"
  },
  "receipt_type": "sdk_enforcement",
  "receipt_version": "srs.core.v5.1",
  "requested_tool_name": "records.lookup",
  "retention_class_applied": "hash_only",
  "runtime_instance_id": "runtime:test:001",
  "subject_ref": "tool-call:call-0001",
  "tool_resolution_status": "not_observed"
}

The receipt's subject_ref is tool-call:call-0001, an MCP tool-call boundary reference, not a GARPedia record. This receipt does not point at any record on this site.

2. Where it came from

Fixture provenance

The JSON above is a committed, repo-native copy. This page does not fetch it from the arcs-srs repository at build or run time.

Source repository
thelaplage/arcs-srs
Source commit
9c3800c233507bd0cb375932ff62b1b78f8f3e17
Source path
vectors/signed-receipt-v0.1/valid/admission-admitted.json
Source SHA-256
sha256:1beb77bc038cab46622a188276e56b85e2fbc5a5138217a6c64ccb2113c8181a
Copied fixture path
public/garpedia/examples/srs-receipt/admission-admitted.json
Copied fixture SHA-256
sha256:1beb77bc038cab46622a188276e56b85e2fbc5a5138217a6c64ccb2113c8181a

3. How to read it

Plain-language reading

Every row below is a field the receipt actually carries. This reading aid adds no field the JSON does not already have, and it claims nothing the JSON does not say.

receipt_versionsrs.core.v5.1
Which frozen SRS envelope version this receipt was issued against. ARCS Verify checks this against its own pinned envelope schema.
profile_idsrs.mcp.sdk_enforcement
The named conformance profile this receipt claims to satisfy. Profile conformance is reported separately from generic envelope validity.
profile_versionv0.1
The version of the named profile above.
protocol_bindingmcp
Which receipt-emitter/runtime binding produced this receipt. MCP is the first supported binding; other bindings would carry a different value here.
boundary_typemcp_tool_call
The kind of boundary this receipt was issued at — here, an MCP tool call. The event is that governance conditions were checked at that boundary.
receipt_kindadmission
What kind of receipt this is. An admission receipt records an admission decision made before any governed call could proceed. It does not establish that the handler actually ran.
dispositionadmitted
The recorded outcome at the boundary. Admitted means the checked governance conditions were satisfied at issuance — it is not a claim that the underlying tool call was correct, safe, or true.
artifact_classes_covered["tool_call_admission"]
Which artifact classes this receipt actually attests to. Only classes named here are covered by this receipt.
artifact_classes_excluded["raw_prompt","raw_output","raw_tool_arguments","raw_tool_result"]
Which raw content classes this receipt explicitly does not carry or attest to. A receipt can reference and hash raw prompts, outputs, and tool payloads without embedding them.
attestation_limits["The receipt attests only to governance conditions at the named admission boundary."]
The receipt's own stated scope limit, carried as data rather than left implicit. This receipt attests only to governance conditions at the named admission boundary.
receipt_signature.algorithmEd25519
The signature algorithm over the canonicalized receipt bytes. This page does not verify the signature; that is ARCS Verify's job.
receipt_signature.key_idissuer.vcp.test/receipt-signing/2026-01
The signing key identifier. Whether this key is trusted for this issuer is a separate, verifier-side question answered by a trust bundle, not by this page.

4. How to check it — the verify command

The verify command

Independent verification is owned by ARCS Verify, a separate tool. It reads a serialized receipt, a serialized trust bundle, and a pinned schema, and recomputes every property from those bytes. This page shows its real command syntax as reference; it does not run the command and reports no result.

shell
arcs-verify \
  admission-admitted.json \
  --keyring issuer-keys.json \
  --profile srs.mcp.sdk_enforcement.v0.1

What running it would check

  • schema_digest — the pinned SRS envelope schema file matches its frozen SHA-256.
  • envelope — the receipt validates against the pinned SRS envelope JSON Schema.
  • profile — the receipt satisfies the named profile (srs.mcp.sdk_enforcement.v0.1).
  • raw_content_exclusion — the receipt carries references and digests only, no raw governed content.
  • signature_valid — the Ed25519 signature over the canonicalized receipt verifies and the version binding matches the profile.
  • issuer_key_resolved / issuer_key_trusted — the signature's key_id resolves in the supplied trust bundle and is marked trusted for this issuer.
  • attestation_limits_present — attestation_limits is present and non-empty.
  • chain_status — reported separately; not_applicable for a standalone receipt like this one.

What it would not check

  • Whether the underlying tool call was correct, safe, or should have been admitted.
  • Whether requested_tool_name or any other business fact is true.
  • Whether the issuing runtime or policy pack was itself correctly configured.
  • Anything about a chain of artifacts — chain_status stays not_applicable for a single receipt.

This page does not run arcs-verify and reports no pass/fail result. A reader who wants to check this fixture would need their own arcs-verify install and a trust bundle naming the signing key above (key_id issuer.vcp.test/receipt-signing/2026-01); the arcs-srs public vector set publishes a matching test trust bundle at trust/issuer-keys.json for exactly that purpose.

What this example does not claim

The boundary is the point of the example, so it is stated plainly. GARPedia projects and explains this example; it is not the authority for it.