mcpField
T
Tabularium

Tabularium

Local
github.comMemory & Knowledge0Updated today

About Tabularium

Tabularium is an MCP server for persistent agent memory and a signed spending ledger. Agents pay for calls with an EVM wallet over x402; hash-chained records, offline verification, and on-chain reconciliation make memory and purchases auditable.

Key features

  1. 01Read and write persistent memory by key
  2. 02Export and verify signed history offline
  3. 03Pay x402 endpoints and record receipts
  4. 04Summarize spending and reconcile on-chain payments
  5. 05Inspect signed ledger heads by wallet

Use cases

  1. 01Load and retain agent memory across sessions
  2. 02Track the purpose and amount of API purchases
  3. 03Verify receipts against on-chain settlements
  4. 04Export a history for offline verification

MCP support

As an MCP server, it exposes memory, payment, ledger, verification, and reconciliation tools to clients, along with prompts for loading memory and reporting spending.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"sqlazy-tabularium": {
"command": "npx",
"args": [
"-y",
"tabularium-mcp"
],
"env": {
"TABULARIUM_PRIVATE_KEY": "<TABULARIUM_PRIVATE_KEY>",
"TABULARIUM_MAX_SPEND_USD": "<TABULARIUM_MAX_SPEND_USD>",
"TABULARIUM_URL": "<TABULARIUM_URL>",
"TABULARIUM_PAY_MAX_USD": "<TABULARIUM_PAY_MAX_USD>",
"TABULARIUM_PAY_NETWORKS": "<TABULARIUM_PAY_NETWORKS>",
"TABULARIUM_PUBKEY": "<TABULARIUM_PUBKEY>"
}
}
}
}
Run commandnpx -y tabularium-mcp
Environment variables to set
TABULARIUM_PRIVATE_KEYSecret0x-prefixed EVM private key of the wallet that pays (use a dedicated wallet with a small USDC balance)
TABULARIUM_MAX_SPEND_USDSpend cap for this server process, in USD
TABULARIUM_URLService base URL (defaults to the public deployment)
TABULARIUM_PAY_MAX_USDtabularium_pay: most one purchase may cost, in USD (ceiling 0.50)
TABULARIUM_PAY_NETWORKStabularium_pay: comma-separated networks it may pay on; default is the service's own network. eip155:8453 is mainnet (real money).
TABULARIUM_PUBKEYSecretOptional pinned Ed25519 signing key (hex) that exports must verify against

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmtabularium-mcp0.5.3

Tools

9

Saved tool list · updated today

This tool takes no parameters.

Details

From the project README

tabularium-mcp

MCP server for Tabularium: a paid, persistent, hash-chained workspace for AI agents. Your agent's EVM wallet pays each call in USDC over x402, and that wallet is the account. There is no sign-up and no API key.

Tools

ToolCostWhat
tabularium_menufreePrices, policy, network, public signing key.
tabularium_write$0.003Append {key, value}. Retries reuse one idempotency key, so a retry never writes twice.
tabularium_read$0.002Latest value for a key, with its chain entry.
tabularium_renew$0.25Extend the workspace 30 days.
tabularium_export$0.01Full signed history, verified offline before it is returned. save_to writes it to a file.
tabularium_headfreeSigned head (seq + hash, no values) for any wallet; defaults to yours.
tabularium_verifyfree, localRe-verify a saved export without trusting the server.
tabularium_paythe endpoint's price + one writePay any x402 v2 endpoint in USDC and write a signed receipt (reason, the full accepted terms, amount, payee, network, transaction, response hash, and an intent the wallet signed before paying) to ledger/<date>/.... purchase_id makes retries safe: the same id never pays twice.
tabularium_ledgerone exportVerify the workspace and total the receipts: spend by service and by day, latest receipts; checks every payer-signed intent against its receipt.
tabularium_reconcileone exportCompare receipts with the USDC payments the wallet actually settled on-chain (last 1-30 days): purchases with no receipt, receipts with no settlement, and receipts that differ from the chain.

Failed calls (4xx/5xx) are never charged.

More Tabularium services

Tabularium is a platform: the same wallet pays for every service it offers, and memory is the first. When the server starts, it reads the live menu and turns each paid call of every other service into its own tool, named tabularium_<service>_<call>, with the input fields and price the menu lists. A new service therefore shows up the next time your MCP client starts, without a new version of this package. These tools follow the same rules as the memory tools: the payee must be the menu's, the price at most the menu price (and never above $0.50), the session spend cap applies, and redirects are never followed. A call that settles after it runs is not retried after a failed payment, because it may already have run. Menu entries that do not fit these rules are skipped, not guessed at.

Prompts

Ready-made starting points your MCP client lists (in Claude Code, type / to see them):

PromptWhat
load_memoryStart a session from what was stored before: read an index key (default index), then the entries it lists.
spending_reportWhat has my agent spent? Totals by service and day, and the largest purchases with their reasons.

The server also tells the model, when it connects, which tools are free and which cost money, plus a simple memory pattern: keep an index key, read it at the start, write decisions as they happen.

The spending ledger

tabularium_pay answers the question every operator asks: what did my agent buy, from whom, for how much, and why? Each settled purchase becomes one entry in the agent's hash-chained, server-signed workspace, so the record can be exported and verified offline, with the on-chain transaction hash alongside. Safety rules: USDC via EIP-3009 only, allowed networks only, a per-purchase maximum, and the session spend cap is checked against the real price plus the receipt before anything is signed. A receipt's idempotency key is its payment nonce, so a retry never records twice; if a receipt write fails after a purchase settled, the tool still returns the purchase and the receipt to re-record. Paid requests never follow redirects (payment and receipt stay with the URL asked for), and a signed authorization is valid for at most 10 minutes whatever the seller asks.

Since 0.5 (from review on Moltbook's m/agentfinance):

  • The reason is a commitment, not a note. Before the payment is signed, the wallet signs (EIP-191) an intent: the request, the exact terms accepted, the payment nonce, and the reason. The receipt keeps it, so the payer cannot later edit the reason and the server cannot invent one. It is still a claim, and the receipt says so (reasonStatus). Check one with any EIP-191 verifier, or let tabularium_ledger check them all.
  • The promise is in the record. The receipt holds the full accepts[] entry the payer accepted and its hash, next to the payment (transaction) and the delivery (response hash).
  • Retries cannot pay twice. With purchase_id, the signed authorization is kept (in TABULARIUM_STATE_DIR) until the purchase is known to have settled. Calling again sends that same authorization, which can settle at most once; a purchase that settled while its response was lost is found on-chain and recorded once.
  • Completeness is checkable. A hash chain shows rows were not edited, not that none are missing. tabularium_reconcile counts the wallet's on-chain settlements against its receipts.

Configure

EnvRequiredMeaning
TABULARIUM_PRIVATE_KEYfor paid tools0x-prefixed EVM private key that pays. Use a dedicated wallet with a small balance.
TABULARIUM_URLnoService URL. Default: the public deployment (Base mainnet).
TABULARIUM_PUBKEYnoPin the server's Ed25519 key (hex). Exports are verified against it, and a mismatch with the published key is reported.
TABULARIUM_MAX_SPEND_USDnoSpend cap for this server process, across all tools. Default 1.
TABULARIUM_PAY_MAX_USDnotabularium_pay: most one purchase may cost. Default 0.10, ceiling 0.50.
TABULARIUM_TESTnoMarks this process's requests to the service as test traffic, kept out of its public demand stats. For the service's own test runs.
TABULARIUM_RPC_URLnoJSON-RPC for the service's network, used by tabularium_reconcile and to check whether an unconfirmed payment settled. Default: a public Base node.
TABULARIUM_STATE_DIRnoWhere purchase_id records are kept. Default ~/.tabularium-mcp.
TABULARIUM_PAY_NETWORKSnotabularium_pay: networks it may pay on (comma-separated CAIP-2). Default: the service's own network, which for the public service is Base mainnet (eip155:8453): purchases spend real USDC, within TABULARIUM_PAY_MAX_USD and the spend cap. Set eip155:84532 to keep purchases on testnet.

The public service runs on Base mainnet: the paying wallet needs real USDC on Base. It needs no ETH, because the facilitator pays the transaction fees. Use a dedicated wallet holding only a few dollars.

Claude Code:

claude mcp add tabularium --env TABULARIUM_PRIVATE_KEY=0x... -- npx -y tabularium-mcp

Claude Desktop / other clients (mcpServers JSON):

{
  "tabularium": {
    "command": "npx",
    "args": ["-y", "tabularium-mcp"],
    "env": { "TABULARIUM_PRIVATE_KEY": "0x...", "TABULARIUM_MAX_SPEND_USD": "0.50" }
  }
}

Speaks x402 v2. Three dependencies (MCP SDK, viem, zod). Payments are signed locally (EIP-3009 USDC authorization); the server refuses to sign anything other than USDC to the payee and price the service's own menu lists. Versions before 0.2.0 spoke x402 v1 and no longer work against the service.

Develop

npm install
cp ../verifier/verify.mjs verify.mjs   # also runs on prepack; a root test fails if the copy drifts
npm test                               # offline: payment guards (wrong asset/payee/price/network refused), service tools
node smoke.mjs                         # 30 checks over stdio against the live service (PAYER_FILE picks the wallet)
node smoke.mjs --npx tabularium-mcp@X  # same checks against a published version

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.