Skip to main content
Glama
README.md
# clearsigned-mcp

An MCP server that gives any agent a `verify_claim` tool: calibrated claim verification against
live web evidence, paid per call over x402 ($0.05 USDC on Base), with an Ed25519-signed receipt
the server verifies offline against Clearsigned's pinned published key before your agent sees it.

## Tools

| Tool | Paid? | What it returns |
|---|---|---|
| `verify_claim(claim, evidence?)` | $0.05 USDC | `SUPPORTED` / `REFUTED` / `UNVERIFIABLE`, calibrated confidence (a measured realized rate), per-source stances, receipt id, settlement tx, `signature_verified_offline` |
| `quote()` | free | the price an unpaid request is quoted right now, decoded from the 402 |
| `service_status()` | free | what is serving, ledger height, published buyer counts |

`UNVERIFIABLE` is a real answer, not an error: the engine abstains instead of guessing. The price
never depends on the verdict; refunds exist only for failure to deliver. A request with no claim
is refused locally, before any payment.

## Install

```bash
pip install clearsigned-mcp        # or: pipx install clearsigned-mcp
export CLEARSIGNED_BUYER_KEY=0x…   # an EVM key holding a little USDC on Base mainnet
clearsigned-mcp                    # stdio transport
```

Claude Desktop / Claude Code / any MCP client:

```json
{
  "mcpServers": {
    "clearsigned": {
      "command": "clearsigned-mcp",
      "env": { "CLEARSIGNED_BUYER_KEY": "0x…" }
    }
  }
}
```

The key signs x402 payment authorizations wherever this server runs: on your machine for a local
install, or on the registry's runner if you connect through a hosted URL (Smithery offers one).
It is never sent to Clearsigned; the service sees the payment, not the key.

## How to check us

- Pin the key at https://verify.clearsigned.com/pubkey; this server does, and refuses a receipt
  whose signature does not verify against it.
- Walk the public hash-chained ledger at https://verify.clearsigned.com/ledger/verify; every
  paid receipt and its on-chain settlement are separate events joined on payer and nonce.
- Read the live figures at https://clearsigned.com/quality (counts and timings, never a claim)
  and the serving calibration curve at https://clearsigned.com/stats.json.

## Source of truth

This package is developed inside the Clearsigned monorepo (`products/mcp-server/`) and mirrored
to a public repository for registries and installs. Issues and pull requests on the mirror are
welcome; changes land in the monorepo first.

## Development

```bash
python -m pytest tests/
```

The tests never touch the network or a wallet: the exchange is injected, and receipts are
signed with a throwaway Ed25519 key to exercise the offline verification exactly as production
does it.

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation5/5

Each tool serves a completely distinct purpose: verify_claim handles paid claim verification, quote provides pricing information, and service_status reports operational metrics. There is no overlap or ambiguity between them.

Naming Consistency4/5

Names are clear and follow a lowercase_with_underscores convention, but the pattern is not uniform: verify_claim is verb_noun, quote is a bare verb, and service_status is noun_noun. This minor inconsistency is easily readable.

Tool Count4/5

With only 3 tools, the set is on the smaller side, but it is well-scoped for a focused service that offers claim verification, pricing, and status. Each tool earns its place without feeling sparse.

Completeness4/5

The core workflow of verifying a single claim is fully covered, along with necessary supporting operations for pricing and status. A potential gap is lack of batch verification, but that may be outside the intended scope.