{"name":"io.github.tersignhq/evidence","slug":"tersignhq-evidence","title":"Tersign Evidence","description":"The record layer for the machine age: counter-signed receipts and agent action records.","url":"https://mcp.market/server/tersignhq-evidence","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":34,"stars":1,"forks":0,"downloads_week":388,"last_push_at":"2026-10-27T10:56:04.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/tersignhq/tersign-js","website":"https://tersign.ai","version":"0.6.8","remotes":[],"packages":[{"registryType":"npm","identifier":"tersign","version":"0.6.8","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Optional: your own 0x-prefixed signing key. Unset or empty, the server uses the key in the macOS keychain (tersign-signer) or ~/.tersign/signer.key, and generates one there on first run. The key never leaves your machine. If your ledger account has a registered signing key, set that key here: the ledger rejects respondent dispute evidence signed by any other key.","format":"string","isSecret":true,"name":"TERSIGN_SELLER_KEY"},{"description":"Seller/issuer display name","format":"string","name":"TERSIGN_ISSUER_NAME"},{"description":"Seller jurisdiction (e.g. HK)","format":"string","name":"TERSIGN_ISSUER_JURISDICTION"},{"description":"Seller tax/business-registration id (optional)","format":"string","name":"TERSIGN_ISSUER_TAX_ID"},{"description":"Ledger base URL (optional). Needed by the dispute tools, and with the API key and seller id by record_refund and chained issue_receipt; record_disclosure defaults to https://tersign.ai","format":"string","name":"TERSIGN_LEDGER_URL"},{"description":"Ledger seller API key (optional). With TERSIGN_LEDGER_URL and TERSIGN_LEDGER_SELLER_ID it enables record_refund and chained issue_receipt; with TERSIGN_LEDGER_URL it authenticates respondent dispute evidence. record_disclosure needs no API key.","format":"string","isSecret":true,"name":"TERSIGN_LEDGER_API_KEY"},{"description":"Ledger seller id (optional). With TERSIGN_LEDGER_URL and TERSIGN_LEDGER_API_KEY it enables record_refund and chained issue_receipt.","format":"string","name":"TERSIGN_LEDGER_SELLER_ID"}]}],"tools":[{"name":"adjudicate_dispute","description":"Run deterministic triage on an open dispute and record the result. Triage applies fixed rules, stated here, to the dispute record:","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_dispute","description":"Fetch a dispute in full: its status, claim and evidence deadline, both sides' signed evidence references, and, once triage has run, the triage result (verdict: refund, uphold, or null when escalated), its rationale, the inputs the rules ran on, and the ledger signature over the result.","write_action":false,"price_micros":0,"input_schema":null},{"name":"issue_receipt","description":"Issue an x402 offer-receipt (EIP-712) plus a Tersign compliance record (returned as `compliance`; verify_compliance_record checks it) for a payment that has ALREADY settled; when a ledger is configured, the ledger counter-signs the receipt into your hash chain, while the compliance-fields record is not counter-signed and is bound to its receipt only by your own signature, which covers the receipt'","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_dispute","description":"Open an objective dispute against a counter-signed receipt as the PAYER (the configured key must be the receipt payer). Reasons: not_delivered, wrong_content, duplicate_charge.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_disclosure","description":"One-call disclosure evidence (EU AI Act Art 50 dialect): digests the disclosure text LOCALLY, signs an action record with your key, and the public ledger counter-signs it into your per-signer hash chain. It moves no money. No API key needed — the first call self-provisions a free signer-keyed account, except when your key is already registered to an API-key account (409) or the daily provisioning ","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_refund","description":"Log a refund against a receipt already on your chain, as the SELLER. The ledger stores it as a PENDING refund entry that references the original receipt digest; the entry is NOT counter-signed or appended to the hash chain, and it has no digest or sequence number of its own. Nothing is edited or deleted: the original receipt and its chain position stay exactly as they were.","write_action":true,"price_micros":0,"input_schema":null},{"name":"submit_dispute_evidence","description":"Submit signed evidence to an open dispute before its evidence deadline. Claimant evidence must be signed by the payer key; respondent evidence additionally requires the seller API key (the Tersign plugin's settings in Claude Code, or the TERSIGN_* environment variables).","write_action":true,"price_micros":0,"input_schema":null},{"name":"verify_compliance_record","description":"Verify ONE record type: the compliance record that issue_receipt returns beside a receipt (`compliance`: a ComplianceRecordV1 `record` plus its ComplianceAttestation `attestation`, EIP-712 domain \"compliance-fields\"), fully OFFLINE (no network, no API key, no account): recompute the record's canonical digest, check that the attestation's signed payload names that exact digest and the same receiptD","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_receipt","description":"Verify an x402 offer-receipt artifact, fully OFFLINE (no network, no API key, no account; checks no ledger or chain): recover the address whose key produced its EIP-712 signature over the six signed payload fields (version, network, resourceUrl, payer, issuedAt, transaction), and compute its canonical digest (the content address a ledger records it under).","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-10-30T06:00:48.105Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-30T06:00:48.008Z","components":{"code":{"score":25,"max":25,"notes":["71 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"tersign","version":"0.6.8","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-10-27T10:59:28.597Z","repositoryUrl":"git+https://github.com/tersignhq/tersign-js.git","weeklyDownloads":388}],"repo":{"found":true,"owner":"tersignhq","repo":"tersign-js","archived":false,"pushedAt":"2026-10-27T10:56:04Z","stars":1,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/302213996?v=4","ownerCreatedAt":"2026-07-10T16:40:08Z","license":"Apache-2.0"},"icon":{"url":"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%230E0E0E'/%3E%3Ccircle cx='16' cy='16' r='10.5' fill='none' stroke='%23ECECEA' stroke-width='1.6'/%3E%3Ccircle cx='16' cy='16' r='4.2' fill='%23ECECEA'/%3E%3C/svg%3E","source":"site"},"presence":{"stars":1,"forks":0,"downloadsWeek":388,"license":"Apache-2.0","lastPushAt":"2026-10-27T10:56:04.000Z","score":34}}}},"grade_history":[],"reviews":[]}