Standalone offline verifier for SEP-2828 signed execution records (MCP decision/outcome pairs)
Project description
pramiti-mcp-verify
Standalone, offline verifier for SEP-2828 signed execution records — the paired decision/outcome records a governing MCP server or proxy emits for every tool call (modelcontextprotocol#2828).
Verifies, with no vendor dependency (rfc8785 + cryptography only):
- Signatures — detached ES256/HS256 over the JCS-canonical record body
excluding
signature(ES256 as rawr||sin 128 lowercase hex chars). - Instance binding —
backLink.attestationDigestrecomputation against the SEP-2787 attestation, or against a named, versioned fallback projection (tools_call_params_plus_meta_authorization_binding_v1,praxom_payload_hash_binding_v1). - Pairing — Check A (shared
backLink) + Check B (the outcome'sdecisionDigestover the FULL signed decision record). - Consistency — enum validity; a
blockdecision paired with anexecutedoutcome is rejected as a contradiction. - Result commitments —
ArgsProjectionself-consistency (projectionDigestover the projection bytes).
Usage
# Verify a Praxom export bundle (POST /attestations/export, format=sep2828)
pramiti-mcp-verify bundle.json --pubkey es256_public.pem
# Run a record_conformance_v0-layout vector suite against this implementation
pramiti-mcp-verify --vectors tests/vectors/sep2828/record_conformance_v0
Exit code 0 when every record verifies, 1 otherwise; a JSON summary is
printed to stdout either way.
Accepted bundle shapes: the Praxom export bundle
({"spec": "SEP-2828", "records": [...]}), a bare
{"decision": ..., "outcome": ...} pair, or a list of pairs.
Not the flight-recorder verifier
pramiti-fr verify checks the vendor-embedded flight-recorder store.
pramiti-mcp-verify (this tool) checks SEP-2828 wire records from an
enterprise proxy. Different stores, different audiences, deliberately
separate CLIs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pramiti_mcp_verify-0.1.0.tar.gz.
File metadata
- Download URL: pramiti_mcp_verify-0.1.0.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e3ac5e8c83ad933c4c0f3cadc9f4368e4420e8168e266a7372125f5444e5ed6
|
|
| MD5 |
e460044280ba6da2299efed5a52f7eed
|
|
| BLAKE2b-256 |
62e39683c619635f1d45de53ce6121f35134fdd2b31a583d515d08980facc3d7
|
File details
Details for the file pramiti_mcp_verify-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pramiti_mcp_verify-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cf34708183e6eb607cd287c660ce6f2a2b8deb4bbfe80b8ea531febe0b5aaae
|
|
| MD5 |
3363ad356674ada106cbd95c61b9f499
|
|
| BLAKE2b-256 |
9b6c9387cf3ac84fb1da3287178b6c4e578754750619630357d0ceefa39f00ba
|