LinkDR exposes a Model Context Protocol server so Cursor, Grok, Claude, and other clients can call our research tools the same way they call Gmail or a database.
The server URL is:
{
"mcpServers": {
"linkdr": {
"url": "https://linkdr.com/mcp"
}
}
}Use HTTPS in production. The client should speak Streamable HTTP (POST). GET and DELETE are not used.
After you add the URL, the client discovers login from the 401 response. Metadata is at /.well-known/oauth-protected-resource and /.well-known/oauth-protected-resource/mcp. You should not put a bearer token in the JSON. See Auth.
What the tools can read
Once connected as an admin, it can:
- Read one domain or up to 100 domains (DR, traffic, keywords), with a live RapidAPI fetch if a row is missing or stale
- Search keywords we already tracked
- Pull a cached Google SERP for one keyword. The first summary field shows
stale,fetchedAt, and the snapshot date - Search imported YouTube, Instagram, and TikTok creators
- Look up contact emails we already have
- Search the publisher marketplace
- List and read fulfillment orders, projects, and customers (ops)
It cannot place an order, charge a card, refund, send email, or invent a SERP we do not have.
Research tools
| Tool | Typical question |
|---|---|
| get_domains | What do we know about these competitors? |
| search_keywords | Which of our keywords match this phrase? |
| get_keyword_serp | Who ranks for this keyword? |
| search_creators | Which creators match this name or topic? |
| get_contacts | Do we have an email for this URL or domain? |
| search_domains | Which publishers in the catalog match these filters? |
Ops tools
| Tool | Typical question |
|---|---|
| list_orders | Which ACCEPTED orders are still open? |
| get_order | What are the line items on this order? |
| list_projects | Which project owns this domain? |
| get_project | What recent orders sit on this project? |
| list_customers | Who ordered this month? |
| summarize_orders | Counts for the morning digest? |
Each tool page has a request and a real response. get_keyword_serp returns { items: [...] } — rank, title, url, domain, description, and cached email per row.
Rate limit and empty answers
120 calls per user per hour. A tight keyword fan-out stays well under that. A loop over hundreds of keywords will not.
Empty answers are part of the contract. miss means we could not return that host. no_snapshot means we could not return a SERP. The agent should say that out loud instead of filling gaps.
Pair MCP with a skill
Connecting MCP is not the same as knowing the workflow. Point the agent at keyword fan-out, YouTube outreach, or ops orders so it calls tools in a sensible order.
What to read next
- Tools for arguments
- Get started if you have not signed in yet
- Troubleshooting for 401 / 403 / empty cache