ncrypted
One-time, end-to-end encrypted secrets for agents. 0.005 USDC per secret via x402.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"ncrypted": {
"command": "npx",
"args": [
"@seidl-family/ncrypted-mcp"
]
}
}
}Runnable packages
0.2.2stdioRemote endpoints
https://ncrypted.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟡ncrypted_create(secret, ttl_seconds, passphrase)
Store a password, API key or sensitive note as a one-time link that self-destructs after a single read. The first 3 per day are free (TTL up to 24h); after that each costs 0.005 USDC, paid via x402 on Base (your MCP client must support x402). Share the link with a person or another agent; never echo the secret in chat. Returns { link, id, receiptToken, expiresAt }; keep id and receiptToken to check delivery (ncrypted_status) or revoke the link (ncrypted_burn). Hosted mode: this server encrypts the secret for you, so it sees the plaintext briefly over TLS (never stored or logged). For end-to-end, zero-knowledge encryption run the local MCP server `npx -y @seidl-family/ncrypted-mcp` instead.
Input Schema
{
"type": "object",
"properties": {
"secret": {
"type": "string",
"minLength": 1,
"maxLength": 65536,
"description": "The sensitive value to share. Max 64 KB."
},
"ttl_seconds": {
"description": "Expiry if never read. Default 86400 (24h), max 7 days.",
"type": "integer",
"minimum": 300,
"maximum": 604800
},
"passphrase": {
"description": "Optional second factor the recipient also needs. Share it through a different channel.",
"type": "string"
}
},
"required": [
"secret"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴ncrypted_read(link, passphrase)
Open an ncrypted link (https://.../s/{id}#{key}) and return the secret. This destroys it permanently. Free. Only use the value for the task at hand and do not repeat it in chat. To check whether someone opened a link you created, use ncrypted_status instead (it doesn't consume anything). Hosted mode: this server decrypts the secret for you, so it sees the plaintext briefly over TLS (never stored or logged). For end-to-end, zero-knowledge encryption run the local MCP server `npx -y @seidl-family/ncrypted-mcp` instead.
Input Schema
{
"type": "object",
"properties": {
"link": {
"type": "string",
"format": "uri",
"description": "The full ncrypted link including the #key fragment."
},
"passphrase": {
"description": "Required only if the sender set a passphrase.",
"type": "string"
}
},
"required": [
"link"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢ncrypted_status(id, receiptToken)
Check whether a secret you created has been opened yet, without consuming it. Returns { status, expiresAt, readAt? } where status is pending (not opened), read, burned or expired. Use it to confirm delivery, or before deciding to ncrypted_burn a link. Only works for secrets you created (needs their receiptToken); to open a link, use ncrypted_read. Free.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The secret's id, returned as `id` by ncrypted_create."
},
"receiptToken": {
"type": "string",
"description": "The creator's receipt token, returned as `receiptToken` by ncrypted_create. Only the creator has it; the link alone isn't enough."
}
},
"required": [
"id",
"receiptToken"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴ncrypted_burn(id, receiptToken)
Permanently destroy an unread secret you created, so its link stops working (e.g. it was sent to the wrong place or is no longer needed). Irreversible. Returns { burned: true } if it was destroyed, or { burned: false, status } if there was nothing left to destroy because it was already read, burned or expired; if it was already read, the recipient has the value, so rotate the credential. Only works for secrets you created (needs their receiptToken). Free.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The secret's id, returned as `id` by ncrypted_create."
},
"receiptToken": {
"type": "string",
"description": "The creator's receipt token, returned as `receiptToken` by ncrypted_create. Only the creator has it; the link alone isn't enough."
}
},
"required": [
"id",
"receiptToken"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence