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 Authorization header. 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

ToolWhat it does
create_linkCreate a short link. Takes url and optionally slug, domain, title, tags.
bulk_create_linksCreate up to 50 links in one call.
update_linkChange a link's destination, slug, title or tags.
delete_linkDelete a link.
list_linksSearch and page through links.
get_linkGet one link by id.
get_link_statsClicks, time series and breakdowns for one link.
get_workspace_statsClicks across the workspace and the top links.
create_qrGet a QR code (SVG) for a link.
list_domainsList the workspace's domains and their status.
add_domainAdd a custom domain and get the CNAME record to create.
verify_domainCheck 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 webinar and 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 pricing link 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 spring link."