Koskamo

BacklinkMCP MCP server

A remote MCP server and REST API providing domain authority scores, backlink graphs, and technical SEO tools for AI agents. It enables querying referring domains, verifying live links, and auditing toxic backlinks without requiring a local installation or dashboard.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

BacklinkMCP logo, by BacklinkMCPCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by BacklinkMCP
MCP endpoint (Streamable HTTP)
https://backlinkmcp.com/api/mcp
Vendor documentation

What its tools do

13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

13 of 13 have a description · 13 of 13 declare behavior hints · 13 of 13 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Score domain authority and count referring domains
  • Rank top linking domains by authority
  • Verify if specific links are live on target pages
  • Audit inbound links for toxic or spammy patterns

Source and maintenance

Community listingRegistry 1.6.0
Maintenance checked

Protocol and capabilities

Server
backlinkmcp 1.6.0
MCP protocol negotiated in check
2025-06-18
Tools
13 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Thirteen tools: domain_authority_score, top_linkers_for_domain, backlinks_for_domain read from BacklinkMCP's proprietary web-scale link index; verify_link_live then fetches linker homepages in real time to confirm links exist today; find_link_prospects does competitor backlink-gap analysis (domains linking a competitor but not you); flag_toxic_links audits a domain's own linkers for spammy disavow candidates; common_linkers intersects 2+ domains to find who links the whole set; ai_visibility_report asks a panel of LLMs 'what's the best <category>' and reports your brand's share-of-voice, who wins, why (via our link data), and which domains to earn links from; ai_crawler_audit reads a site's robots.txt to report which AI crawlers it allows or blocks (visibility vs training bots) plus sitemap/robots hygiene, no LLM calls; site_audit checks one page's on-page SEO signals (title, meta, canonical, headings, alt text); schema_validate extracts and checks a page's JSON-LD structured data; core_web_vitals returns LCP/INP/CLS + performance score via Google PageSpeed Insights; indexnow_submit pings Bing/Yandex IndexNow with your own hosted key. Free up to 10 calls/day and 25 backlinks_for_domain rows; Pro is unlimited daily calls and the full 100-row backlinks_for_domain list — top_linkers_for_domain returns 25 on both tiers (backlinkmcp.com).

Tools

13 advertised

domain_authority_score — Domain authority score
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

domain_authority_score input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Root domain, e.g. 'stripe.com'."
    }
  }
}
domain_authority_score annotations
{
  "title": "Domain authority score",
  "readOnlyHint": true,
  "openWorldHint": true
}
top_linkers_for_domain — Top linking domains
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

top_linkers_for_domain input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Root domain, e.g. 'stripe.com'."
    }
  }
}
top_linkers_for_domain annotations
{
  "title": "Top linking domains",
  "readOnlyHint": true,
  "openWorldHint": true
}
backlinks_for_domain — Backlink profile
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

backlinks_for_domain input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Root domain, e.g. 'stripe.com'."
    }
  }
}
backlinks_for_domain annotations
{
  "title": "Backlink profile",
  "readOnlyHint": true,
  "openWorldHint": true
}
verify_link_live — Verify backlinks live
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

verify_link_live input schema
{
  "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."
    }
  }
}
verify_link_live annotations
{
  "title": "Verify backlinks live",
  "readOnlyHint": true,
  "openWorldHint": true
}
find_link_prospects — Competitor link gap
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

find_link_prospects input schema
{
  "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."
    }
  }
}
find_link_prospects annotations
{
  "title": "Competitor link gap",
  "readOnlyHint": true,
  "openWorldHint": true
}
flag_toxic_links — Toxic backlink review queue
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

flag_toxic_links input schema
{
  "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'."
    }
  }
}
flag_toxic_links annotations
{
  "title": "Toxic backlink review queue",
  "readOnlyHint": true,
  "openWorldHint": true
}
common_linkers — Common linkers across domains
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

common_linkers input schema
{
  "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."
    }
  }
}
common_linkers annotations
{
  "title": "Common linkers across domains",
  "readOnlyHint": true,
  "openWorldHint": true
}
ai_visibility_report — AI visibility report (Pro, spends credits)
Advertised by the server during the last successful anonymous check.
Open-world

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.

ai_visibility_report input schema
{
  "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."
    }
  }
}
ai_visibility_report annotations
{
  "title": "AI visibility report (Pro, spends credits)",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
ai_crawler_audit — AI crawler access audit
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

ai_crawler_audit input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Root domain to audit, e.g. 'yoursite.com'."
    }
  }
}
ai_crawler_audit annotations
{
  "title": "AI crawler access audit",
  "readOnlyHint": true,
  "openWorldHint": true
}
site_audit — On-page SEO audit
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

site_audit input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Full page URL, e.g. https://example.com/page"
    }
  }
}
site_audit annotations
{
  "title": "On-page SEO audit",
  "readOnlyHint": true,
  "openWorldHint": true
}
schema_validate — Structured data check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

schema_validate input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Full page URL to check for structured data."
    }
  }
}
schema_validate annotations
{
  "title": "Structured data check",
  "readOnlyHint": true,
  "openWorldHint": true
}
core_web_vitals — Core Web Vitals
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

core_web_vitals input schema
{
  "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'."
    }
  }
}
core_web_vitals annotations
{
  "title": "Core Web Vitals",
  "readOnlyHint": true,
  "openWorldHint": true
}
indexnow_submit — Submit URLs to IndexNow
Advertised by the server during the last successful anonymous check.
Open-world

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.

indexnow_submit input schema
{
  "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."
    }
  }
}
indexnow_submit annotations
{
  "title": "Submit URLs to IndexNow",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
559 ms
95th percentile latency
559 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 559 ms · metadata changed · 13 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http backlinkmcp https://backlinkmcp.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add backlinkmcp --url https://backlinkmcp.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable backlinkmcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "backlinkmcp": {
      "url": "https://backlinkmcp.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "backlinkmcp": {
      "type": "streamableHttp",
      "url": "https://backlinkmcp.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start backlinkmcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "backlinkmcp": {
      "type": "http",
      "url": "https://backlinkmcp.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http backlinkmcp https://backlinkmcp.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://backlinkmcp.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "backlinkmcp": {
      "serverUrl": "https://backlinkmcp.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like BacklinkMCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.