Skip to main content
Carry’s gate and receipts aren’t locked inside the demo UI. The @usecarry/mcp package is a Model Context Protocol server, so any MCP client gets gated, receipted, Walrus-verified memory that persists across sessions.
The proof travels with the answer, not the vendor — the same gated memory works in Cursor, Claude Desktop, and Claude Code.

The tools

The server (name: "carry") registers five tools: Every carry_recall runs the same gate as the web app: blocked namespaces are never returned, and the result carries the same receipt semantics.

Install

Published on npm — no local checkout needed.
1

Register with your MCP client

Add it to your MCP config (.cursor/mcp.json, Claude Desktop config, etc.):
Omit the env block to run against a deterministic mock (no network).
2

Use it

Ask your agent to remember and recall facts — every recall is gated, and access can be changed on the fly with carry_set_access.

npm — @usecarry/mcp

Published and installable.

Storage

The MCP server persists to a local store (default ~/.carry/store.json, override with CARRY_STORE) and uses the same Walrus + policy primitives as the web app — so a memory taught through Cursor can be recalled through Claude Desktop, gated the same way.
Because the gate and receipt logic live in the framework-free @carry/core package, the web app and the MCP server share exactly the same enforcement — there’s no second, weaker code path.