MCP server
Connect Zippy to Claude, Cursor or any MCP client and make links, check your app-open rate, compare A/B variants and edit your bio page by just asking. Official server, zip_ key auth, one workspace per key.
Drive Zippy from your AI assistant
Zippy has an official MCP server. Connect it and your assistant can do the Zippy things you'd otherwise open the dashboard for:
"Make me a Zippy link for this TikTok, tag it q3-launch, and tell me if people are actually opening the app."
MCP (Model Context Protocol) is the standard way an AI client talks to an outside tool. Claude Desktop, Claude Code and Cursor all speak it, and so does the Zippy server.
Not installable yet — we haven't published it
The server is built and working, but it is not on npm and this page will not pretend
otherwise. npx @zippy/mcp resolves to nothing today. When we publish the package this
page gets the one-line install below and this box goes away. Everything else here — the
tools, the honesty rules, the key scoping — describes the server as it actually behaves
right now.
How will I connect Zippy to Claude?
1. Get a key. In the dashboard, Settings → API keys → New key. Copy it — Zippy shows it exactly once. The API is a Legend power, so the key needs a Legend workspace.
2. Add the server to your client's MCP config. In Claude Desktop that's
claude_desktop_config.json; in Cursor, .cursor/mcp.json. Same shape either way — this
is the config once the package is published, not something that works today:
3. Restart the client and ask it something. Start with "check my Zippy account" —
that runs zippy_whoami and tells you the key works and which plan it's on. If anything
is wrong, that's the tool that says so in plain language.
Want to be told the day it lands? The changelog gets the entry, and the config above is the whole install.
What can it actually do?
Eleven tools, picked for what people actually ask an assistant — not a wrapper around every endpoint.
| Ask for… | Tool | What it does |
|---|---|---|
| "Check my Zippy account" | zippy_whoami | Confirms the key works, reports the workspace, plan and unlocked features. |
| "Make me a link for this" | zippy_create_link | Creates a link. Optional slug, tags, folder, UTMs, routing, A/B, scheduling, password, pixels. |
| "What links do I have?" | zippy_list_links | Lists links newest-first. Filter by tag or folder. |
| "Point that link somewhere else" | zippy_update_link | Living links — change the destination after the post is live, without changing the short URL. |
| "Is my link working?" | zippy_app_open_stats | The app-open split: opened / browser / broken. |
| "Which variant is winning?" | zippy_ab_variants | Per-variant clicks and app-open rate — so a destination can win clicks and lose app opens. |
| "Show me my bio page" | zippy_get_bio_page | The page, its settings and its ordered blocks. |
| "Change my bio" | zippy_update_bio_page | Handle, title, bio text, avatar, published on/off. |
| "Add a button to my bio page" | zippy_set_bio_blocks | Replaces the whole block list — add, edit, reorder, remove in one write. Needs confirmation. |
| "Which bio link is doing best?" | zippy_bio_block_stats | App-open rate per block. |
| "Archive that old link" | zippy_archive_link | Hides it and frees a plan slot. Needs confirmation. The link keeps redirecting. |
The numbers your assistant quotes are estimates
App-open rates come from a sampled analytics pipeline, and every tool that returns one says so in its own description — so your assistant is told, before it answers, to report whole-number rates and trends rather than exact counts or decimals.
Two things it's specifically instructed not to do:
- Never report 0% when nothing has been measured. A link with no data comes back as
null, and the honest answer is "no data yet". - Never call an A/B winner on a decimal. Two variants a point apart inside a sampled dataset are a tie.
If your assistant ever quotes you a suspiciously precise app-open figure, it's embellishing — the tool didn't give it one.
What it can't do
It can't break a link. There is no tool here — and no endpoint on the API behind it —
that stops a published Zippy link from redirecting. zippy_archive_link frees a slot
against your plan's link cap and hides the link from your list; the link keeps working
forever. That's permanence, and it's not overridable by anything,
including you.
It can't act outside your workspace. See below.
It can't do the destructive things without asking. The two tools that overwrite or
hide something — zippy_set_bio_blocks and zippy_archive_link — refuse to run unless
your assistant passes an explicit confirmation, so it has to check with you first. No
request is sent to Zippy at all when that confirmation is missing.
How the key is scoped
The MCP server sends one credential: your zip_ key, as a bearer token. Everything
about what it can reach follows from that.
- One key, one workspace. Zippy resolves the key server-side to exactly the workspace
it was minted in, and every query is scoped to that workspace. No tool takes a
workspace, org or account argument — there's no argument to set, so there's nothing to
aim somewhere else. A link belonging to someone else reads as a
404, not a403. - Your plan is re-checked on every single call. Not at connect time. Downgrade, and the next tool call is already gated.
- Revoking a key takes effect on the next call. Revoke it in the dashboard and the assistant loses access immediately — no restart, no waiting.
- Cookies are never sent, and never accepted. Being signed in to Zippy in your browser grants the MCP server exactly nothing.
- The key lives in your MCP client's config, on your machine. Zippy never sees your client. Treat that config file like any other file holding a credential, and mint a separate key for your assistant so you can revoke it on its own.
- Rate limit: 120 calls a minute per key, shared with any other automation using it.
The server itself has zero runtime dependencies — it's the protocol, fetch, and the
tool list. That's on purpose: it runs on your laptop next to your API key, and every
dependency would be supply-chain surface on that credential.
Related
- The Zippy API — the HTTP surface underneath this. The MCP server is a translator over it and adds no rules of its own, so anything the API refuses, it refuses.
- Webhooks — push instead of asking. Better than having an assistant poll.
- n8n — the same API on a workflow canvas, for the parts you want to happen without you in the conversation.
- A/B testing and link in bio — the two features most worth driving from a conversation.
- The app-open receipt and your media kit — what to do with the app-open numbers your assistant just read out.
- Blog: Your link tool should be something you can just ask
- Changelog: The MCP server