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/RS256/HS256 over the JCS-canonical record
body excluding
signature(ES256 as rawr||sin 128 lowercase hex chars; RS256 as RSA PKCS#1 v1.5 SHA-256, lowercase hex of the raw signature). - 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
# Verify a Praxom SETTLEMENT PACK (GET /action-budgets/{id}/settlement-pack, 0.2.0):
# dispatched on spec == "pramiti-settlement-pack" — the manifest signature, the
# recomputed records digest, the segment count AND every entry must hold
pramiti-mcp-verify settlement-pack.json --pubkey es256_public.pem
# Verify an IETF draft-sharif-agent-audit-trail-02 session (POST /attestations/export,
# format=aat → JSONL; 0.3.0). `check` is the documented subcommand spelling; a .jsonl
# file, --aat, or an AAT-shaped first line dispatches to the draft's chain procedure:
# genesis nulls, prev_hash over each complete previous record, signatures, the
# pre-execution rule, nonce uniqueness, the close record's session hash.
pramiti-mcp-verify check agent-audit-trail.jsonl --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
# Verify a Praxom signed policy bundle (POST /api/v1/praxom/policy-bundles/export)
pramiti-mcp-verify policy_bundle.json --ed25519-pubkey exporter_ed25519.pub
# Run the record_conformance_v0 suite shipped in this package (includes RS256)
pramiti-mcp-verify --vectors
Exit code 0 when every record verifies, 1 otherwise; a JSON summary is
printed to stdout either way.
Absence is treated as tampering: an entry missing its backLinkPreimage,
its outcome record, or the resultCommitment of an executed/errored
outcome fails by default. The explicit opt-outs are
--allow-missing-backlink-preimage (records bound via an external SEP-2787
attestation), --allow-decision-only (a held escalate awaiting human
oversight — the only decision SEP-2828 permits without an outcome record; a
decision-only allow/block fails regardless), and
--allow-uncommitted-result (emitters that never bind the result payload —
only a refused outcome legitimately carries no resultCommitment, and a
present-but-inconsistent commitment fails regardless). Every skip is visibly
marked in the JSON summary, never silent.
Accepted bundle shapes: the Praxom export bundle
({"spec": "SEP-2828", "records": [...]}), a bare
{"decision": ..., "outcome": ...} pair, or a list of pairs.
A document whose format is praxom.policy_bundle/v1 is checked as a
signed policy bundle instead: the digest (SHA-256 over the RFC 8785
canonical bundle without digest and signature) and the signature over the
canonical bundle including its alg / key_id / key_class labels —
Ed25519 against the exporting deployment's base64url raw public key
(--ed25519-pubkey), HS256 only with the shared secret (--hs256-secret).
A failure names its reason: unknown_format, unsigned, digest_mismatch,
unsupported_alg, unknown_key_class, key_required or
signature_invalid.
ok: true means the document is unaltered and signed by the holder of the key
you supplied — integrity, not provenance. It is also profile-blind: the
product additionally refuses, under its production profile, an HS256 bundle, a
bundle whose key_class is dev, and any Ed25519 bundle whose key_id is not
among that deployment's configured trusted exporters. A bundle can therefore
verify here and still be refused on import, by design. This tool does not import
anything.
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.
Metadata
Release files for pramiti-mcp-verify 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pramiti_mcp_verify-0.3.0.tar.gz | 39.4 kB | With provenance | Details for pramiti_mcp_verify-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pramiti_mcp_verify-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for pramiti_mcp_verify-0.3.0-py3-none-any.whl |
Total release size: 73.7 kB
Release files / pramiti_mcp_verify-0.3.0.tar.gz
| Download URL | pramiti_mcp_verify-0.3.0.tar.gz |
|---|---|
| Size | 39.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
31142626d8905db27eb1cae073d6946b1634cce67cbbfedbe040e63535a0e571
|
|
BLAKE2b-256 checksum How to use checksums |
0b45c9d7f72a7847d683b7c0a859e2ab226c3ddde20e1eedf7fcdec667200e0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pramiti_mcp_verify-0.3.0-py3-none-any.whl
| Download URL | pramiti_mcp_verify-0.3.0-py3-none-any.whl |
|---|---|
| Size | 34.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
049681806951053e2ee5271197614c00d5536c2d4c0c6ca511eea31276300b9c
|
|
BLAKE2b-256 checksum How to use checksums |
5302ce76d22cbf3e73c99bd090d9d40ff6c07389f7d3fd94757cb7474861da35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logSecurity for pramiti-mcp-verify 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pramiti_mcp_verify-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.