io.github.tomjwxf/veritasacta-verify

Registre officiel Sécurité

Offline receipt verifier. Ed25519 signature verification without contacting any server.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package @veritasacta/verify
Claude Code
claude mcp add veritasacta-verify -- npx -y @veritasacta/verify@0.11.1
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "veritasacta-verify": {
            "command": "npx",
            "args": [
                "-y",
                "@veritasacta/verify@0.11.1"
            ]
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. @veritasacta/verify
  2. Verify an existing receipt
  3. Read the outcome correctly
  4. Browser and CLI
  5. Choose a guide
  6. Release integrity, not publisher authentication
  7. Release and standards status
  8. Development and maintainership

@veritasacta/verify

Check signed records yourself, without contacting the issuing service.

An offline CLI and a shared browser receipt engine. Supply a receipt and a public key obtained through a separate trusted channel, then apply your own trust policy. No account, proxy, signing daemon or onboarding step is required to verify a receipt.

Try the browser sample · Receipt specification · Conformance evidence

Verify an existing receipt

npm install -g @veritasacta/verify@0.11.0
verify receipt.json --key YOUR_INDEPENDENTLY_OBTAINED_PUBLIC_KEY

The key is 64 hexadecimal characters. Do not treat a key supplied with an unknown receipt as an independent trust pin. This verification path runs offline once the package is installed; installation and explicitly requested URL/JWKS lookups use the network.

An Acta receipt or audit bundle is never checked with a key taken from the file being checked. A receipt whose signed bytes carry a key (public_key, verification_key, verification_jwk) other than the one you supply fails with key_mismatch, and an envelope whose payload names an issuer_id other than its signature's kid fails with issuer_kid_mismatch. An audit bundle's own verification.signing_keys are used only if you pass --trust-bundle-keys, and a valid result then shows only that the receipts match keys in the same file. Gate records, macro track records, governed receipts, proof packs, context packs, repository evidence, standard files and run manifests carry their own key; checked without --key, the result is undecidable (exit 2). --allow-carried-key accepts it (exit 0) and says the signature proves nothing about who signed; --strict refuses it even then. Key windows apply to the issued_at the signature covers, and disclosures are checked against the commitments the signature covers; a disclosure that cannot be applied is not checked (exit 2).

To try the public example, download this receipt and use its demonstration-only key:

verify current-receipt.json --key ebb8cf3efc78717c50e7c438c0ad5498f8fa4e09607fea1e030ac129b5965225

A valid signature is not proof of claim truth, complete action coverage, signer authority or recipient acceptance. A signed timestamp is an issuer assertion, not an independent timestamp.

Read the outcome correctly

OutcomeMeaningNext step
Verified / exit 0The checks implemented for this profile passedApply identity, authority and reliance policies; read warnings and binding scope
Failed / exit 1A verification check failedCheck the expected key, signature, structure and reported error
Not checked / exit 2The verifier could not decideSupply missing material or use a supported format/algorithm

Exit 1 does not prove tampering. Supplying the wrong expected key can produce the same result. Some legacy JSON error categories use the name tampered for compatibility; it denotes failed verification, not a forensic conclusion. See error codes and the profile-specific output.

Browser and CLI

Both use src/detect.js, src/engines/ed25519-receipt.js and the same canonicalizer. The browser bundle is published in browser/, with a SHA-256 build manifest.

The browser accepts individual Ed25519 envelopes, v2 structured receipts, v1 flat receipts and historical website receipt_version: "1.0" receipts. That historical profile excluded public_key from signing and is explicitly labelled; it is not silently promoted to draft-03 conformance. All browser profiles require an external key. Unsupported formats are not checked, not reported as bad signatures.

Both entry points reject duplicate JSON members before parsing. The browser limits input to 1 MiB and depth 64; the CLI file parser allows 50 MiB and depth 128. Bundles and specialist profiles, including selective disclosure, VOPRF, Knowledge Units, Gate evidence and governed-run manifests, require the CLI. Profile success only establishes the checks named in that output, not universal completeness.

Choose a guide

TaskGuide
Verify bundles, chains, prompts or specialist artifactsAdvanced reference
See this CLI's results on TRACE's Acta fixturesTRACE fixture results
Issue receipts or configure a proxy/daemonIssuance and adapters
Understand threats and limitationsThreat model
Report a vulnerabilitySecurity policy
Inspect exact release changesChangelog
Run the tests or contribute a fixtureContributing
Understand project decisions and stewardshipGovernance

Release integrity, not publisher authentication

verify --self-check recomputes monitored source hashes against a bundled integrity commitment (the Sigil). It detects drift from that commitment. Someone replacing both the code and commitment can create a new internally consistent package.

It does not independently authenticate the publisher or establish a canonical release. Pin a reference obtained independently and inspect release provenance. --attest is a local, self-signed integrity statement; separately pin its key before relying on it.

Release and standards status

Verifier: 0.11.0. Status reviewed 2026-10-23.

Internet-Drafts are proposals, not adopted IETF standards or endorsements.

release-manifest.json is the source for version/status blocks in this README, the website, the organisation profile and draft index. node scripts/sync-public-metadata.mjs --check checks sibling repository copies. No draft is revised or resubmitted by this synchronization.

Development and maintainership

Maintained by Tom Farley / ScopeBlind. Independent verification does not imply independent organizational governance. Contributions should include reproducible fixtures and negative cases. The contribution guide covers a clean checkout, package checks and useful first contributions. See the public project evidence for reproducible interoperability results and their limits.

npm ci
npm test
npm run check:browser
npm run check:sigil
npm run test:conformance

Apache-2.0. See LICENSE and PATENTS.md for the actual terms. The Acta public record is a separate reference application. ScopeBlind's commercial applications are not prerequisites for verification.

Questions fréquentes

Qu'est-ce que io.github.tomjwxf/veritasacta-verify ?

Offline receipt verifier. Ed25519 signature verification without contacting any server.

Comment installer io.github.tomjwxf/veritasacta-verify ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add veritasacta-verify -- npx -y @veritasacta/verify@0.11.1. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.tomjwxf/veritasacta-verify ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

io.github.tomjwxf/veritasacta-verify est-il open source ?

Oui. Son code est sur GitHub sous licence Apache-2.0.

Qui maintient io.github.tomjwxf/veritasacta-verify ?

Il est publié par VeritasActa. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.