12 min read·May 17, 2026

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:

  1. Call get_referring_domains for each domain
  2. Call get_link_intersect to find the difference
  3. Sort by domain authority via get_domain_authority
  4. Hand you back a ranked outreach list

No code. No SDK install. The agent picks the tools.

Dark navy diagram showing prompt card on left feeding into RankParse MCP server, which calls get_referring_domains, get_link_intersect, and get_domain_authority, returning a ranked results table on the right with the RankParse orange bar logo in the center

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.

  1. Open claude.ai or the Desktop app, then Settings → Connectors
  2. Click Add custom connector
  3. Paste the server URL with your key as a query parameter:
https://mcp.rankparse.com/?apiKey=rp_your_key_here
  1. Save and close the dialog

Claude Desktop Settings panel showing the Connectors tab with RankParse listed as a custom connector, status shown as Connected with 23 tools available

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.

Terminal mockup showing the claude mcp add command followed by output: rankparse server connected, 23 tools registered, status OK

That's the entire setup. From here, everything happens in plain English.

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.

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:

White data card on dark navy background with three orange ascending bars and RankParse text in the top left, showing a table of 8 referring domains linking to netlify.com but not vercel.com, columns for Domain, DA, Linking pages, and Category, with smashingmagazine.com and css-tricks.com near the top

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.

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

Audit results panel on dark navy with orange logo bars in the top left, showing a health score of 87, anchor text distribution as a stacked bar (branded 62 percent, exact-match 8 percent, generic 11 percent, other 19 percent), referring domain authority histogram, and three callouts under Top Opportunities: improve exact-match anchor diversity, increase referring domains in the 60-80 DA band, fix HSTS preload missing

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:

  1. 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.
  2. 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.
  3. 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