MCP server
FunnelKit Shortener runs a remote Model Context Protocol server, so AI assistants can create links, read analytics and manage domains in your workspace.
Endpoint
https://linkapp-staging.funnelkit.com/mcp
It uses the Streamable HTTP transport. There are two ways to authenticate:
- Sign in with your browser (OAuth). Add the server without a key; your MCP client opens a FunnelKit consent page where you pick the workspace. Tokens last an hour and refresh automatically. This is the easiest option for people.
- A workspace API key in the
Authorizationheader. This is best for scripts, CI and headless agents. The assistant can do anything the key's workspace can, so create a dedicated key for each assistant and revoke it when you stop using it.
Claude Code
Sign in with your browser:
claude mcp add --transport http funnelkit https://linkapp-staging.funnelkit.com/mcp
Then run /mcp inside Claude Code, choose funnelkit and Authenticate.
Or use an API key:
claude mcp add --transport http funnelkit https://linkapp-staging.funnelkit.com/mcp \
--header "Authorization: Bearer fks_YOUR_KEY"
Claude Desktop
Claude Desktop connects to remote servers through the mcp-remote bridge. Add this to claude_desktop_config.json (Settings, Developer, Edit config) and restart the app:
{
"mcpServers": {
"funnelkit": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://linkapp-staging.funnelkit.com/mcp",
"--header", "Authorization: Bearer ${FKS_API_KEY}"
],
"env": { "FKS_API_KEY": "fks_YOUR_KEY" }
}
}
}
Cursor
Add this to ~/.cursor/mcp.json, or .cursor/mcp.json in a project:
{
"mcpServers": {
"funnelkit": {
"url": "https://linkapp-staging.funnelkit.com/mcp",
"headers": { "Authorization": "Bearer fks_YOUR_KEY" }
}
}
}
Other clients that support remote HTTP servers with custom headers work the same way.
Tools
| Tool | What it does |
|---|---|
create_link | Create a short link. Takes url and optionally slug, domain, title, tags. |
bulk_create_links | Create up to 50 links in one call. |
update_link | Change a link's destination, slug, title or tags. |
delete_link | Delete a link. |
list_links | Search and page through links. |
get_link | Get one link by id. |
get_link_stats | Clicks, time series and breakdowns for one link. |
get_workspace_stats | Clicks across the workspace and the top links. |
create_qr | Get a QR code (SVG) for a link. |
list_domains | List the workspace's domains and their status. |
add_domain | Add a custom domain and get the CNAME record to create. |
verify_domain | Check DNS and certificate status for a domain. |
Tool errors use the same code values as the REST API, so an assistant can tell a taken slug from a plan limit.
Example prompts
- "Shorten https://example.com/webinar as
webinarand tag it events." - "Create links for each URL in this list, with slugs from the page titles."
- "Which of my links got the most clicks last week, and from which countries?"
- "Point the
pricinglink at https://example.com/pricing-2027." - "Add go.example.com as a custom domain and tell me the DNS record to create."
- "Make a QR code for the
springlink."