Find brand mentions, link prospects and competitor link sources, and draft outreach. Read-only.
Maintained by@zordhalo(verified)Also a maintainer?
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.
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.
The URL to look up in the Wayback Machine.
Max snapshots to return (default 50).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http aeo-backlink https://aeo.advancelabs.dev/api/mcp/backlink/mcp
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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The URL to look up in the Wayback Machine. |
| limit | integer | Max snapshots to return (default 50). |
{
"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
}Fetch a page and extract contact emails (including de-obfuscated and mailto links) and social media handles (Twitter/X, LinkedIn, Facebook, Instagram, GitHub, YouTube).
| Argument | Type | Description |
|---|---|---|
| url* | string | The page URL to extract contact info from. |
{
"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
}Approximate the pages linking to a competitor using free DuckDuckGo 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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max sources (default 20). |
| competitorUrl* | string | Competitor's URL or domain (e.g. https://competitor.com or competitor.com). |
{
"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 linked and unlinked mentions of a brand across the web via DuckDuckGo HTML 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).
| Argument | Type | Description |
|---|---|---|
| brand* | string | Brand or product name to search mentions for. |
| limit | integer | Max results (default 20). |
| domain | string | The brand's own domain (e.g. acme.com) — used to classify linked vs unlinked. |
{
"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 guest-post, resource-page, and roundup link-building prospects for a topic by running classic outreach footprints through DuckDuckGo and merging the results by host.
| Argument | Type | Description |
|---|---|---|
| topic* | string | Niche or topic to find link-building prospects for. |
| limitPerAngle | integer | Max results per outreach angle (default 8). |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| model* | string | Model id (e.g. claude-sonnet-4-20250514). |
| apiKey* | string | BYOK API key — request-scoped, never persisted or logged. |
| contact* | object | The recipient. All fields optional; more detail yields better personalization. |
| context* | object | The outreach angle and sender context. |
| provider* | string | LLM provider for @advance-labs/llm. |
| maxTokens | integer | |
| temperature | number |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The page URL to inspect. |
| targetDomain* | string | The domain the link should point to (e.g. yoursite.com). |
{
"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
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 31, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.