# Tabularium

> Agent memory and a signed spending ledger: pay any x402 API, keep a provable receipt.

- name: io.github.SQLazy/tabularium
- version: 0.5.5
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 81/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.SQLazy%2Ftabularium
- tools: https://api.protogrid.dev/v1/servers/io.github.SQLazy%2Ftabularium/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "tabularium": {
      "type": "http",
      "url": "https://tabularium.matt-3e0.workers.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 96
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-90% +updated-5d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 81/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 7 of 7 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: tabularium_write (destructiveHint, idempotentHint); tabularium_read (destructiveHint, idempotentHint); tabularium_renew (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 1,111 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 5 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know tabularium-mcp@0.5.5

- tools: 7, about 1,111 tokens to load them all
- tool set hash: b3ea7e9b2d9ccff6ab87cc716e981468
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.SQLazy/tabularium.svg)](https://protogrid.dev/servers/io.github.SQLazy/tabularium)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- npm tabularium-mcp@0.5.5: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://tabularium.matt-3e0.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.90909094)

## Packages

- npm tabularium-mcp@0.5.5 secrets: TABULARIUM_PRIVATE_KEY

## Tools (7)

- `tabularium_export`: Paid ($0.01 USDC on Base, x402). Full signed history and current values, verifiable offline. Agent memory: export the full signed history and current values of the paying wallet's persistent key-value store, for backup or proof. The export verifies offline against the public key in /menu, with no trust in the server. The optional since parameter returns only newer entries.. Settles before it runs (a free check refuses a call that would fail). Call once without payment to get the price, then retry with params._meta["x402/payment"].
- `tabularium_head`: Free. Free: signed head (seq + hash, no values), state and expiry for a wallet's workspace
- `tabularium_menu`: Free. Prices, payee, network, policy (term, grace, size limits) and the signing key for every call.
- `tabularium_read`: Paid ($0.002 USDC on Base, x402). Latest value for a key, with its chain entry. Agent memory: read the latest value for a key from the paying wallet's persistent key-value store, with its signed hash-chain entry. Reads keep working through the 90-day grace period after the term ends. A missing key returns 404 and is not charged.. Charged only if it succeeds. Call once without payment to get the price, then retry with params._meta["x402/payment"].
- `tabularium_renew`: Paid ($0.25 USDC on Base, x402). Extend the workspace by 30 days from the later of now or its expiry. Agent memory: keep the paying wallet's persistent key-value store for 30 more days, counted from the later of now or its current expiry. A free pre-check rejects a wallet with no workspace before any charge.. Settles before it runs (a free check refuses a call that would fail). Call once without payment to get the price, then retry with params._meta["x402/payment"].
- `tabularium_snapshot_fetch`: Paid ($0.005 USDC on Base, x402). Fetch a web page as text, with a signed record of what was served and when. Returns the page's readable text plus an Ed25519-signed record (final URL after redirects, fetch time, status, sha256 of the body and of the text) that verifies offline. Charged only for 2xx text pages; refused URLs cost nothing.. Charged only if it succeeds. Call once without payment to get the price, then retry with params._meta["x402/payment"].
- `tabularium_write`: Paid ($0.003 USDC on Base, x402). Append a value under a key in the paying wallet's workspace. Agent memory: save a value under a key in a persistent key-value store owned by the paying wallet. The first write opens a 30-day workspace. Memory survives restarts, new machines and hand-offs between agents. Every write is hash-chained and signed (Ed25519), so the history verifies offline. Values up to 64 KB; failed writes are not charged.. Charged only if it succeeds. Call once without payment to get the price, then retry with params._meta["x402/payment"].
