WarpLink
Link infrastructure for mobile teams: deep links, install attribution, and real-time analytics. Create and update links, register apps, pull analytics, and manage keys and custom domains from any MCP client. Remote server: https://api.warplink.app/mcp (OAuth sign-in or API key).
Hosted MCP Server
npx add-mcp 'https://api.warplink.app/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
AI Access
Connect Claude, Cursor, Windsurf, or any MCP client to WarpLink, the deep linking MCP server for links, install attribution, and click analytics.
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 Keys > API keys in the dashboard and click Create API key, or see the Authentication docs. The SDK key used by the mobile SDKs is a different credential; an SDK key that works for any app authenticates here too but only reaches the read-only tools its links:read scope covers, not the write tools. An SDK key tied to one app is refused here.
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_API_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_API_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_API_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_API_KEY"
}
}
}
}
Reload Windsurf after saving.
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 |
Keys
| Tool | Description | Required Scopes |
|---|---|---|
list_keys | List SDK and API keys | keys:read |
create_key | Create an SDK or API key (raw key returned once) | keys:write |
revoke_key | Revoke an SDK or 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"
Frequently Asked Questions
What is the WarpLink MCP server?
It is a remote MCP endpoint at https://api.warplink.app/mcp that exposes WarpLink's link infrastructure to AI clients. Once connected, an assistant can create and update deep links, register iOS and Android apps, read click analytics, debug how a link routes, manage API keys and custom domains, and report your plan and usage. Every call acts inside the organization the connection is authenticated for, and nowhere else.
Which MCP clients work with it?
Any client that speaks the Model Context Protocol over Streamable HTTP. The configuration examples above cover Claude Code, Claude Desktop, Cursor, and Windsurf. Clients that support OAuth connect with the server URL alone and open a browser sign-in. Clients that do not can send a WarpLink API key as a bearer header instead.
What does the WarpLink MCP server cost?
Nothing extra. MCP access is included on every plan, including Free, and shares the same 60 requests per minute rate limit as the REST API. Your plan's limits on apps, links, members, and custom domains still apply to what the tools are able to create.
Should I use OAuth or an API key?
Prefer the browser sign-in for day to day work in an editor. There is nothing to paste, you act as yourself, and one connection spans every organization you belong to, with switch_org to move between them. Use an API key for non-interactive contexts such as CI, where no browser is available. A key is scoped to the organization it was created in, so switch_org does not apply to it. Both methods reach the same endpoint and resolve to the same permissions.
Do the WarpLink SDKs need the MCP server?
No. The iOS, Android, and React Native SDKs talk to WarpLink directly, and your app works with no MCP client involved. The MCP server is a way to manage your link infrastructure from an AI client, not a dependency of the SDKs. The SDK key your app ships with is also a different credential: it is pre-scoped for a mobile app, so it only reaches the read-only link tools here.
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
[
Errors
The WarpLink API error response format, a reference of common error codes, and how to troubleshoot failed requests.
](https://warplink.app/docs/errors)[
API Overview
Reference for the WarpLink REST API: authentication, rate limiting, error handling, and the endpoints for links, apps, and attribution.