SuVerse MCP Server
# @suverselabs/mcp-server
An [MCP](https://modelcontextprotocol.io) server that gives Claude Desktop (or any
MCP client) **15 tools** for SuVerse's pay-per-call US-government and freight APIs.
Calls are paid automatically, per request, in **USDC on Base** via the
[x402](https://x402.org) protocol — you fund a wallet once and Claude pays as it
works. Your private key never leaves your machine.
> ✅ **Published on npm:** https://www.npmjs.com/package/@suverselabs/mcp-server
## Quick Start
Install via npx (no local build needed):
```bash
npx -y @suverselabs/mcp-server
```
### Claude Desktop Setup
Add to `claude_desktop_config.json`:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"suverse": {
"command": "npx",
"args": ["-y", "@suverselabs/mcp-server"],
"env": {
"SUVERSE_BASE_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY_HERE"
}
}
}
}
```
The private key controls a Base wallet that pays for tool calls in USDC. Fund it with ~$5-10 USDC on Base. You don't need ETH for gas — Base settlements are gas-sponsored. Check your balance anytime with the free `suverse_balance` tool.
Restart Claude Desktop. The 15 SuVerse tools will appear in Claude's tool list.
## What is SuVerse?
[SuVerse](https://api.suverse.io) is an x402 gateway over 128 US-government data
services (SEC, NPS, FBI, CMS, …) plus a freight document/routing suite. Each call
costs a few tenths of a cent up to $0.50; there are no accounts or API keys — you
pay per call in USDC.
## Why MCP?
Without this server you'd hand-roll x402 payments to call SuVerse. With it, the
endpoints appear as native Claude tools: ask in plain language and Claude calls
them, paying transparently from your funded Base wallet.
## Tools
### Paid (per-call USDC on Base)
| Tool | Price | Purpose |
|---|---|---|
| `freight_parse_ratecon` | $0.10 | Rate confirmation → JSON |
| `freight_parse_bol_pod` | $0.15 | Bill of Lading / POD → JSON |
| `freight_parse_fuel_receipt` | $0.05 | Fuel receipt → JSON (IFTA) |
| `freight_parse_w9` | $0.07 | IRS W-9 → JSON |
| `freight_parse_insurance_cert` | $0.08 | ACORD 25 COI → JSON |
| `freight_parse_permit` | $0.25 | Oversize/overweight permit → JSON |
| `freight_truck_route` | $0.50 | Truck-legal routing + tolls + POIs |
| `freight_calculate_tolls` | $0.10 | Toll estimate for a polyline |
| `freight_trip_telematics` | $0.01 | GPS trip analytics |
| `gov_query` | $0.005 | Any of 128 gov services by id |
| `gov_cms_open_payments` | $0.01 | CMS Open Payments by NPI |
| `gov_fbi_crime_data` | $0.01 | FBI crime stats by state/year |
### Free (no payment)
| Tool | Purpose |
|---|---|
| `gov_list_services` | Discover the 128 `gov_query` service ids + params |
| `suverse_estimate_cost` | Price one or many calls before running them |
| `suverse_balance` | On-chain USDC balance + calls remaining per tool |
| `suverse_search_endpoints` | Search every x402 endpoint SuVerse knows about (own + CDP Bazaar mirror) |
### Aggregated verdicts (x402, custody-free — the server never pays)
| Tool | Price | Question it answers |
|---|---|---|
| `suverse_market_pulse` | $0.10 | What regime is the crypto market in right now? |
| `suverse_wallet_reputation` | $0.03 | Can this Solana wallet's trading be trusted or copied? |
| `suverse_token_check` | $0.05 | Is this Solana token sane to enter right now? |
These three work differently from the paid tools above: **this server does not
pay for them and holds no keys for them.** Called without payment they return a
structured `payment_required` result — what the endpoint answers, the price, and
the verbatim x402 challenge (`accepts` on Base, Solana, and Cosmos Noble, all
USDC). Your agent (or its runtime) decides whether to pay: sign one of the
accepts with any x402 buyer client (e.g. `@suverselabs/x402-client`) and call
the tool again with `payment_signature` set to the base64 header value — it is
forwarded as `PAYMENT-SIGNATURE` / `X-PAYMENT` and the full paid verdict
(`{verdict, signals, data_quality, raw}`) comes back. Wallet and mint arguments
are validated as base58 client-side before any network call.
## Usage examples
- *"Parse the rate con at `~/Downloads/load_4471.pdf`."* → `freight_parse_ratecon` (`file_path`)
- *"What gov services can you call?"* → `gov_list_services`
- *"How much would parsing 10 BOLs cost?"* → `suverse_estimate_cost`
- *"What's my SuVerse balance?"* → `suverse_balance`
- *"Get Apple's SEC company info."* → `gov_query` (`service: "sec.company_info"`)
### `file_path` inputs
Document tools accept a local `file_path` — the server reads the file, **verifies
it's really a PDF/image via magic bytes**, and base64-encodes it. No need to paste
base64 into the chat.
## Cost transparency & safety
- Every paid tool's description states its price; `suverse_estimate_cost` prices
ahead of time.
- **Hard cap:** a single call never settles for more than
`SUVERSE_MAX_PAYMENT_USDC` (default **$0.60**) **and** never more than the tool's
published price — whichever is lower.
- **Client-side idempotency:** an identical repeat within a short window returns the
cached response instead of paying twice (complements SuVerse's server-side
idempotency).
## Security
- `SUVERSE_BASE_PRIVATE_KEY` is read from the environment, used only to sign EIP-3009
USDC authorizations locally, and **never logged or transmitted** anywhere except
as a signed payment header to SuVerse.
- All diagnostics go to **stderr** (stdout is the MCP protocol channel).
- `file_path` reads are restricted to your home directory (override with
`SUVERSE_ALLOW_PATHS_OUTSIDE_HOME=true`), reject sensitive locations
(`.ssh`, `.aws`, `credentials`, key files, …), and are content-type verified.
### Data sent off your machine
The document-parsing tools work by **uploading the file's contents** (base64-encoded,
or whatever you pass via `pdf_base64` / `image_base64` / `text`) to `api.suverse.io`,
where they're parsed. So while your private key never leaves your machine, **the
documents you ask Claude to parse do.** Only pass files you're comfortable sending to
SuVerse for processing. The `file_path` guards above (home-directory restriction,
sensitive-location denylist, magic-byte type check) limit *which* files can be read,
but any file you do parse is transmitted. The free tools (`gov_list_services`,
`suverse_estimate_cost`, `suverse_balance`) and the on-chain balance read send no
file data.
## Configuration reference
| Env var | Default | Notes |
|---|---|---|
| `SUVERSE_BASE_PRIVATE_KEY` | — | **Required.** 0x Base private key. |
| `SUVERSE_API_BASE` | `https://api.suverse.io` | |
| `SUVERSE_MAX_PAYMENT_USDC` | `0.60` | Hard per-call ceiling. |
| `SUVERSE_BASE_RPC_URL` | viem default | For `suverse_balance` reads. |
| `SUVERSE_ALLOW_PATHS_OUTSIDE_HOME` | `false` | Allow `file_path` outside `$HOME`. |
| `SUVERSE_IDEMPOTENCY_TTL_MS` | `120000` | Client idempotency window. |
## Development
For contributors / running from source. End users should use the `npx` [Quick Start](#quick-start) above instead.
```bash
git clone https://github.com/sudzikcoin/suverse-mcp && cd suverse-mcp
npm install
npm run typecheck # tsc --noEmit
npm test # vitest (mocked HTTP)
npm run build # tsup → dist/index.js
npm run dev # run from source (tsx)
```
To run a local build in Claude Desktop, point `command`/`args` at the built file instead of `npx`:
```json
{
"mcpServers": {
"suverse": {
"command": "node",
"args": ["/absolute/path/to/suverse-mcp/dist/index.js"],
"env": { "SUVERSE_BASE_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY_HERE" }
}
}
}
```
## License
MIT
TDQS
Scored across 19 tools
Most tools have clear, distinct purposes, especially within the freight parse family where each handles a specific document type. However, there is some overlap potential between gov_query and the specific gov_cms_open_payments / gov_fbi_crime_data tools, which may confuse agents about which to use. Overall, tools are distinguishable.
The server uses a prefix system (freight_, gov_, suverse_) but the verb-noun pattern is inconsistent across tools. For example, freight_parse_bol_pod and gov_list_services follow verb_noun, while freight_truck_route, gov_cms_open_payments, and suverse_market_pulse are noun-based. The naming is readable but mixes conventions.
With 19 tools, the server is slightly heavy but justified given its multi-domain scope: freight processing, government data access, and crypto analytics. Each tool serves a distinct function and the count remains manageable. It is not excessive enough to be overwhelming.
The tool surface covers the main workflows for its three core domains: freight document parsing and routing, government data querying, and SuVerse crypto intelligence plus payment management. Minor gaps exist, such as no tool for load posting or transaction simulation, but these are not core to the server's apparent purpose. Overall, the coverage is solid.