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:readandlinks:write(create, list, update, delete links)apps:readandapps:write(manage registered apps)analytics:read(view click analytics)keys:readandkeys:write(list, create, revoke API keys)domains:readanddomains: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.
Sign in with your browser (recommended)
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:
claude mcp add --transport http warplink https://api.warplink.app/mcp
This writes the entry below to your .mcp.json; you can also add it by hand:
{
"mcpServers": {
"warplink": {
"type": "http",
"url": "https://api.warplink.app/mcp"
}
}
}
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:
claude mcp add --transport http warplink https://api.warplink.app/mcp \
--header "Authorization: Bearer wl_live_YOUR_KEY"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):
{
"mcpServers": {
"warplink": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://api.warplink.app/mcp",
"--header", "Authorization:${WARPLINK_AUTH}"
],
"env": {
"WARPLINK_AUTH": "Bearer wl_live_YOUR_KEY"
}
}
}
}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):
{
"mcpServers": {
"warplink": {
"url": "https://api.warplink.app/mcp",
"headers": {
"Authorization": "Bearer wl_live_YOUR_KEY"
}
}
}
}Reload Cursor after saving.
Add this to your Windsurf MCP config (~/.codeium/windsurf/mcp_config.json). Windsurf uses serverUrl (not url) for remote servers:
{
"mcpServers": {
"warplink": {
"serverUrl": "https://api.warplink.app/mcp",
"headers": {
"Authorization": "Bearer wl_live_YOUR_KEY"
}
}
}
}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
| Tool | Description | Required Scopes |
|---|---|---|
create_link | Create a new deep link | links:write |
list_links | List links with filtering and pagination | links:read |
get_link | Get a single link by ID | links:read |
update_link | Update an existing link | links:write |
deactivate_link | Pause a link (reversible; keeps its analytics and slug) | links:write |
activate_link | Resume a paused link | links:write |
delete_link | Permanently delete a link and its clicks (to pause instead, use deactivate_link) | links:write |
get_link_analytics | Get click analytics for a link | analytics:read |
resolve_link | Debug a link by slug: see routing and status | links:read |
Apps
| Tool | Description | Required Scopes |
|---|---|---|
list_apps | List registered apps with pagination | apps:read |
get_app | Get a single app by ID | apps:read |
create_app | Register a new app (iOS, Android, or both) | apps:write |
update_app | Update an app's configuration | apps:write |
delete_app | Delete a registered app | apps:write |
API Keys
| Tool | Description | Required Scopes |
|---|---|---|
list_keys | List API keys for the organization | keys:read |
create_key | Create a new API key (raw key returned once) | keys:write |
revoke_key | Revoke an API key | keys:write |
Custom Domains
| Tool | Description | Required Scopes |
|---|---|---|
list_domains | List custom domains with pagination | domains:read |
add_domain | Add a custom domain for branded links | domains:write |
get_domain_status | Check verification and SSL status | domains:read |
Organization
| Tool | Description | Required Scopes |
|---|---|---|
get_org_info | Get org info, plan, and usage stats | org:read |
list_orgs | List the organizations you can act on | none |
switch_org | Choose 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
- API Reference for the complete endpoint documentation
- Authentication for API key scopes and security best practices
- Quickstart to create your first deep link