Atlas / MCP servers / tersignhq / tersignhq-evidence

tersignhq-evidenceCAUTION

mcp/tersignhq/tersign-js

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

Verdict
CAUTION
Grade
B
Trust score
88 /100
Exposed tools
9 8r · 1w · 0d
Transport
stdio
License
Apache-2.0
Stars
1
01

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
Read from source at commit 5d9c76e2db1aOBSERVED · 2026-10-11
02

Connect

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-code (npm)
claude mcp add tersign --env TERSIGN_SELLER_KEY=${TERSIGN_SELLER_KEY} --env TERSIGN_LEDGER_API_KEY=${TERSIGN_LEDGER_API_KEY} -- npx -y [email protected]
03

Exposed tools (9)

8 read · 1 write · 0 destructive.

ToolRiskDescription
adjudicate_disputeread
get_disputeread
issue_receiptread
open_disputeread
record_disclosureread
record_refundread
submit_dispute_evidencewrite
verify_compliance_recordread
verify_receiptread
04

Trust audit

CAUTIONgrade B · trust 88/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (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)

MEDIUMInventory / provenance · inv.binary · CWE-1104
src/idempotency/middleware.ts
middleware.ts
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/intercept.test.ts:171
const secret = 'super-secret-argument-6f2a';
LOWInventory / provenance · inv.hidden_file · CWE-1104
.sync-provenance
.sync-provenance
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/fixtures/vectors.ts:3
import type { SignedReceipt } from '../../src/types.js';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/entrypoint-placeholders.test.ts:141
ledgerUrl = `http://127.0.0.1:${(server.address() as AddressInfo).port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/keystore.test.ts:220
const LEDGER_URL = 'http://127.0.0.1:9';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/listing.test.ts:221
{ TERSIGN_LEDGER_URL: 'http://127.0.0.1:9', TERSIGN_LEDGER_API_KEY: 'k', TERSIGN_LEDGER_SELLER_ID: 's' },
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/verify-cli.test.ts:424
const c = spawn(process.execPath, [cli(), GENESIS_DIGEST, '--ledger', `http://127.0.0.1:${port}`]);
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/verify-cli.test.ts:437
`VALID (ledger-reported) — http://127.0.0.1:${port} reports the record and its counter-signed chain; nothing was verified locally`,
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/adapter/x402.ts:41
const binary = atob(value);
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, viem, zod, @types/node, typescript, vitest
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:166
- **Standards** — the `compliance-fields` extension — a typed compliance-record schema plus four evaluator-side disqualifications (independence, completeness/existence, economic-phase separation, and
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 5d9c76e2db1afull audit observations/trust-audit/mcp-server/tersignhq__tersign-js.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-115d9c76e2db1aCAUTIONB88first audit
06

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.

Advertisement