Koskamo

AEO Backlink MCP

This MCP server enables AI agents to prospect link-building opportunities, find brand mentions (linked and unlinked), extract contact information, verify page history via Wayback Machine, and draft personalized cold outreach emails using free web signals.

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.

AEO Backlink MCP logo, by AEO ToolkitVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by AEO Toolkit
MCP endpoint (Streamable HTTP)
https://aeo.advancelabs.dev/api/mcp/backlink/mcp
Vendor documentation

What you can do with it

  • Find guest-post and resource-page link prospects for a topic
  • Find linked and unlinked brand mentions across the web
  • Extract contact emails and social media handles from pages
  • Draft personalized cold outreach emails using user's LLM key

Source and maintenance

Vendor evidenceRegistry 1.0.1
Maintenance checked

Protocol and capabilities

Server
aeo-backlink-mcp 0.1.0
MCP protocol
2025-06-18
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

7 advertised

find_mentions — Find brand mentions
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find linked and unlinked mentions of a brand across the web via web search results. When a domain is supplied, classifies each mention as linked (on the brand domain) or unlinked (a third-party page — a potential backlink opportunity).

find_mentions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "brand"
  ],
  "properties": {
    "brand": {
      "type": "string",
      "minLength": 1,
      "description": "Brand or product name to search mentions for."
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Max results (default 20)."
    },
    "domain": {
      "type": "string",
      "description": "The brand's own domain (e.g. acme.com) — used to classify linked vs unlinked."
    }
  },
  "additionalProperties": false
}
find_mentions annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
find_prospects — Find link prospects
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find guest-post, resource-page, and roundup link-building prospects for a topic by running classic outreach footprints through web search and merging the results by host.

find_prospects input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string",
      "minLength": 1,
      "description": "Niche or topic to find link-building prospects for."
    },
    "limitPerAngle": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Max results per outreach angle (default 8)."
    }
  },
  "additionalProperties": false
}
find_prospects annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
find_competitor_link_sources — Find competitor link sources
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Approximate the pages linking to a competitor using free web-search signals (domain mentions and brand mentions). De-duplicates by host and excludes the competitor's own domain. Not a complete backlink index — a free, directional starting point for prospecting.

find_competitor_link_sources input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "competitorUrl"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 40,
      "minimum": 1,
      "description": "Max sources (default 20)."
    },
    "competitorUrl": {
      "type": "string",
      "minLength": 1,
      "description": "Competitor's URL or domain (e.g. https://competitor.com or competitor.com)."
    }
  },
  "additionalProperties": false
}
find_competitor_link_sources annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_page_links — Verify page links
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fetch a page and confirm whether it contains a link to the target domain, reporting anchor text and rel attributes (nofollow/sponsored/ugc) and whether the link is dofollow.

verify_page_links input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url",
    "targetDomain"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The page URL to inspect."
    },
    "targetDomain": {
      "type": "string",
      "minLength": 1,
      "description": "The domain the link should point to (e.g. yoursite.com)."
    }
  },
  "additionalProperties": false
}
verify_page_links annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
extract_contact_info — Extract contact info
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fetch a page and extract contact emails (including de-obfuscated and mailto links) and social media handles (Twitter/X, LinkedIn, Facebook, Instagram, GitHub, YouTube).

extract_contact_info input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The page URL to extract contact info from."
    }
  },
  "additionalProperties": false
}
extract_contact_info annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_page_history — Check page history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return a Wayback Machine timeline for a URL: total snapshots, first/last archived dates, and a bounded list of snapshot records with direct archive links.

check_page_history input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The URL to look up in the Wayback Machine."
    },
    "limit": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1,
      "description": "Max snapshots to return (default 50)."
    }
  },
  "additionalProperties": false
}
check_page_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
generate_outreach_email — Generate outreach email
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Draft a short, personalized cold outreach email from a contact + context object using your own LLM key (BYOK). Returns a subject line and body. The API key is request-scoped and is never persisted or logged.

generate_outreach_email input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contact",
    "context",
    "provider",
    "model",
    "apiKey"
  ],
  "properties": {
    "model": {
      "type": "string",
      "minLength": 1,
      "description": "Model id (e.g. claude-sonnet-4-20250514)."
    },
    "apiKey": {
      "type": "string",
      "minLength": 1,
      "description": "BYOK API key — request-scoped, never persisted or logged."
    },
    "contact": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "role": {
          "type": "string"
        },
        "site": {
          "type": "string"
        },
        "email": {
          "type": "string"
        }
      },
      "description": "The recipient. All fields optional; more detail yields better personalization.",
      "additionalProperties": false
    },
    "context": {
      "type": "object",
      "required": [
        "fromBrand",
        "reason"
      ],
      "properties": {
        "tone": {
          "type": "string",
          "description": "Desired tone (default: concise, friendly, professional)."
        },
        "notes": {
          "type": "string",
          "description": "Personalization notes to weave in."
        },
        "reason": {
          "type": "string",
          "minLength": 1,
          "description": "Why you are reaching out (broken link, resource page fit, guest post, etc.)."
        },
        "fromName": {
          "type": "string",
          "description": "Your name, for the sign-off."
        },
        "fromBrand": {
          "type": "string",
          "minLength": 1,
          "description": "Your brand or site doing the outreach."
        },
        "targetUrl": {
          "type": "string",
          "description": "The page you want linked or featured."
        }
      },
      "description": "The outreach angle and sender context.",
      "additionalProperties": false
    },
    "provider": {
      "enum": [
        "anthropic",
        "openai",
        "groq",
        "perplexity",
        "gateway"
      ],
      "type": "string",
      "description": "LLM provider for @advance-labs/llm."
    },
    "maxTokens": {
      "type": "integer",
      "maximum": 4096,
      "minimum": 1
    },
    "temperature": {
      "type": "number",
      "maximum": 2,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
generate_outreach_email annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
500 ms
95th percentile latency
500 ms

Maintenance history

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

  • · probe · passed · 500 ms · metadata changed · 7 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 aeo-backlink-mcp https://aeo.advancelabs.dev/api/mcp/backlink/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 aeo-backlink-mcp --url https://aeo.advancelabs.dev/api/mcp/backlink/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable aeo-backlink-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "aeo-backlink-mcp": {
      "url": "https://aeo.advancelabs.dev/api/mcp/backlink/mcp"
    }
  }
}

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start aeo-backlink-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "aeo-backlink-mcp": {
      "type": "http",
      "url": "https://aeo.advancelabs.dev/api/mcp/backlink/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 aeo-backlink-mcp https://aeo.advancelabs.dev/api/mcp/backlink/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "aeo-backlink-mcp": {
      "url": "https://aeo.advancelabs.dev/api/mcp/backlink/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": {
    "aeo-backlink-mcp": {
      "serverUrl": "https://aeo.advancelabs.dev/api/mcp/backlink/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run AEO Backlink MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing