ncrypted-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NCRYPTED_WALLET_PRIVATE_KEY | No | Optional. Private key of a dedicated, low-balance Base wallet holding some USDC (no ETH needed), used to pay the 0.005 USDC x402 fee per secret after the 3 free secrets per day. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ncrypted_createA | Encrypt a password, API key, or sensitive note locally and store it as a one-time secret. Returns a link that works exactly once, then self-destructs. The first 3 per day are free (TTL up to 24h, no email); after that each costs 0.005 USDC, paid automatically from the configured Base wallet via x402. Share the returned link with a human, email it (emailTo), or hand it to another agent, which reads it with ncrypted_read. Treat the link like the secret itself; never echo the secret value in chat. Returns { link, id, receiptToken, expiresAt }; keep id and receiptToken to check delivery (ncrypted_status) or revoke the link (ncrypted_burn). Use ncrypted_request instead when you need a secret FROM the user, and ncrypted_to_vercel_env / ncrypted_to_dotenv when a value from a link must be installed somewhere. |
| ncrypted_readA | Open an ncrypted link (https://.../s/{id}#{key}), decrypt it locally and return the secret. This destroys the secret: it can never be read again. Free. Use the value only for the task at hand and do not repeat it in chat. If the value just needs to end up in a Vercel env var or .env file, use ncrypted_to_vercel_env or ncrypted_to_dotenv instead so you never see it. To check whether someone opened a link you created, use ncrypted_status (it doesn't consume anything). |
| ncrypted_statusA | 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. |
| ncrypted_burnA | 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. |
| ncrypted_to_vercel_envA | Open an ncrypted link and write its value straight into a Vercel project environment variable (type sensitive), so the value never appears in this conversation. Uses the user's |
| ncrypted_to_dotenvB | Open an ncrypted link and write its value into a local .env file (KEY=value, file mode 600) without showing it to you. Warns if the file isn't git-ignored. |
| ncrypted_requestA | When you need a password, API key or token from the user, call this instead of asking them to paste it into chat. Returns a link for the user; they paste the value on that page, where it's encrypted in their browser to a key that only exists on this machine. Give the user the link and END YOUR TURN so they can open it; once they say they've submitted it, call ncrypted_request_fulfill to deliver it (e.g. to a Vercel env var) without ever seeing it. Free. |
| ncrypted_request_fulfillA | After the user says they've submitted an ncrypted_request, collect and deliver the value. destination 'vercel_env' or 'dotenv' writes it without showing it to you (preferred). 'return' gives you the value; use it only when you must use it directly, and never repeat it. Returns status 'pending' if the user hasn't answered within wait_seconds; call again later. |
| ncrypted_wallet_setupA | Create the local wallet that pays for secrets beyond the free tier (0.005 USDC each on Base), if none exists, and get a funding link for its owner. Funding needs only the address; send the user |
| ncrypted_walletA | Show today's remaining free secrets, plus the address and USDC balance (Base) of the wallet that pays for more. Free. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool has a very clear and distinct purpose, even when functions overlap (e.g., reading a secret vs. storing it in an environment variable). The descriptions clearly delineate the use case for every function.
The naming convention is extremely consistent, following a clear snake_case pattern preceded by the 'ncrypted_' namespace. This predictability allows for immediate identification of tool function.
With 10 tools, the set is perfectly scoped for its complex purpose of managing encrypted secrets. It avoids both bloat and critical functional gaps.
The tool surface provides comprehensive coverage of the secret lifecycle, including creation, reading, consumption (local/remote storage), status tracking, and billing setup. There are no obvious functional dead ends.