
Build an AI SEO Research Agent with Claude + RankParse MCP
Turn Claude into a no-code SEO research agent. Two worked examples — a vercel.com vs netlify.com link gap analysis and a full link profile audit — with the actual MCP tool calls.
A competitor backlink gap analysis usually means an hour in Ahrefs, three CSV exports, and a spreadsheet to diff the lists. None of that work is creative. It's lookup, intersect, sort, summarize.
That's the kind of task Claude does well when it has the right tools. With the RankParse MCP server, every SEO endpoint — backlinks, referring domains, link intersect, top pages, tech stack — becomes a function Claude can call mid-conversation. You ask a question; the agent runs the lookups; you get a written answer.
This post walks through wiring RankParse into Claude Desktop and Claude Code, then runs two real examples against vercel.com and netlify.com so you can see the exact tool calls Claude makes.
What you're building
The setup is short: one MCP server, one API key, two clients (Claude Desktop for chat, Claude Code for terminal work). After about five minutes of configuration, you can ask Claude things like "find link-building opportunities I'm missing versus netlify.com" and it will:
- Call
get_referring_domainsfor each domain - Call
get_link_intersectto find the difference - Sort by domain authority via
get_domain_authority - Hand you back a ranked outreach list
No code. No SDK install. The agent picks the tools.

Step 1: Get a RankParse API key
Sign up at rankparse.com/signup. The free tier includes 100 credits — enough for around 20 to 30 lookups depending on which tools you use. Most endpoints cost 1 to 5 credits each.
Copy the key (rp_...) from the dashboard. You'll paste it into Claude Desktop or pass it as a header to Claude Code. It never leaves your machine in the Desktop config — Claude calls the MCP server directly.
Step 2: Add RankParse to Claude Desktop
Claude Desktop has a UI for MCP connectors. No JSON editing.
- Open claude.ai or the Desktop app, then Settings → Connectors
- Click Add custom connector
- Paste the server URL with your key as a query parameter:
https://mcp.rankparse.com/?apiKey=rp_your_key_here- Save and close the dialog

Open any new conversation and you should see RankParse in the tool list. Type "list the RankParse tools available" if you want to confirm — Claude will enumerate them.
Step 3: Add RankParse to Claude Code
Claude Code adds servers with one terminal command:
claude mcp add rankparse \
--transport http \
https://mcp.rankparse.com/mcp \
--header "X-API-Key: rp_your_key_here"Restart any open session. Check it worked with /mcp inside Claude Code — you should see rankparse listed with a green dot.

That's the entire setup. From here, everything happens in plain English.
Example 1: A competitor backlink gap analysis (vercel.com vs netlify.com)
Imagine you run SEO for Vercel and want to know which sites link to Netlify but not to you. Those are warm outreach targets — somebody at that publication already cares about Jamstack hosting.
In Claude Desktop, with the RankParse connector enabled, type:
Do a backlink gap analysis: find domains linking to netlify.com but not to vercel.com. Rank the top 20 by domain authority and summarize the categories (publications, dev blogs, doc sites, etc.). I want this for outreach prioritization.
Here's the chain of tool calls Claude actually runs:
Call 1 — domain authority baselines
Claude wants to know it's comparing peers, not a giant vs a startup. It runs both in parallel:
get_domain_authority(domain="netlify.com")
get_domain_authority(domain="vercel.com")Both return scores in the high 80s with similar referring domain counts. Claude notes this in its reply so you know the comparison is fair.
Call 2 — find the link intersect
This is the core question. RankParse exposes a single endpoint for it:
get_link_intersect(
domain_a="netlify.com",
domain_b="vercel.com"
)The response is a list of domains that link to netlify.com but not to vercel.com, each with the count of pages they link from and the linking page samples. One call, 5 credits, no pagination to manage.
Call 3 — score the opportunities
Claude doesn't blindly hand you 100 domains. It picks the top 20 by linking-page count, then enriches each with authority data. Instead of 20 individual calls (20 credits), it batches them — but batch_lookup only handles backlinks, not authority, so Claude falls back to get_domain_authority per domain.
If you want to save credits, prompt the next step explicitly: "Only enrich the top 10 with authority — skip the rest." Agents respect cost guidance when you give it.
Call 4 — sanity check the highest-value targets
For the top three results, Claude pulls a sample of their backlinks to Netlify to confirm the link context is editorial, not a directory listing or a sponsored post:
get_backlinks(
domain="netlify.com",
from_domain="smashingmagazine.com",
limit=10
)It looks at anchor text and the linking page paths, then summarizes what kind of link it is.
The summary you get back
After roughly 25 to 30 credits total, Claude returns something like:

Out of 87 domains linking to netlify.com but not vercel.com, the top 20 by domain authority break down as:
- Editorial publications (8) — smashingmagazine.com, css-tricks.com, alistapart.com, dev.to
- Framework / tooling docs (5) — gatsbyjs.com, eleventy.dev, contentful.com
- Dev influencer blogs (4) — overreacted.io, kentcdodds.com, ...
- Conference / community sites (3) — jamstackconf.com, ...
The publications cluster is the highest-ROI outreach group. Most of the links use editorial anchor text ("Netlify", "deploy with Netlify") inside tutorial content, which suggests these authors cover the Jamstack space generally — they'd plausibly cover Vercel too.
That answer took one prompt. No spreadsheet, no export, no manual diff.
Example 2: Auditing a domain's link profile
Same setup, different question. You're considering buying a backlink package from an agency that promises 50 links from "high-DR sites." Before you commit, you want a baseline of vercel.com's current link profile so you can spot anomalies later — and surface the obvious opportunities first.
The prompt:
Audit the link profile for vercel.com. Pull a full overview, look at anchor distribution and top referring pages, and tell me the top three improvement opportunities. Flag anything that looks risky.
Call 1 — full site explorer
The cheapest path to a broad picture is get_site_explorer — one call that returns backlinks summary, authority, top pages, and anchor distribution:
get_site_explorer(domain="vercel.com")10 credits, one round trip. Claude uses this as the spine of the audit.
Call 2 — anchor text distribution detail
The site explorer gives a summary, but Claude wants the long tail of anchor text to flag over-optimization:
get_anchor_text(domain="vercel.com", limit=200)It computes the share of branded ("vercel", "vercel.com"), exact-match ("nextjs hosting", "deploy nextjs"), and generic ("click here", "this") anchors. If branded share is below 40 percent, that's a flag. Above 70 percent is healthy.
Call 3 — referring domain quality
get_referring_domains(domain="vercel.com", limit=100)Claude looks at the authority distribution. A healthy profile has a long tail of mid-authority sites and a handful of high-authority ones. A profile dominated by very-low-authority domains is a flag.
Call 4 — real-time site health
The link profile is one half of an audit. The technical side is the other:
get_site_health(domain="vercel.com")This runs live (not from the quarterly index) and checks HTTPS enforcement, HSTS, redirect behavior, security headers, and robots.txt. Claude folds the results into the final summary.
The audit you get back

vercel.com link profile — audit summary
Health score: 87/100. Anchor distribution is healthy (62% branded, 8% exact-match, 11% generic). 100% HTTPS. No risk flags on the link side.
Top opportunities:
- The 60-80 DA band of referring domains is thin (412 domains vs ~1,100 in the 40-60 band). Outreach to mid-tier industry publications would balance the distribution.
- Exact-match anchor share is 8% — slightly under the 10-15% sweet spot. Coordinated editorial campaigns around "nextjs hosting" and "edge functions" terms would help.
- HSTS is set but not in the preload list. Submit to the HSTS preload list to harden the technical baseline.
Total spend: 16 credits for a complete audit. The same work done manually across three tools takes roughly an hour.
Tips for chaining MCP tool calls effectively
The agent will do the work, but how you prompt it changes how many credits you burn and how useful the output is.
Be explicit about the goal, not the steps
"Find the top 20 outreach targets versus netlify.com, ranked by authority" works better than "call get_link_intersect with these parameters." Claude is good at picking tools when it understands the outcome. It is mediocre at executing rigid scripts you'd be better off writing in Python.
Ask for the cheap call first
If you don't know whether a deeper audit is worth it, ask Claude to start with get_domain_authority (1 credit) or get_site_explorer (10 credits, broad) before drilling into specific tools. Phrasing like "run a quick check first, then decide whether the full audit makes sense" gives the agent permission to stop early.
Cap result counts in the prompt
get_link_intersect, get_backlinks, get_referring_domains, and get_anchor_text all accept a limit parameter. If you don't specify, Claude defaults to whatever feels right — sometimes 500. Saying "limit to top 20 by authority" keeps the response token budget under control and the costs predictable.
Use batch_lookup for breadth, not depth
batch_lookup runs get_backlinks against up to 50 domains in one call, charging 1 credit per domain. It's the right tool when you want a wide pass — say, "show me the link profiles of all 30 competitors in this space." For deeper analysis on a few domains, individual tool calls give you more flexibility.
Don't ask Claude to recite raw JSON
The temptation is to ask "show me the full response from get_backlinks." Don't. The agent's value is summarization and reasoning across data — not transcription. Ask for the summary, the table, the top N, or the categorical breakdown. If you need raw data, hit the REST API directly.
Set freshness expectations up front
RankParse's link data refreshes quarterly from Common Crawl. For agent workflows where "fresh enough" is fine (research, audits, opportunity discovery), that's a feature — the queries are fast and cheap. For workflows that need yesterday's links (live link monitoring, ranking impact analysis), the agent won't help. Tell Claude this in your system prompt or first message: "Note that backlink data may be up to 90 days old, so don't claim a link is brand new based on this data alone."
When to graduate from MCP to direct REST
MCP is the right fit for exploration, one-off audits, and conversational research. Once you find a workflow you want to run on a schedule — daily competitor monitoring, automated weekly link reports, programmatic outreach list generation — switch to the Python SDK or direct REST calls. The data and credit costs are identical; you trade conversational ergonomics for precise control over pagination, retries, and storage.
The two patterns coexist. Most teams using RankParse run agents for ad-hoc questions and pipelines for scheduled work. The same API key powers both.
FAQ
How many credits does a full gap analysis cost?
The vercel.com vs netlify.com example above ran in roughly 25 to 30 credits — two authority lookups, one link intersect (5 credits), 20 enrichment calls, and a few sample backlink checks. With the free 100-credit tier you can run three to four complete gap analyses before paying anything.
Can I use Cursor instead of Claude Desktop?
Yes. Cursor speaks MCP natively. Add this to .cursor/mcp.json in your project root:
{
"mcpServers": {
"rankparse": {
"url": "https://mcp.rankparse.com/mcp",
"headers": { "X-API-Key": "rp_your_key_here" }
}
}
}Windsurf uses the same JSON in ~/.codeium/windsurf/mcp_config.json. The tool surface is identical across clients.
Does Claude need internet access to call MCP tools?
The MCP server runs on the public internet (mcp.rankparse.com), so yes — Claude needs network access to reach it. The connection happens server-side from Claude's hosted runtime, not from your machine. The only thing your local Claude Desktop or Claude Code does is sign the request with your API key.
How fresh is the data?
Link data (backlinks, referring domains, anchor text, link intersect, top pages) refreshes every quarter from a new Common Crawl release. Real-time endpoints (get_page_seo, get_site_health, get_tech_stack) are live at request time. Plan agent workflows around that split — use the link tools for research and the real-time tools for any "right now" question.
The 100 free credits cover several full research sessions. Sign up, drop the MCP server into Claude Desktop or Claude Code, and ask it to do something tedious you've been putting off. The agent will probably handle it in one prompt.
Start with 100 free credits
No subscription. No card. $0.009 per call after that, and credits never expire.
Get your free API key