LinkPilot MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LinkPilot MCP Server Make a one-time link for this API key: sk_live_9f3a..."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LinkPilot MCP server
Give an AI assistant a safe way to hand someone a credential.
LinkPilot secret links open once and then destroy themselves, and the text is encrypted before it leaves this process. This is an MCP server that exposes them as tools, alongside short links.
npx -y @uselinkpilot/mcpThe problem it solves
Assistants hand people credentials constantly: a generated password, an API key, a database connection string. Every ordinary way of delivering one is bad. Pasted into chat, it lives in the history. Emailed, it lives forever. Dropped in a ticket, it is indexed.
create_secret_link returns a URL that works exactly once:
Here is the database password: https://shrd.link/s/p8mcaiitig#k=0hoNIO96aDJFoLsxaYPsP3_FeqUjb6t_w5lnSTcxkO0
It opens once and then it is gone.
Related MCP server: Vaulted MCP Server
Read this before you install it
The plaintext passes through the assistant's context. For the model to create the secret, it has to see the secret.
This server protects the credential in transit, at rest, and over time — it is encrypted before it is sent, LinkPilot cannot read it, and it survives a single view. It does not hide the value from the model that is calling the tool, and nothing built this way could.
So: use it to deliver a credential the assistant is already handling — one it
just generated, or one you have pasted in deliberately. If a secret must never
be seen by the assistant at all, create it yourself at
uselinkpilot.com or with the
linkpilot CLI instead.
A security tool that oversells itself is worse than no tool, so that is stated up front rather than in a footnote.
What the encryption actually means
The API will not accept a plaintext secret. POST /secrets takes
ciphertext and an enc_version, and rejects a payload field outright.
Encryption happens in this process, via
@uselinkpilot/sdk:
AES-GCM-256, with the key generated locally. The key travels in the URL's #
fragment, which browsers never send to a server. LinkPilot stores a blob it
holds no key for, and so cannot read it — nor can anyone who reaches its
database or its edge.
The corollary is not a caveat, it is the guarantee working: there is no recovery. Lose the share URL and the secret is gone, including to us.
Setup
Create an API key at
uselinkpilot.com/app/api-keys. Keys
begin with lp_live_. API access is available on every plan, including Free.
Claude Code
claude mcp add linkpilot --env LINKPILOT_API_KEY=lp_live_your_key -- npx -y @uselinkpilot/mcpClaude Desktop, and other MCP clients
In claude_desktop_config.json (or your client's equivalent):
{
"mcpServers": {
"linkpilot": {
"command": "npx",
"args": ["-y", "@uselinkpilot/mcp"],
"env": { "LINKPILOT_API_KEY": "lp_live_your_key" }
}
}
}The key is read from the environment only. It is never written to disk by this server, and never echoed — not in a log line, not in an error, not truncated.
Tools
tool | what it does |
| Encrypt text locally and return a one-time URL |
| Shorten a URL, with click tracking |
| List short links and their click counts |
| Secret metadata only: status, views, expiry |
| Destroy a secret link immediately |
| Plan, limits, usage and remaining rate budget |
list_secrets cannot return a secret's contents. No API route can — there is
no route that returns a payload or a key, which is what makes the guarantee
above structural rather than a promise.
revoke_secret is annotated destructiveHint, so a well-behaved client will
confirm before calling it. The three read-only tools are annotated as such, so
it will not nag about those.
create_secret_link
argument | |
| The text to protect. Required. |
|
|
| Default true. |
| Pro plans. A second factor the recipient must type. |
A passphrase is mixed into the key and sent as a SHA-256 hash, so the server can refuse to hand over the ciphertext at all. The passphrase itself is never transmitted. Send it over a different channel from the link, or it adds nothing.
Verifying the encryption
You do not have to take any of this on trust.
The wire format is specified at uselinkpilot.com/developers, and the SDK's test suite runs the same committed known-answer vectors as the LinkPilot web application and the reveal page served at the edge. Three independent implementations, one set of vectors. If any of them disagreed about a single byte, those tests would fail.
This server's own tests assert the negative directly: for every secret path, the plaintext and the key must not appear anywhere in the request, and the key taken from the returned share URL must decrypt exactly what was sent.
Development
npm ci
npm run build
npm run typecheck
npm testTests run a real MCP Client against a real server over an in-memory
transport, with only the network stubbed, so the input schemas and the result
envelope are exercised the way a real host exercises them.
Licence
MIT
Available Tools
6 toolscreate_secret_linkCreate a one-time secret linkA
Share a password, API key, token or private note as a link that self-destructs after it is opened once. The text is encrypted in this process before it is sent; LinkPilot receives ciphertext and cannot read it. Use this instead of putting a credential in a chat message or an email. Returns a share URL that must be sent to the recipient EXACTLY as given: the part after '#' is the decryption key, and the link opens nothing without it. Nobody, including LinkPilot, can recover the secret if the URL is lost. Note that the plaintext passes through this conversation; if it must never be seen here, tell the user to create it themselves at uselinkpilot.com instead.
Inputs: secret (required), expires_in, passphrase, burn_after_read.
create_short_linkCreate a short linkA
Shorten a URL to a branded LinkPilot short link with click tracking. For public URLs. To share something private, use create_secret_link instead.
Inputs: url (required), slug, tags, title, +1 more.
list_linksList short linksBRead-onlyIdempotent
List short links on the account, newest first, with click counts.
Inputs: limit, cursor.
list_secretsList secret linksARead-onlyIdempotent
List secret links on the account. METADATA ONLY: status, view count and expiry. No route can return the secret text or the key, by design, so this cannot be used to read a secret back. Use it to check whether one has been opened yet.
Inputs: limit, cursor.
revoke_secretRevoke a secret linkADestructiveIdempotent
Destroy a secret link immediately so it can never be opened. Irreversible. Use it when a secret was shared by mistake or is no longer needed.
Inputs: id (required).
whoamiShow the LinkPilot accountARead-onlyIdempotent
Show the workspace, plan, limits, usage and remaining rate budget for the configured API key. Useful for checking a limit before a bulk operation, or for confirming which account is connected.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: secret creation, short-link creation, listing each link type, revoking secrets, and account introspection. The descriptions explicitly contrast overlapping areas, such as create_secret_link versus create_short_link. No two tools appear interchangeable.
Five of six tools follow a consistent snake_case verb_noun pattern (create_secret_link, create_short_link, list_links, list_secrets, revoke_secret). The exception is whoami, which is a conventional but non-verb_noun name, making the set mostly predictable.
Six tools is well-scoped for a link-sharing service, covering the core creation, listing, revocation, and account-check workflows. Neither too thin nor bloated for the stated purpose.
The secret-link lifecycle is well covered (create, list, revoke), but short links can only be created and listed. There is no revoke, delete, or update operation for short links, which is a notable gap for managing public branded links.
Maintenance
Related MCP Connectors
Create short links and see their click counts from your AI assistant.
Short links for AI agents: editable after sharing, with click counts and password-protected files.
Create and manage short links, track clicks, and automate URL management
Make, find, pause and track short links and QR codes from your AI assistant. Create short links with an optional custom address, title and tags; find links and QR codes; update, pause, resume, archive or restore them; and read click analytics (clicks, unique visitors, countries, referrers, devices, browsers) for a link, a QR code or the whole account. Sign in with OAuth and choose what the assistant may do. Every change can be undone; nothing is ever permanently deleted. Works on every plan, including Free.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to create, manage, and analyze short URLs through complete URL shortening functionality. Supports batch operations, custom domains, click statistics, and comprehensive link management.625 npm1MIT
- AlicenseAqualityBmaintenanceShare encrypted, self-destructing secrets from your AI agent. Zero-knowledge E2E encryption. Agent-blind input sources (env:, file:, dotenv:) keep secrets out of LLM context.4272 npm1MIT
- AlicenseAqualityDmaintenanceEnables AI agents to shorten URLs, manage links, and track click analytics through 8 first-class tools, designed for use with Claude Desktop, Cursor, and other MCP clients.945 npmMIT
- AlicenseAqualityBmaintenanceEnables users to shorten links, bulk create URLs, generate QR codes, manage and disable links, and retrieve click analytics from MCP clients like Claude, ChatGPT, Cursor, and n8n.9MIT