WarpLink

AI Access

Connect Claude, Cursor, Windsurf, or any MCP client to manage WarpLink links from your editor.

WarpLink provides an MCP server for managing links, apps, API keys, domains, and usage from AI tools like Claude Code, Claude Desktop, Cursor, and Windsurf. Connect with a one-time browser sign-in (OAuth) or your existing API key, free on all plans, sharing the same 60 requests/minute rate limit as the REST API.

Prerequisites

You need a WarpLink API key with the appropriate scopes. For full access, create a key with these scopes:

  • links:read and links:write (create, list, update, delete links)
  • apps:read and apps:write (manage registered apps)
  • analytics:read (view click analytics)
  • keys:read and keys:write (list, create, revoke API keys)
  • domains:read and domains:write (manage custom domains)
  • org:read (view organization info and usage)

To create a key, go to Settings > API Keys in the dashboard, or see the Authentication docs.

MCP Server

The WarpLink MCP server exposes 23 tools over the Model Context Protocol. Any MCP-compatible client can connect to it.

Most MCP clients can connect with just the server URL and a one-time browser sign-in. No API key to paste, and you authenticate as yourself. On first use, the client opens a WarpLink sign-in and consent screen. Approve the requested scopes once and you're connected. If you belong to more than one organization, use the switch_org tool to choose which one you're working in.

Claude Code: add the server from the CLI, then run /mcp and choose Authenticate to finish the browser sign-in:

This writes the entry below to your .mcp.json; you can also add it by hand:

Claude Desktop: open Settings > Connectors > Add custom connector, paste https://api.warplink.app/mcp, and sign in when prompted.

Cursor and Windsurf: add the server with just its URL (no Authorization header). When the client sees that WarpLink supports OAuth, it opens the browser sign-in automatically.

Configuration with an API key

For non-interactive use like CI, or if you prefer a static token, connect with an API key instead.

Add the server with your API key passed as a header:

Prefer the browser sign-in above unless you need non-interactive auth, such as CI.

Claude Desktop's config file only supports local (stdio) servers, so connect through the mcp-remote bridge. Add this to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

The Authorization value is passed through env rather than inline to avoid a header-spacing bug in mcp-remote. Restart Claude Desktop after saving. For a no-config alternative, use Settings > Connectors with browser sign-in instead.

Add this to your Cursor MCP config (.cursor/mcp.json in your project root or ~/.cursor/mcp.json globally):

Reload Cursor after saving.

Add this to your Windsurf MCP config (~/.codeium/windsurf/mcp_config.json). Windsurf uses serverUrl (not url) for remote servers:

Reload Windsurf after saving.

Replace wl_live_YOUR_KEY with your actual API key. All keys are prefixed wl_live_, and the same key works across every MCP client. Never commit a key to source control. Cursor and Windsurf support ${env:VAR} interpolation in the config (for example, "Authorization": "Bearer ${env:WARPLINK_KEY}") if you'd rather reference an environment variable.

Available Tools

Links

ToolDescriptionRequired Scopes
create_linkCreate a new deep linklinks:write
list_linksList links with filtering and paginationlinks:read
get_linkGet a single link by IDlinks:read
update_linkUpdate an existing linklinks:write
deactivate_linkPause a link (reversible; keeps its analytics and slug)links:write
activate_linkResume a paused linklinks:write
delete_linkPermanently delete a link and its clicks (to pause instead, use deactivate_link)links:write
get_link_analyticsGet click analytics for a linkanalytics:read
resolve_linkDebug a link by slug: see routing and statuslinks:read

Apps

ToolDescriptionRequired Scopes
list_appsList registered apps with paginationapps:read
get_appGet a single app by IDapps:read
create_appRegister a new app (iOS, Android, or both)apps:write
update_appUpdate an app's configurationapps:write
delete_appDelete a registered appapps:write

API Keys

ToolDescriptionRequired Scopes
list_keysList API keys for the organizationkeys:read
create_keyCreate a new API key (raw key returned once)keys:write
revoke_keyRevoke an API keykeys:write

Custom Domains

ToolDescriptionRequired Scopes
list_domainsList custom domains with paginationdomains:read
add_domainAdd a custom domain for branded linksdomains:write
get_domain_statusCheck verification and SSL statusdomains:read

Organization

ToolDescriptionRequired Scopes
get_org_infoGet org info, plan, and usage statsorg:read
list_orgsList the organizations you can act onnone
switch_orgChoose the active organization (OAuth connections)none

Example Prompts

Once connected, you can use natural language in your MCP client:

  • "Create a WarpLink for https://example.com/promo with the tag summer-sale"
  • "Show me my last 10 links"
  • "How many clicks did my link abc123 get in the past 30 days?"
  • "Update the destination URL of link xyz to https://example.com/new-page"
  • "Register a new iOS app with bundle ID com.example.myapp"
  • "What's my current plan and how much of my click quota have I used?"
  • "Add links.mybrand.com as a custom domain"
  • "Create a new API key called 'CI Pipeline' with links:read and links:write scopes"
  • "Debug the link at aplnk.to/promo and show me its routing"

Next Steps

On this page