tersignhq-evidenceCAUTION
TypeScript SDK + MCP server for Tersign, the evidence layer for the agent economy — counter-signed EIP-712 receipts, hash-chained action and disclosure records, refunds, disputes, venue-ready evidence envelopes. npm: tersign
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Tersign is the evidence layer for the agent economy — a neutral, counter-signed, hash-chained ledger for agent commerce. Sellers sign EIP-712 receipts; Tersign chains them per seller and counter-signs every entry. When the dispute comes, the transcript is already sealed.
Venues rotate. The transcript endures.
Verify a Real Entry — Right Now
No account. No API key. This is the genesis receipt, seq 1 on the production chain. It is a self-signed demo: Tersign signed it as seller and named its own key as payer, so its EIP-712 payload signature (domain {name: "x402 receipt", version: "1", chainId: 1}, per the x402 offer-and-receipt extension) recovers to the payload's own payer, 0x36f82906859E5B0bd076069f8cdfAea355358b14. `/v1/genesis` serves the record with the recipe for each of its signatures.
npx tersign verify 0xe5874f1ffe87f0a6dd9eb157730f67b86ee4538b125fe30fcc4e165213dd3fc4
ledger: https://tersign.ai reports: found, counter-signed chain intact (seller tersign-first, seq 1, ...) — not checked locally VALID (ledger-reported) — https://tersign.ai reports the record and its counter-signed
5d9c76e2db1aOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add tersign --env TERSIGN_SELLER_KEY=${TERSIGN_SELLER_KEY} --env TERSIGN_LEDGER_API_KEY=${TERSIGN_LEDGER_API_KEY} -- npx -y [email protected]Exposed tools (9)
8 read · 1 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
adjudicate_dispute | read | |
get_dispute | read | |
issue_receipt | read | |
open_dispute | read | |
record_disclosure | read | |
record_refund | read | |
submit_dispute_evidence | write | |
verify_compliance_record | read | |
verify_receipt | read |
Trust audit
CAUTIONgrade B · trust 88/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (2 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (12)
middleware.ts
const secret = 'super-secret-argument-6f2a';
.sync-provenance
import type { SignedReceipt } from '../../src/types.js';ledgerUrl = `http://127.0.0.1:${(server.address() as AddressInfo).port}`;const LEDGER_URL = 'http://127.0.0.1:9';
{ TERSIGN_LEDGER_URL: 'http://127.0.0.1:9', TERSIGN_LEDGER_API_KEY: 'k', TERSIGN_LEDGER_SELLER_ID: 's' },const c = spawn(process.execPath, [cli(), GENESIS_DIGEST, '--ledger', `http://127.0.0.1:${port}`]);`VALID (ledger-reported) — http://127.0.0.1:${port} reports the record and its counter-signed chain; nothing was verified locally`,const binary = atob(value);
@modelcontextprotocol/sdk, viem, zod, @types/node, typescript, vitest
- **Standards** — the `compliance-fields` extension — a typed compliance-record schema plus four evaluator-side disqualifications (independence, completeness/existence, economic-phase separation, and
Gates applied: no_behavioural_pass.
5d9c76e2db1afull audit observations/trust-audit/mcp-server/tersignhq__tersign-js.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 5d9c76e2db1a | CAUTION | B | 88 | first audit |
Questions
What is the tersignhq-evidence MCP server?
TypeScript SDK + MCP server for Tersign, the evidence layer for the agent economy — counter-signed EIP-712 receipts, hash-chained action and disclosure records, refunds, disputes, venue-ready evidence envelopes. npm: tersign
What tools does tersignhq-evidence expose?
9 in total: 8 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is tersignhq-evidence safe to connect to an agent?
With care. The audit graded it B (88/100) and found 12 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does tersignhq-evidence need?
It reads TERSIGN_LEDGER_API_KEY and TERSIGN_SELLER_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does tersignhq-evidence run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as tersign at 0.6.3.
How current is this page?
The grade is for one exact copy of the source (5d9c76e2db1a), read on 2026-10-11. The repository is watched and re-audited when it changes.