@slidingbox/hydrate-dehydrate-mcp
An MCP server for handing a secret from one agent, machine, or person to anotherwithout leaving a copy behind.
store_secret encrypts on your machine and returns one token. Whoever holds thetoken gets the secret exactly once — the first successful read delivers it anddestroys it, and a second read returns nothing. Slidingbox stores onlyciphertext: the key travels in the token and is never sent to the server.
store_secret("sk-live-...") -> sb_PApm-Ui...#0zgYgq2d...
^ pointer, on the server ^ key, never sent
retrieve_secret("sb_PApm-Ui...#0zgYgq2d...") -> sk-live-... (and it's gone)
Install
{
"mcpServers": {
"hydrate-dehydrate": {
"command": "npx",
"args": ["-y", "@slidingbox/hydrate-dehydrate-mcp"],
"env": { "SLIDINGBOX_API_KEY": "sbk_..." }
}
}
}
That block goes in your MCP client's config — claude_desktop_config.json forClaude Desktop, or claude mcp add for Claude Code.
Paying for reads
Storing is free. Reading costs $0.02, and there are two ways to cover it:
| Variable | What it does |
|---|---|
SLIDINGBOX_API_KEY |
An issued evaluation key (sbk_<id>.<hmac>). Covers a fixed number of reads for free. Ask [email protected]. |
SLIDINGBOX_PRIVATE_KEY |
A Base wallet holding USDC. Reads are paid per call over x402 — no account, no invoice, no subscription. |
SLIDINGBOX_URL |
Defaults to https://slidingbox.ai. |
SLIDINGBOX_NETWORK |
Defaults to eip155:8453 (Base mainnet). |
With neither set, store_secret still works and retrieve_secret tells youwhich one to configure. SLIDINGBOX_PRIVATE_KEY signs payments: give it awallet funded for this purpose and nothing else.
What it is good for
- Passing a credential between two agents that share no store and no account.
- Sending a secret through a channel you would rather it not persist in — thetoken in the chat log is inert the moment it is read.
- Proving a handoff happened once. A replayed token fails visibly instead ofquietly serving a second copy.
What it is not
Not storage, backup, messaging, or key management. Secrets live 60–900 secondsand then expire. Not for protected health information or payment-card data.
How it works
Encryption is AES-256-GCM, done in this process before anything is sent. Theserver receives {ciphertext, iv} and a time-to-live, and returns an opaquepointer. That is the whole reason this is a local stdio server rather than aroute on the API: a remote MCP server would have to receive your plaintext inorder to encrypt it.
Payment, when a wallet is configured, is x402 — the read returns 402, theclient signs an EIP-3009 authorization for $0.02 USDC, and retries. Payingwallets are screened against the OFAC SDN list before settlement; seehttps://slidingbox.ai/compliance.
- API: https://slidingbox.ai/developers
- Agent-readable: https://slidingbox.ai/llms.txt, https://slidingbox.ai/.well-known/slidingbox.json
Development
npm install
npm test # offline: crypto round-trip and token parsing
node server.mjs # speaks MCP over stdio
If this stops working
Slidingbox is a small product and may be retired. This server is built to say sorather than fail opaquely: a retired service answers 410, and a domain that nolonger resolves is reported as a retirement, not as a stack trace. Nothing youstore is ever held longer than 900 seconds, so a shutdown cannot strand data.
ISC © SLIDINGBOX LLC