AEO Backlink

dev.advancelabsPublished by advancelabs.devOfficial publisherv1.0.1Updated Oct 31, 2026

Find brand mentions, link prospects and competitor link sources, and draft outreach. Read-only.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingBusiness & Commerce

Overview

AI-generated overview

Hosted MCP server for link-building research: finds brand mentions, link prospects and competitor link sources, verifies links, and drafts outreach emails.

What you can do
  • Find linked and unlinked brand mentions across the web, classified by whether they sit on the brand domain
  • Find guest-post, resource-page and roundup link-building prospects for a topic, merged by host
  • Approximate pages linking to a competitor from free search signals, excluding the competitor's own domain
  • Fetch a page to confirm a link to a target domain, with anchor text and rel attributes
  • Extract contact emails and social handles from a page, and pull a Wayback Machine snapshot timeline for a URL
  • Draft a personalized cold outreach email with subject and body using your own LLM key
When to use it
Useful for SEO, AEO or link-building work where you want an assistant to gather mention and prospect lists, check whether a page actually links to a site, and prepare outreach drafts without a paid backlink index.
Requirements
Remote Streamable-HTTP endpoint; nothing to install locally. No credentials are needed to connect. The outreach email tool requires your own LLM API key, supplied per request. Network access to the hosted service, which in turn queries DuckDuckGo, target pages and the Wayback Machine.
Before you install
The outreach tool takes your own LLM API key per request; the provider states it is request-scoped and never persisted or logged, but it is still a secret passed to a third party. Competitor link data is explicitly an approximation, not a complete backlink index. The server fetches arbitrary pages you point it at. Tools are described as read-only, but the email tool generates content you may send.

Installation

In SourceWeft

  1. Open AEO Backlink in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/dev.advancelabs%2Faeo-backlink/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "aeo-backlink": {
      "type": "http",
      "url": "https://aeo.advancelabs.dev/api/mcp/backlink/mcp"
    }
  }
}

README

Open-source TypeScript packages for Answer Engine Optimization (AEO), Generative Engine Optimization (GEO), and AI citation visibility. Contributions welcome, see CONTRIBUTING.md.

Open core. This repo is the open-source half of the AEO Toolkit: the audit engine, crawler, parser, schema validator and the Chrome extension, all Apache-2.0 and published to npm. The hosted platform behind advancelabs.dev/tools and the three MCP servers (the console, OAuth, billing, the Google and Bing integrations) moved to a private repository on 2026-10-20. Code published here before that date stays Apache-2.0.

Try it without installing anything: the six browser tools run free in the browser at advancelabs.dev/tools, with no sign-up and no account. Point the auditor at a URL and it returns a weighted, per-rule report in about a minute. Want it done for you? Advance Labs runs a monthly AEO retainer.

The hosted side is six browser tools (technical audit, E-E-A-T scan, llms.txt generator, GA4 + GSC chat, backlink graph, authority) and three MCP servers (ai-visibility, backlink, search) exposing 32 tools to Claude or any MCP client. They are proprietary and run on advancelabs.dev. This repo is the open core: the audit engine packages, the Chrome extension and the skills. See docs/reference/tools.md for the full map.


What it looks like

The hosted site is drawn in dithered pixel art: a figure pushing a faceted sphere up a slope under a dusk sky.

[The MCP page: Connect the AEO Toolkit to your AI client]

What is AEO?

Answer Engine Optimization (AEO) is the practice of structuring your content so that AI assistants (ChatGPT, Perplexity, Claude, Gemini) cite your site when answering questions in your domain. Traditional SEO gets you ranked on the blue-link results page. AEO gets you quoted in the AI answer.

As AI-powered search becomes the default discovery layer, AEO is the new SEO.


The audit

The hosted technical audit runs 44 checks (31 technical SEO + 13 AEO) across crawlability, AI-bot access, structured data, metadata and answer readiness, scored out of 100, with a prioritised fix list and templates for any crawl-hint file you're missing. The E-E-A-T scan is a separate tool that scores 14 signals. The engine defines 58 in total (44 + 14), but the audit itself runs 44. Free, no account, and your data stays yours.


The Chrome extension

AEO/GEO Auditor puts the same engine on your toolbar. Open any page, click the icon, and get a 0 to 100 AI-readiness score with a letter grade and a list of what to fix. Export it as a PDF.

It runs auditRules from packages/scoring/src/audit.ts: 44 checks across 9 categories (31 technical-SEO + 13 AEO) from extension 0.3.0, built on scoring 0.3.x. The Chrome Web Store build before that (0.2.0) ran 40, so the listing changes when 0.3.0 is published. The 14 E-E-A-T signals are a separate scorer the extension does not run, 58 is the engine total (44 + 14), not what any one audit runs.

Everything happens in your browser. No account, no server, no analytics, no telemetry. The only network requests are to the audited site's own robots.txt, sitemap.xml, and llms.txt, which is what the host permission is for. Nothing is stored, because nothing is sent.

Build it yourself:

bash
pnpm --filter @advance-labs/chrome-extension package# → apps/chrome-extension/aeo-extension.zip, loadable via chrome://extensions (Developer mode → Load unpacked, on dist/)

Packages

PackageDescription
@advance-labs/crawlerMulti-threaded web crawler with robots.txt compliance, sitemap parsing, and per-host rate limiting
@advance-labs/html-parserExtracts meta tags, Open Graph, Twitter Cards, headings, images, links, and JSON-LD from HTML
@advance-labs/schema-validatorValidates Schema.org JSON-LD structured data against known types
@advance-labs/scoringScores pages on 44 technical SEO and AEO checks, plus a separate 14-signal E-E-A-T scorer, with per-rule explanations

Plus @advance-labs/net-guard and @advance-labs/types. The one application here is apps/chrome-extension; the hosted console is not open source.


Quick Start

Six packages are published to npm and usable on their own:

bash
npm i @advance-labs/scoring      # the 44-check audit enginenpm i @advance-labs/net-guard    # SSRF-safe fetch: re-checks every redirect hopnpm i @advance-labs/crawler      # polite crawler with robots.txt + rate limitingnpm i @advance-labs/html-parsernpm i @advance-labs/schema-validatornpm i @advance-labs/types        # shared types, a dependency of the above

The hosted tools at advancelabs.dev/tools need no install at all.

bash
git clone https://github.com/Advance-Labs/aeo-toolkit.gitcd aeo-toolkitpnpm installpnpm build          # turbo builds every packagepnpm test           # the full suite, no network

Read the full documentation at docs.advancelabs.dev/aeo-toolkit.

Once built, the packages compose like this:

js
import { crawl } from '@advance-labs/crawler'import { parseHtml } from '@advance-labs/html-parser'import { analyzeStructuredData } from '@advance-labs/schema-validator'import { buildAuditReport } from '@advance-labs/scoring'
const result = await crawl('https://example.com/', { maxPages: 2 })const html = result.pages.filter((p) => p.ok && p.body && p.contentType?.includes('html'))
const report = await buildAuditReport(  {    crawl: result,    pages: html.map((p) => parseHtml(p.body, p.finalUrl)),    structuredData: html.map((p) => analyzeStructuredData(p.body, p.finalUrl)),    mode: 'full-site',  },  { durationMs: 0, version: '1.0.0' },)
console.log(report.url, report.score.overall, report.score.grade)console.log(report.topFixes.slice(0, 3).map((f) => f.title))

Connect the MCP servers

[mcptry]

Listed in the official MCP Registry as dev.advancelabs/aeo-search, dev.advancelabs/aeo-visibility and dev.advancelabs/aeo-backlink.

The three MCP servers are hosted, not installed. They are Streamable-HTTP endpoints, so there is nothing to npm install and no local process to run. Point any MCP client at the URL.

Claude Code: one command per server:

bash
claude mcp add --transport http --scope user aeo-visibility https://aeo.advancelabs.dev/api/mcp/ai-visibility/mcpclaude mcp add --transport http --scope user aeo-backlink   https://aeo.advancelabs.dev/api/mcp/backlink/mcpclaude mcp add --transport http --scope user aeo-search     https://aeo.advancelabs.dev/api/mcp/search/mcp

Drop --scope user to register them in the current project only. Check the result with claude mcp list.

Claude.ai / Claude Desktop: Settings → Connectors → Add custom connector, then paste the URL.

Cursor (~/.cursor/mcp.json), Windsurf, or any client that takes a JSON block:

json
{  "mcpServers": {    "aeo-visibility": { "url": "https://aeo.advancelabs.dev/api/mcp/ai-visibility/mcp" },    "aeo-backlink":   { "url": "https://aeo.advancelabs.dev/api/mcp/backlink/mcp" },    "aeo-search":     { "url": "https://aeo.advancelabs.dev/api/mcp/search/mcp" }  }}
ServerToolsCredentials
aeo-visibility5None to connect. Citation checks take a Perplexity key per request.
aeo-backlink7None.
aeo-search20Sign in with Google: the client opens a browser on first use (in Claude Code, /mcp → Authenticate). Or BYOK: a Google access token as Authorization: Bearer, plus an optional x-bing-api-key.

Three things that trip people up:

  • The trailing /mcp is required. The bare /api/mcp/<slug> returns the adapter's own "Not found", which looks like a routing bug and is not.
  • Only aeo-search has a login, and its discovery is path-scoped. It answers an anonymous request with a 401 pointing at /.well-known/oauth-protected-resource/api/mcp/search/mcp; its authorization server is /api/mcp/oauth. The ROOT /.well-known/oauth-* documents deliberately return 404, because aeo-visibility and aeo-backlink need no login.
  • Every tool is read-only. None calls a write method on any upstream API.

/api/mcp/ga-gsc/mcp still works as a compatibility alias for aeo-search; new configs should use /api/mcp/search/mcp.


Why AEO?

When a user asks ChatGPT "what is the best tool for X?", the answer comes from indexed content that AI models trust, not from ad-auction bidding. The trust signals for AI citation are:

  • Structured data (JSON-LD Organization, FAQPage, HowTo)
  • llms.txt: the AI equivalent of robots.txt
  • Canonical, server-rendered HTML: AI crawlers prefer static content
  • Topical authority: consistent, in-depth coverage of a topic

AEO Toolkit automates auditing all of these.


Monorepo Structure

aeo-toolkit/├── packages/          # the six published libraries, plus shared config├── apps/chrome-extension/├── apps/docs/         # Astro + Starlight docs site (renders ../../docs)├── docs/              # the documentation itself└── brand/             # the mark, lockups, palette and type (brand/README.md)

Built with Turborepo · TypeScript 5 · Vitest · React 19


Design

The site is pixel art: a figure pushing a faceted sphere under a dithered dusk sky. Art is drawn at a coarse cell, snapped to a small palette (ink, paper, two dusk oranges) with a 4x4 Bayer ordered dither and scaled up with hard edges. Labels use Geist Pixel Square, headings and body Geist Sans, code Geist Mono. Corners are square and shadows are hard-offset. The palette, type, tokens and rules are in brand/README.md, with the assets beside it. Anything a user sees should follow it, and docs/CONVENTIONS.md says how in code.


Made by Advance Labs

Built and maintained by Advance Labs · All Advance Labs products

AEO Toolkit is built and maintained by Advance Labs Inc., a software studio building Creatin, Cartrix, and this toolkit.

This project dogfoods its own tooling: advancelabs.dev ships with llms.txt, JSON-LD Organization schema, SSG-rendered pages, and canonical URLs, all patterns the scoring engine teaches.


Code of Conduct

We follow the Contributor Covenant: be respectful and constructive in all project spaces, and report unacceptable behavior to [email protected].


© 2026 Advance Labs Inc. · advancelabs.dev

Source: README.md at commit 8381d1a

Tools

7

find_mentions

Find brand mentions

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

Parametersbrandrequiredlimitdomain

find_prospects

Find link prospects

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.

ParameterstopicrequiredlimitPerAngle

extract_contact_info

Extract contact info

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

Parametersurlrequired

check_page_history

Check page history

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.

Parametersurlrequiredlimit

generate_outreach_email

Generate outreach email

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.

ParametersmodelrequiredapiKeyrequiredcontactrequiredcontextrequiredproviderrequiredmaxTokenstemperature

Version history

2
  1. v1.0.1LatestOct 31, 2026
  2. v1.0.0Oct 31, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Advancelabs integrations