Enables AI agents to produce cryptographically verifiable receipts of delegated work that can be verified offline.
Also known as Sequesign/mcp, mcp, @sequesign/mcp
- Stars
- 0
- Tools
- 8
- Downloads, 30 days
- —
- Latest version
- 0.4.1
- Last commit
- Aug 21, 2026
- License
- Apache-2.0
What is Sequesign MCP?
Sequesign enables AI agents to produce cryptographically verifiable receipts of delegated work that can be verified offline. It exposes 8 tools, such as sequesign_start_session, sequesign_record_action, sequesign_record_approval.
Summary generated from the project's README
About Sequesign MCP server
Sequesign provides a way for AI agents to generate cryptographically verifiable receipts of their delegated work. This server acts as a local-stdio wrapper for the Sequesign SDK, allowing agents to record actions, approvals, and counterparty attestations into a signed chain. Once a session is finalized, the resulting receipt can be verified offline to ensure the integrity and authenticity of the work performed.
Users can choose between direct mode, which uses local keys and a hosted witness for self-asserted identities, or managed mode, which utilizes a broker and registered agent identities. Managed mode requires a SEQUESIGN_API_KEY and a SEQUESIGN_AGENT_PRIVATE_KEY to bind the receipt to a specific registered identity. The server supports multi-party workflows where different agents or humans can attach deferred satellites to an already sealed receipt using tools like sequesign_approve_receipt.
Developers can deploy this as a Claude Desktop extension or via npm. The system ensures that signing keys never leave the local machine, maintaining security while providing a verifiable audit trail of agent activities.
What you can do with it
- 1Create verifiable work logsAn AI agent can record a sequence of actions into a signed chain to produce a receipt of its completed tasks.
- 2Perform multi-party approvalsA human reviewer can attach a signed approval to a receipt that has already been sealed by an agent.
- 3Verify agent identity and integrityA developer can verify a stored receipt offline to confirm it matches a registered agent identity and has not been tampered with.
Written from the project's README. Every use case is checked against a quote from it.
How to install Sequesign MCP
Formats verified 10 Nov 2026Install Sequesign MCP in Claude Code
$ claude mcp add --env SEQUESIGN_AGENT_PRIVATE_KEY=<YOUR_SEQUESIGN_AGENT_PRIVATE_KEY> --env SEQUESIGN_API_KEY=<YOUR_SEQUESIGN_API_KEY> --env SEQUESIGN_TEMPLATE_REGISTRY_TOKEN=<YOUR_SEQUESIGN_TEMPLATE_REGISTRY_TOKEN> mcp -- npx -y @sequesign/mcpInstall Sequesign MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@sequesign/mcp"
],
"env": {
"SEQUESIGN_AGENT_PRIVATE_KEY": "<YOUR_SEQUESIGN_AGENT_PRIVATE_KEY>",
"SEQUESIGN_API_KEY": "<YOUR_SEQUESIGN_API_KEY>",
"SEQUESIGN_TEMPLATE_REGISTRY_TOKEN": "<YOUR_SEQUESIGN_TEMPLATE_REGISTRY_TOKEN>"
}
}
}
}Install Sequesign MCP in VS Code
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sequesign/mcp"
],
"env": {
"SEQUESIGN_AGENT_PRIVATE_KEY": "<YOUR_SEQUESIGN_AGENT_PRIVATE_KEY>",
"SEQUESIGN_API_KEY": "<YOUR_SEQUESIGN_API_KEY>",
"SEQUESIGN_TEMPLATE_REGISTRY_TOKEN": "<YOUR_SEQUESIGN_TEMPLATE_REGISTRY_TOKEN>"
}
}
}
}Install Sequesign MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@sequesign/mcp"
],
"env": {
"SEQUESIGN_AGENT_PRIVATE_KEY": "<YOUR_SEQUESIGN_AGENT_PRIVATE_KEY>",
"SEQUESIGN_API_KEY": "<YOUR_SEQUESIGN_API_KEY>",
"SEQUESIGN_TEMPLATE_REGISTRY_TOKEN": "<YOUR_SEQUESIGN_TEMPLATE_REGISTRY_TOKEN>"
}
}
}
}Install Sequesign MCP in Codex
~/.codex/config.toml
[mcp_servers.mcp] command = "npx" args = ["-y", "@sequesign/mcp"] [mcp_servers.mcp.env] SEQUESIGN_AGENT_PRIVATE_KEY = "<YOUR_SEQUESIGN_AGENT_PRIVATE_KEY>" SEQUESIGN_API_KEY = "<YOUR_SEQUESIGN_API_KEY>" SEQUESIGN_TEMPLATE_REGISTRY_TOKEN = "<YOUR_SEQUESIGN_TEMPLATE_REGISTRY_TOKEN>"
Install Sequesign MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@sequesign/mcp"
],
"env": {
"SEQUESIGN_AGENT_PRIVATE_KEY": "<YOUR_SEQUESIGN_AGENT_PRIVATE_KEY>",
"SEQUESIGN_API_KEY": "<YOUR_SEQUESIGN_API_KEY>",
"SEQUESIGN_TEMPLATE_REGISTRY_TOKEN": "<YOUR_SEQUESIGN_TEMPLATE_REGISTRY_TOKEN>"
}
}
}
}Sequesign MCP tools 8
Detected from the READMEsequesign_start_sessionsequesign_record_actionsequesign_record_approvalsequesign_record_counterparty_attestationsequesign_approve_receiptsequesign_countersign_receiptsequesign_finalizesequesign_verify
| sequesign_start_session | — | |
| sequesign_record_action | — | |
| sequesign_record_approval | — | |
| sequesign_record_counterparty_attestation | — | |
| sequesign_approve_receipt | — | |
| sequesign_countersign_receipt | — | |
| sequesign_finalize | — | |
| sequesign_verify | — |
Configuration
SEQUESIGN_AGENT_PRIVATE_KEYSecretEd25519 PKCS#8 private-key PEM for the agent. In managed mode, the key registered to your API key. In direct mode, omit to mint an ephemeral key per session.
SEQUESIGN_API_KEYSecretSequesign write-class API key (from the dashboard). Required for managed mode; in direct mode it authenticates the hosted witness.
SEQUESIGN_TEMPLATE_REGISTRY_TOKENSecretRead-only bearer token for an account-scoped template registry (discovery only; never used in verification). Omit for a public registry.
SEQUESIGN_MODETransport: 'direct' (default; sign locally, an independent witness co-signs) or 'managed' (route through the Sequesign broker for a registered identity).
SEQUESIGN_PACKAGE_DIRDirectory where sealed receipt packages are written. Defaults to a temporary directory.
SEQUESIGN_TEMPLATE_REGISTRY_URLBase URL of a read-only dynamic template registry (e.g. https://dashboard-api.sequesign.com/v1/registry). When set, direct-mode sessions and the discovery tools resolve templates published there in addition to the bundled ones, falling back to bundled offline. Omit to use only the bundled templates.
| Name | Description | |
|---|---|---|
| SEQUESIGN_AGENT_PRIVATE_KEY | Ed25519 PKCS#8 private-key PEM for the agent. In managed mode, the key registered to your API key. In direct mode, omit to mint an ephemeral key per session. | Secret |
| SEQUESIGN_API_KEY | Sequesign write-class API key (from the dashboard). Required for managed mode; in direct mode it authenticates the hosted witness. | Secret |
| SEQUESIGN_TEMPLATE_REGISTRY_TOKEN | Read-only bearer token for an account-scoped template registry (discovery only; never used in verification). Omit for a public registry. | Secret |
| SEQUESIGN_MODE | Transport: 'direct' (default; sign locally, an independent witness co-signs) or 'managed' (route through the Sequesign broker for a registered identity). | |
| SEQUESIGN_PACKAGE_DIR | Directory where sealed receipt packages are written. Defaults to a temporary directory. | |
| SEQUESIGN_TEMPLATE_REGISTRY_URL | Base URL of a read-only dynamic template registry (e.g. https://dashboard-api.sequesign.com/v1/registry). When set, direct-mode sessions and the discovery tools resolve templates published there in addition to the bundled ones, falling back to bundled offline. Omit to use only the bundled templates. |
Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablesequesign/mcp is public and reachablegithub.com/sequesign/mcp ↗Pass
- Package names this repository as its source@sequesign/mcp names sequesign/mcp as sourcenpmjs.com/package/@sequesign/mcp ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for @sequesign/mcpnpmjs.com/package/@sequesign/mcp/v/0.4.1#provenance ↗Pass
- Open source license (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-08-21github.com/sequesign/mcp ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from @sequesign/mcpPass
- No critical advisory in the package or its dependencies102 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model8 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHub@sequesign/mcp
A Model Context Protocol server for Sequesign — let an MCP-capable agent produce a cryptographically verifiable receipt of its own delegated work, then verify it offline.
It is a thin local-stdio wrapper over @sequesign/sdk. The
agent's signing key never leaves the machine: in direct mode the SDK signs each
action locally and the hosted witness only co-signs a hash.
Tools
| Tool | What it does |
|---|---|
sequesign_start_session |
Open a recording session (one signed action chain). Returns a sessionId (the receipt id) used by every other tool. Pass a policyContext object to bind the receipt to a policy (reaches L3_POLICY_BOUND). Optional mode (direct/managed) overrides the server default per session. |
sequesign_record_action |
Append a signed action to the chain. evidence is hashed and signed. Returns the actionId. |
sequesign_record_approval |
Attach a locally signed approval for a recorded action (e.g. a human or agent reviewer signing off). |
sequesign_record_counterparty_attestation |
Attach a counterparty's signed confirmation of a recorded action (e.g. a vendor confirming an amount). The SDK derives the content binding from the attested action. |
sequesign_approve_receipt |
Attach an independently-witnessed approval to an already-sealed receipt (a deferred satellite). For a reviewer — human or another agent — signing off after the fact. The approver must be distinct from the recording agent. |
sequesign_countersign_receipt |
Attach an independently-witnessed counterparty confirmation to an already-sealed receipt (a deferred satellite), bound to a specific action. |
sequesign_finalize |
Seal + witness the receipt and run the SDK's own verification. Closes the session. |
sequesign_verify |
Verify a sealed receipt offline. Three modes: integrity self-check of the local package (default); third-party external check when you pass the witness's published keys; or pass receiptUrl to verify the broker-stored receipt (the authoritative copy carrying the registered identity), auto-fetching the published witness + registration anchors. |
Choosing a mode per session
The server default is SEQUESIGN_MODE, but sequesign_start_session accepts a
mode argument (direct or managed) so one running server can do both
without editing config. A mode: "managed" session still requires the managed
secrets (SEQUESIGN_API_KEY + SEQUESIGN_AGENT_PRIVATE_KEY); the call fails
fast if they're absent.
Verifying the stored (registered-identity) receipt
In managed mode the broker stamps the registered agent_identity_attestation
into the stored receipt, not the local envelope — so a local verify reads
self_asserted. Pass the receipt_url from finalize as receiptUrl to
sequesign_verify: it fetches the stored receipt (using SEQUESIGN_API_KEY),
verifies it against your local package, and auto-fetches the published witness
and registration anchors, so the result shows external trust and the
registered identity.
Multi-party / deferred attestation (after sealing)
sequesign_approve_receipt and sequesign_countersign_receipt attest to a
receipt that's already finalized, without modifying it. Each produces a
detached satellite that's bound to the sealed receipt by hash, independently
witnessed at its own time, and written to the package's attestations.jsonl
sidecar; the verifier folds a valid satellite into the same approval/counterparty
leg as an in-receipt one. They take the sealed packageDirectory (not a live
session), so a different party — even a different model on a different machine,
as long as it has the package — can approve or countersign later. This is the
basis for a multi-party flow: one agent records and seals the work, a second
party approves it, a third confirms it — three independent, timestamped
signatures on one receipt.
Binding to the registered (stored) receipt. By default a satellite binds to
the local receipt.json. In managed mode the broker-stored copy carries the
registered agent_identity_attestation (a different hash), so pass the
receipt_url as receiptUrl to approve_receipt / countersign_receipt:
the tool fetches the stored receipt (authenticated, origin-allowlisted) and
binds the satellite to it. A later sequesign_verify --receiptUrl then shows
the registered identity AND the folded approval/counterparty legs on one
receipt. Set the satellite's mode to match how the receipt was sealed.
Convergence note (cross-platform). The broker does not store satellites
— a sealed satellite is appended to the local package's attestations.jsonl.
So for parties on different machines/platforms to converge on one verifiable
receipt, the .sequesign package must travel between them (an orchestrator
moves it, each appends its satellite). Independent submission with server-side
satellite storage is a future broker capability.
Vouching (verified parties)
sequesign_record_approval and sequesign_record_counterparty_attestation
mint an ephemeral key when you don't pass one, so the leg verifies as
present_unverified. To get a present_verified (vouched) leg, enroll the
party's key with the platform first and pass both the enrolled private key PEM
and the returned identityProofRef. Then sequesign_verify flips the leg to
present_verified when given the platform's published registration keys.
Configuration
All configuration is via environment variables:
| Variable | Default | Notes |
|---|---|---|
SEQUESIGN_MODE |
direct |
Default transport: direct (local key, independent witness co-signs) or managed (broker). Overridable per session via the mode tool argument. |
SEQUESIGN_WITNESS_URL |
https://witness.sequesign.com |
Direct-mode witness. |
SEQUESIGN_BROKER_URL |
https://broker.sequesign.com |
Managed-mode broker. |
SEQUESIGN_DASHBOARD_API_URL |
https://dashboard-api.sequesign.com |
Source of the published registration keys for the receiptUrl verify path. |
SEQUESIGN_RECEIPT_LIBRARY_URL |
https://library.sequesign.com |
Receipt-store origin. The API key is forwarded only to this or the broker origin when fetching a receiptUrl; any other origin is rejected before the key is sent (key-exfiltration guard). |
SEQUESIGN_API_KEY |
— | Required in managed mode (write-class key). In direct mode it's passed to the witness too — the hosted witness authenticates the signing POST, so direct mode needs it unless you point SEQUESIGN_WITNESS_URL at a witness that allows unauthenticated signing. |
SEQUESIGN_TIER |
hosted |
Managed tier: hosted, hash-only, or ephemeral. |
SEQUESIGN_AGENT_PRIVATE_KEY |
— | Ed25519 PKCS#8 PEM for the agent key. In direct mode, if unset a fresh ephemeral key is minted per session (identity reads self_asserted). Required in managed mode — it must be the key your API key is registered to (the broker rejects any other agent key). |
SEQUESIGN_PACKAGE_DIR |
<tmpdir>/sequesign-mcp |
Where receipt packages are written. |
Sessions are held in memory for the life of the process. A
sessionIddoes not survive a server restart orsequesign_finalize.
Install
As a Claude Desktop Extension (.mcpb) — recommended
The one-click path: download sequesign.mcpb from the
GitHub releases and open it
with Claude Desktop (Settings → Extensions → install from file). Desktop renders
a setup form from the manifest's user_config; fill in:
| Field | Notes |
|---|---|
| Mode | direct (default) or managed. |
| API key | Your write-class key. Required for managed; in direct it authenticates the hosted witness. Stored in your OS keychain. |
| Agent private key (PEM) | Ed25519 PKCS#8 PEM. Required in managed (must match the key your API key is registered to); leave blank in direct to mint an ephemeral key per session. Stored in your OS keychain. |
| Receipt package directory | Where sealed packages are written. Blank → a temp directory. |
Secrets go to the OS keychain (never the manifest), and blank optional fields
fall back to their defaults. The bundle is self-contained — no npm/node
project setup required. Where do the API key and agent key come from? See
Getting your keys below.
Building the .mcpb from source:
npm run build:mcpb -w @sequesign/mcp
# → packages/sequesign-mcp/sequesign.mcpb (+ the staged mcpb-dist/ directory)
The build bundles the server and all dependencies into a single file with
esbuild and copies the protocol registry/schemas/profiles next to it, then packs
and validates via @anthropic-ai/mcpb. Attach the resulting .mcpb (and its
printed SHA-256) to a GitHub release.
Releasing to npm and the official MCP registry is automated — see PUBLISHING.md.
Via npm
For non-Desktop MCP clients (or if you prefer managing config yourself), install from npm and configure via environment variables — see Usage below.
Getting your keys (and which identity you get)
The two secrets — your API key and your agent private key — come from the Sequesign dashboard's Create-API-key flow. The key you use in managed mode must be the one registered to your API key.
Managed mode — registered identity
Create an API key in the dashboard (Settings → API keys → Create key). Registration is off by default, so you must opt in:
- Enable "Register this key with an agent public key" (the checkbox in the create dialog — it's unchecked by default; without it you get a plain API key and no private-key PEM, which is not enough for managed mode).
- Choose "Generate keypair (recommended)". The dashboard then generates an Ed25519 keypair in your browser (the private key never reaches our servers), registers the public key to your account (the platform signs a registration record bound to its fingerprint), and shows you the private-key PEM once — download it then.
- Copy the API key and that private-key PEM.
Paste both into the setup form (or set SEQUESIGN_API_KEY and
SEQUESIGN_AGENT_PRIVATE_KEY). Reuse them across installs and machines — you do
not make a new key each time.
Bring your own key (advanced). Instead of "Generate keypair", you can pick "Bring your own public key (advanced)" and paste the public PEM of a key you generated yourself (e.g. in an HSM). You hold the private key; the platform records the public half. Fully supported in managed mode.
The broker accepts only the agent key your API key is registered to — whether the dashboard generated it or you brought your own. An unregistered key (generated locally and never registered) is rejected (
agent_public_key_not_registered). That's the rule: the key must be on file against your API key, and that binding happens at API-key creation.
Verifying the broker-stored receipt then shows a registered agent identity
(see the receiptUrl verify path below).
Direct mode — self-asserted identity
Direct mode has no account and no registration. The agent key only proves continuity (the same signer produced these receipts), not a platform-vouched identity. Two choices:
- Leave the key blank → the server mints a fresh ephemeral key per session.
Good for quick, one-off, anonymous-but-verifiable receipts; each receipt has a
different
self_assertedkey. - Paste a fixed PEM → one stable identity reused across sessions. Any
Ed25519 PKCS#8 PEM works (e.g. the one the dashboard can generate for you, or
openssl genpkey -algorithm ed25519). It staysself_assertedunless that key is the one registered to yourSEQUESIGN_API_KEY: in that case the witness (which authenticates the same key) confirms the match and the receipt verifies as a registered identity — direct signing and a registered identity. (The witness also rejects signing under a key that isn't the one registered to your API key, so an API key can't mint receipts under an unregistered key.)
Usage
Add it to an MCP client (e.g. Claude Desktop) as a stdio server:
{
"mcpServers": {
"sequesign": {
"command": "npx",
"args": ["-y", "@sequesign/mcp"],
"env": {
"SEQUESIGN_MODE": "direct"
}
}
}
}
Or run it directly:
npm install -g @sequesign/mcp
sequesign-mcp
Example prompts
Drop these into any MCP-capable agent (Claude Desktop, etc.) once the server is configured. They're written the way you'd actually ask — the agent picks the tools.
1. Record and seal a single piece of work, then verify it.
Using Sequesign, open a session for task
q3-refund-reviewdelegated byops@acme.example, record an actionrefund_approvedwith the evidence{ "invoice": "INV-2231", "amount_usd": 480, "reason": "duplicate charge" }, then finalize the receipt and verify it. Tell me the package directory and whether it verified.
Exercises start_session → record_action → finalize → verify (the local
integrity self-check).
2. Multi-party: one agent records, two others attest after the fact.
The receipt at
<packageDirectory>is already sealed. Have Sequesign attach an approval to it ascfo@acme.example(a human reviewer), then attach a counterparty confirmation asvendor-globexfor therefund_approvedaction with purposerefund_amount_confirmation. Then verify the package and show me the approval and counterparty legs.
Exercises approve_receipt and countersign_receipt (deferred satellites bound
to an already-finalized receipt), then verify. A different party — even a
different model on another machine that has the package — can run these.
3. Verify the broker-stored, registered-identity copy (managed mode).
I finalized a managed-mode receipt; its
receipt_urlis<receipt_url>and the local package is at<packageDirectory>. Use Sequesign to verify the stored receipt against my package and tell me whether it shows external trust and a registered agent identity.
Exercises verify with receiptUrl — fetches the authoritative stored
envelope (carrying the registered agent_identity_attestation), auto-fetches
the published witness + registration anchors, and reports external trust plus
the registered identity.
Example flow
sequesign_start_session→{ taskId, delegatorId, policyContext }→ returnssessionId.sequesign_record_action→{ sessionId, actionType, evidence }→ returnsactionId.- (optional)
sequesign_record_counterparty_attestation→{ sessionId, counterpartyId, attestedActionId, attestationPurpose }. - (optional)
sequesign_record_approval→{ sessionId, approverId, approvedActionType, approvalContext }. sequesign_finalize→{ sessionId }→ returns the package directory + verification summary.sequesign_verify→{ packageDirectory }→ re-verify offline any time.
License
Apache-2.0
Sequesign MCP questions
How do I add Sequesign MCP to Claude Code?
Run claude mcp add --env SEQUESIGN_AGENT_PRIVATE_KEY=<YOUR_SEQUESIGN_AGENT_PRIVATE_KEY> --env SEQUESIGN_API_KEY=<YOUR_SEQUESIGN_API_KEY> --env SEQUESIGN_TEMPLATE_REGISTRY_TOKEN=<YOUR_SEQUESIGN_TEMPLATE_REGISTRY_TOKEN> mcp -- npx -y @sequesign/mcp in your terminal. Add --scope user to make it available in every project.
How do I add Sequesign MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does Sequesign MCP provide?
It exposes 8 tools, including sequesign_start_session, sequesign_record_action, sequesign_record_approval, sequesign_record_counterparty_attestation, sequesign_approve_receipt.
How can I verify a receipt offline?
You can use the sequesign_verify tool to perform an integrity self-check of the local package, a third-party external check, or verify a broker-stored receipt using a URL.
What is the difference between direct and managed modes?
In direct mode, the agent's signing key stays local and the witness only co-signs a hash. Managed mode requires an API key and a registered agent private key to use the Sequesign broker.
Can I add approvals to a receipt after it has been finalized?
Yes, you can use sequesign_approve_receipt or sequesign_countersign_receipt to attach independently-witnessed satellites to an already-sealed receipt without modifying it.