Backlink & domain authority MCP for AI agents: referring domains, link gap, toxic review queue
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Audit which AI crawlers a site allows or blocks in robots.txt — sorted by CONSEQUENCE: blocking a VISIBILITY crawler (OAI-SearchBot, PerplexityBot, ChatGPT-User, Claude-User…) removes the site from live AI answers, while blocking a TRAINING crawler (GPTBot, CCBot, Google-Extended…) only opts out of model training. Those need opposite decisions. Checks 25 known AI crawlers + whether /llms.txt exists, plus general robots.txt hygiene (Sitemap directives, whole-site Disallow foot-guns). Free (no LLM calls).
Root domain to audit, e.g. 'yoursite.com'.
Audit which AI crawlers a site allows or blocks in robots.txt — sorted by CONSEQUENCE: blocking a VISIBILITY crawler (OAI-SearchBot, PerplexityBot, ChatGPT-User, Claude-User…) removes the site from live AI answers, while blocking a TRAINING crawler (GPTBot, CCBot, Google-Extended…) only opts out of model training. Those need opposite decisions. Checks 25 known AI crawlers + whether /llms.txt exists, plus general robots.txt hygiene (Sitemap directives, whole-site Disallow foot-guns). Free (no LLM calls).
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain to audit, e.g. 'yoursite.com'. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain to audit, e.g. 'yoursite.com'."
}
}
}AI Visibility / GEO audit. Asks a panel of AI models a buyer-intent question ('what's the best <category>?') and reports whether YOUR brand gets recommended, who the models prefer instead (share-of-voice across the panel), WHY the leader wins — diagnosed against BacklinkMCP's own authority/link data (referring-domain gap) — and which domains to earn links from to catch up. Two modes: `parametric` (default — the models' baked-in brand memory) or `retrieval` (live web-search models = what the AI answers right now, SEO-driven). **Pro plan only** (runs a live multi-model AI panel): 8 models × 3 prompts × up to 4 competitors per report.
| Argument | Type | Description |
|---|---|---|
| mode | string | 'parametric' (default) = the models' baked-in brand memory (cheap). 'retrieval' = live web-search models (what the AI answers now, SEO-driven; costs more credits). |
| depth | string | 'draft' = cheap iteration pass (2 models × 1 prompt) for trying prompts/competitors. 'full' (default) = the whole panel. Draft costs 1 credit (2 for retrieval). |
| facts | array | Optional ground-truth facts about YOUR product (max 5), e.g. ['pricing starts at $29/mo','has a free tier']. When supplied, the panel is also asked what it knows about your brand and each fact is verified — separating 'AI doesn't know you' from 'AI knows you but gets it wrong' (opposite fixes). |
| domain* | string | YOUR root domain — the brand you're measuring AI visibility for, e.g. 'yoursite.com'. |
| history | boolean | true = return the permanent archive of past runs for this domain (mention rate, rank, leader over time) instead of running a new panel. Costs no credits. Optionally combine with `mode` to filter parametric vs retrieval history. |
| prompts | array | Buyer-intent queries to ask the panel, e.g. ['best project management tool for a startup']. |
| samples | integer | Repeat draws per (prompt×model) cell (default 1, max 10). Answer engines are nondeterministic — more samples tighten the 95% confidence interval on your rates. Use samples>=5 for a defensible inclusion rate; 1 is a smoke test, not a measurement. Credits multiply by samples. |
| category | string | Optional shortcut used only if `prompts` is omitted — turned into one prompt 'What is the best <category>?', e.g. 'CRM for small business'. |
Full backlink payload for a domain: total inlink count plus the ranked list of linking domains (authority + outbound link count per linker). Returns up to 100 rows on Pro, 25 on the free tier; use domain_authority_score for just the headline number.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain, e.g. 'stripe.com'. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain, e.g. 'stripe.com'."
}
}
}Multi-domain backlink overlap: given 2-4 domains, returns the domains that link to MORE THAN ONE of them, ranked by overlap (how many of the set they link) then authority. Answers 'who links my whole niche?' — the must-have publications, directories, and roundups your competitors all share. Domain-level only (no per-link URL/anchor). Free compares 2 domains, Pro up to 4; returns up to 25 rows free / 100 Pro.
| Argument | Type | Description |
|---|---|---|
| domains* | array | Root domains to intersect (2-4), e.g. ['a.com','b.com','c.com']. Free tier uses only the first 2. |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Root domains to intersect (2-4), e.g. ['a.com','b.com','c.com']. Free tier uses only the first 2."
}
}
}Get Core Web Vitals (LCP, INP, CLS) and a performance score for a page via Google PageSpeed Insights — both a lab Lighthouse run and real-user CrUX field data when available.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full page URL to test. |
| strategy | string | Test as mobile or desktop. Default 'mobile'. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full page URL to test."
},
"strategy": {
"enum": [
"mobile",
"desktop"
],
"type": "string",
"description": "Test as mobile or desktop. Default 'mobile'."
}
}
}Get an editorial-authority score for a domain (weighted toward high-trust wiki/edu/gov/news referrers, from BacklinkMCP's proprietary web-scale link index). Returns a domain_rating-style score plus referring domain count.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain, e.g. 'stripe.com'. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain, e.g. 'stripe.com'."
}
}
}Competitor backlink-gap analysis for link building. Given YOUR domain (the `domain` arg) and 1-3 competitor domains, returns domains that link to the competitor(s) but NOT to you, ranked by the linking domain's authority — a warm outreach shortlist (aka competitor gap). Domain-level only: the index has no per-link URLs or anchor text, so each row is a DOMAIN worth pitching for a link, not a confirmed link or a specific page. CDN/analytics/marketing-widget/social noise is filtered out. Free mines 1 competitor and returns up to 25 prospects; Pro mines up to 3 competitors and returns up to 100.
| Argument | Type | Description |
|---|---|---|
| domain* | string | YOUR root domain — the site you want more backlinks for, e.g. 'yoursite.com'. |
| competitors* | array | Competitor root domains to mine for gap prospects (1-3), e.g. ['rival1.com','rival2.com']. Free tier uses only the first. |
{
"type": "object",
"required": [
"domain",
"competitors"
],
"properties": {
"domain": {
"type": "string",
"description": "YOUR root domain — the site you want more backlinks for, e.g. 'yoursite.com'."
},
"competitors": {
"type": "array",
"items": {
"type": "string"
},
"description": "Competitor root domains to mine for gap prospects (1-3), e.g. ['rival1.com','rival2.com']. Free tier uses only the first."
}
}
}Toxic / low-quality backlink audit: scans a domain's LINKERS and flags spammy disavow CANDIDATES — abused TLDs (.tk/.xyz/.loan…), spam keywords in the domain, hyphen/keyword stuffing, and link-farm-level outbound counts. The inverse of find_link_prospects. Domain-level heuristic only (no per-link URL/anchor), so each row is a DOMAIN worth REVIEWING, never a confirmed toxic link. Note: Google says most sites should NOT disavow — use this to audit, not to auto-disavow. Free returns up to 25 flags, Pro up to 100.
| Argument | Type | Description |
|---|---|---|
| domain* | string | The domain whose inbound links you want to audit for toxic/spam linkers, e.g. 'yoursite.com'. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "The domain whose inbound links you want to audit for toxic/spam linkers, e.g. 'yoursite.com'."
}
}
}Submit one or more URLs to IndexNow for near-instant indexing by Bing and Yandex. Requires an IndexNow key that YOU control and have already hosted at https://<your-domain>/<key>.txt — this tool does not create that key for you.
| Argument | Type | Description |
|---|---|---|
| key* | string | Your IndexNow key, already hosted at https://<host>/<key>.txt |
| urls* | any | One URL or an array of URLs, all on the same host. |
{
"type": "object",
"required": [
"urls",
"key"
],
"properties": {
"key": {
"type": "string",
"description": "Your IndexNow key, already hosted at https://<host>/<key>.txt"
},
"urls": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10000
}
],
"description": "One URL or an array of URLs, all on the same host."
}
}
}Extract and validate JSON-LD structured data (schema.org) from a page. Checks JSON validity and flags missing recommended fields for common types (Article, Product, Organization, WebSite, BreadcrumbList, FAQPage, LocalBusiness).
| Argument | Type | Description |
|---|---|---|
| url* | string | Full page URL to check for structured data. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full page URL to check for structured data."
}
}
}Fetch a page and audit core on-page SEO signals: title/meta description length, canonical tag, heading structure, image alt text coverage, viewport tag, robots meta, word count, plus response security headers, hreflang, OpenGraph/Twitter cards, http-to-https redirect, static tech markers, static accessibility checks (contrast is not measured), English-only Flesch readability, and a homepage-only broken-link check (up to 25 links). Failures carry a typed reason (blocked_403, not_found, timeout, ...). Returns a list of concrete issues found. Single page only — not a site crawl.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full page URL, e.g. https://example.com/page |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full page URL, e.g. https://example.com/page"
}
}
}Return the top 25 domains linking to a given domain, ranked by the linking domain's own authority, with link counts. Good for a quick competitive/backlink-profile skim.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain, e.g. 'stripe.com'. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain, e.g. 'stripe.com'."
}
}
}Live-verify backlinks: fetches linking domains' homepages RIGHT NOW and confirms an actual href to the target domain exists on each. Complements the index with real-time proof. Only homepages are fetched, so 'not_found' means 'no link on the homepage today', not 'the link is gone'. Checks the top 8 linkers by default (max 15).
| Argument | Type | Description |
|---|---|---|
| limit | integer | Optional: how many top linkers to check when 'linkers' is omitted (default 8, max 15). |
| domain* | string | Root domain whose backlinks to verify, e.g. 'stripe.com'. |
| linkers | array | Optional: specific linking domains to check (max 15). Defaults to the top linkers from the graph. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"limit": {
"type": "integer",
"description": "Optional: how many top linkers to check when 'linkers' is omitted (default 8, max 15)."
},
"domain": {
"type": "string",
"description": "Root domain whose backlinks to verify, e.g. 'stripe.com'."
},
"linkers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional: specific linking domains to check (max 15). Defaults to the top linkers from the graph."
}
}
}| competitors | array | Competitor root domains to track share-of-voice against and diagnose the winner, e.g. ['rival1.com','rival2.com']. Supplying the winner as a domain unlocks the link-gap diagnosis. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"mode": {
"enum": [
"parametric",
"retrieval"
],
"type": "string",
"description": "'parametric' (default) = the models' baked-in brand memory (cheap). 'retrieval' = live web-search models (what the AI answers now, SEO-driven; costs more credits)."
},
"depth": {
"enum": [
"draft",
"full"
],
"type": "string",
"description": "'draft' = cheap iteration pass (2 models × 1 prompt) for trying prompts/competitors. 'full' (default) = the whole panel. Draft costs 1 credit (2 for retrieval)."
},
"facts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional ground-truth facts about YOUR product (max 5), e.g. ['pricing starts at $29/mo','has a free tier']. When supplied, the panel is also asked what it knows about your brand and each fact is verified — separating 'AI doesn't know you' from 'AI knows you but gets it wrong' (opposite fixes)."
},
"domain": {
"type": "string",
"description": "YOUR root domain — the brand you're measuring AI visibility for, e.g. 'yoursite.com'."
},
"history": {
"type": "boolean",
"description": "true = return the permanent archive of past runs for this domain (mention rate, rank, leader over time) instead of running a new panel. Costs no credits. Optionally combine with `mode` to filter parametric vs retrieval history."
},
"prompts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Buyer-intent queries to ask the panel, e.g. ['best project management tool for a startup']."
},
"samples": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Repeat draws per (prompt×model) cell (default 1, max 10). Answer engines are nondeterministic — more samples tighten the 95% confidence interval on your rates. Use samples>=5 for a defensible inclusion rate; 1 is a smoke test, not a measurement. Credits multiply by samples."
},
"category": {
"type": "string",
"description": "Optional shortcut used only if `prompts` is omitted — turned into one prompt 'What is the best <category>?', e.g. 'CRM for small business'."
},
"competitors": {
"type": "array",
"items": {
"type": "string"
},
"description": "Competitor root domains to track share-of-voice against and diagnose the winner, e.g. ['rival1.com','rival2.com']. Supplying the winner as a domain unlocks the link-gap diagnosis."
}
}
}