SEO Agent
Referenced as a marketplace for hiring freelancers to build links; not an integration target.
Source of the open-source SEO Agent package; not a link-building integration target.
Allows building dofollow backlinks on IMDb via profile placement, included in the free bundled backlink site list.
Allows building dofollow backlinks on Medium via article placement, included in the free bundled backlink site list.
Allows building dofollow backlinks on Zotero via profile placement, included in the free bundled backlink site list.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SEO AgentBuild 5 dofollow backlinks at DA 60+ for my site and verify them"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SEO Agent
Open-source AI SEO Agent and MCP server for Claude Code, Cursor and Codex.
SEO Agent is an open-source SEO agent for link building. It runs as an MCP server inside Claude Code, Cursor, Codex or any MCP client: you say what you need, it asks for your URL and keywords, plans the campaign, builds each link by following that site's method, checks that the link went live, and hands you the live URLs with proof.
What it does
Searches a library of 1,245 backlink sites with Domain Authority, referring domains, spam score and dofollow status. Twenty-five ship free inside the package, two of them at DA 90+; the rest show up locked, by name and DA, and unlock with a subscription (
search_sites).Gives your assistant the method for each site: the playbook for that kind of link, the guide steps parsed into actions with the exact button names, and what the site requires (
get_method).Plans a campaign for your URL: sites inside your DA range, the dofollow share you asked for, methods spread, anchor text assigned by ratio (
plan_campaign, subscription).Builds links in your browser with a proof screenshot on login-free sites, free; on account-based sites with the model-driven executor on a subscription (
build_link,queue_build).Verifies every link by fetching the live page and checking the hyperlink, the anchor text and nofollow (
verify_link).Handles gates in the chat: at a captcha, email code or login it asks you, or with a subscription uses a service you connected once (
resolve_gate,connect_service,read_inbox).Suggests the keywords and anchors by reading the target page itself, then allocates them across the five anchor types so your profile is not one phrase forty times (
suggest_keywords, subscription).Watches the links afterwards: weekly re-checks of everything it placed, plus every referring domain to your site, what is new and lost each month, spam flags and a disavow file (
recheck_links,monitor_backlinks, subscription).Finds what competitors have and you do not, with the method to build each one attached (
competitor_gap, subscription).Paces the campaign so links arrive steadily across days and methods rather than in a burst, and runs many sites under one subscription (
register_site, subscription).
Twenty-six tools in all; the tool reference lists every one.
Quick start
pip install seo-agent && playwright install chromium
claude mcp add seo-agent -- seo-agentAny other MCP client, in its mcpServers config:
{ "mcpServers": { "seo-agent": { "command": "seo-agent" } } }Then ask: Build a link to my site on a dofollow site from the free list, and verify it.
Documentation: https://m4mansoor.github.io/seo-agent/ · Repository: https://github.com/m4mansoor/seo-agent
A session, start to finish
That is the whole interaction, on the free list alone. In detail:
You ask in plain language: I need 5 dofollow backlinks, DA 60 or higher.
The agent asks for two things: the URL the links should point to, and your main keywords. It stores your sign-up identity once so every form is filled the same way.
It plans: picks sites by authority and effort inside your DA range, keeps the dofollow share you asked for, spreads the methods so it is not five profile pages, and assigns anchor text by ratio: exact, partial, branded, naked, generic. The free list reaches DA 96: Medium, IMDB, Zotero, ArtFire, Milkyway (.edu), all dofollow. When you ask for more at the top end, it shows what the full library holds and offers the subscription.
It builds: login-free sites are built by scripted playbooks with a proof screenshot. Sites that need an account, which is where the high DA lives, are built by the model-driven browser executor: it reads the site's playbook, the guide steps with the exact button names, and a snapshot of the page each turn, then signs up, fills the profile or writes the post, and places the link. In free mode it hands you the same method to follow in your own browser. Long builds run in the background so your chat never times out.
It verifies: opens the public page and checks that the target is a real hyperlink, that the anchor matches, and whether the link is nofollow. Plain-text URLs, redirect pages and noindex pages do not count as verified.
It reports: live URL, anchor, dofollow or nofollow and proof per link, a campaign report, and a re-check later so you know which links still stand. When a site asks for a captcha, a verification code or a login, the agent asks you in the same chat and continues once it is cleared.
The session above is illustrative.
Related MCP server: crawlgraph-mcp
How it works
What is in the library
Sites | 1,245, of which 1,138 verified reachable this month |
Dofollow | 900 |
DA 90 or higher | 117 |
Metrics per site | Domain Authority, referring domains, total backlinks, spam score, organic traffic |
Methods | profile fields, articles and guest posts, social bookmarking, web 2.0 pages, forums and signatures, directories, shared documents, comments, Q&A, URL shorteners |
Per site | the step-by-step method parsed into actions, the placement step, and what the site requires: account, inbox, captcha, social login, upload, moderation |
Twenty-five of these sites, with their methods, are bundled free. The rest, the campaign planner, automatic building and verification come with a free API key when the hosted service opens.
Free: 25 sites from GitHub, right now
The package is the agent. It runs on your machine, builds links in your own browser on the login-free sites, follows the method with you on the rest, verifies every link and keeps the log. No account, no key, nothing sent anywhere. Requires Python 3.10 or newer.
Claude Code
pip install seo-agent && playwright install chromium
claude mcp add seo-agent -- seo-agentClaude Desktop, Cursor, Codex and any other MCP client take the same command in their config:
{ "mcpServers": { "seo-agent": { "command": "seo-agent" } } }Then ask: I need 5 dofollow backlinks from the free list for https://example.com, keyword "example". The assistant searches the 25 sites, calls build_link where it can build by itself, follows get_method where an account is needed, verifies each link and logs it. Ask how many links have I built any time; it calls account.
Subscribe: every site, $97 a year or $27 a month
When you ask for more high-DA sites than the free list holds, the assistant shows what is locked and gives you the payment links; or call upgrade. Subscribe at https://mcp.seoagent.dev/buy?plan=yearly ($97 a year, about $8 a month) or https://mcp.seoagent.dev/buy?plan=monthly ($27 a month, cancel any time), copy the key from the success page, and tell your assistant:
activate le_your_keyNo restart, no config file. From that message on, the same MCP has the full 1,245-site library, the campaign planner, browser building on account-based sites, gates with connected services, background jobs, identity generation, monitoring, campaign reports and a dashboard. Fair use is 500 placed links per key in any 30 days.
No pip? Use the link instead. The success page also shows a personal MCP link, https://mcp.seoagent.dev/u/le_…/mcp. Paste it into Claude Desktop or claude.ai (Settings, Connectors, Add custom connector, no OAuth), ChatGPT (Settings, Connectors, Developer mode) or Cursor ("url" instead of "command"). It carries your key, so keep it private.
What it replaces
Fifty verified, dofollow-checked backlinks a month is a job. Typical ways to get it done, at typical market rates:
Cost | Time to 50 links | Knows the sites? | |
In-house link builder | $2,500 to $4,000 a month salary, plus tools | 3 to 6 weeks, at 30 to 60 minutes per link | Only the sites they have used before; a new hire starts from a blank list |
Agency or marketplace | $150 to $400 per DA 40+ dofollow link, so $7,500 to $20,000 per 50 | 4 to 8 weeks | Their list, not yours; you never see the method |
Freelancer on a gig site | $10 to $50 per link | 1 to 2 weeks | Usually the same 100 sites everyone else spams |
SEO Agent | $97 a year or $27 a month | An afternoon; login-free sites build in seconds each | 1,245 sites with the exact method for each, verified reachable monthly, with DataForSEO metrics |
The library is the part a team cannot copy quickly. Every site in it came from years of link building: which DA 60 profile page still gives a dofollow link, which forum strips links from new members, which shortener sits behind a captcha, which directory approves in a day. Each entry carries the step-by-step method with the exact button names, what the site requires, and referring domains, spam score and traffic from DataForSEO. A person could rebuild that list, but it would take them the same years.
The agent does not replace judgement: you still choose the keywords, the anchor ratio and which links are worth having. It replaces the hours, and it remembers the sites.
The free backlink sites list
Twenty-five sites from the library, all verified reachable, DA 20 to 96, 25 of them dofollow, two of them at DA 90 or higher. Each has a method your assistant can follow.
Site | DA | Referring domains | Link | Method | Needs |
Medium | 96 | 1,371,100 | dofollow | Article or blog post | sign-up |
IMDB | 95 | 891,904 | dofollow | Profile website field | no account |
Zotero | 75 | 51,364 | dofollow | Bookmark / link submit | sign-up |
ArtFire | 75 | 31,486 | dofollow | Profile website field | sign-up |
Milkyway (.edu) | 75 | 9,011 | dofollow | Profile website field | sign-up |
DsiBlogger | 74 | 37,269 | dofollow | Article or blog post | sign-up |
FireBlogz | 74 | 39,401 | dofollow | Article or blog post | sign-up |
Beatstars | 73 | 39,465 | dofollow | Page builder site | sign-up |
Flip HTML5 | 73 | 226,903 | dofollow | Shared document | sign-up |
Figma | 71 | 101,339 | dofollow | Social post | sign-up |
MD Anderson | 71 | 918 | dofollow | Other | no account |
Wakelet | 71 | 191,490 | dofollow | Bookmark / link submit | sign-up |
GrowthHackers | 68 | 7,690 | dofollow | Forum post | sign-up |
Gust | 67 | 11,264 | dofollow | Directory listing | sign-up |
RiseUp | 64 | 11,528 | dofollow | Page builder site | sign-up |
Wantedly | 64 | 29,585 | dofollow | Bookmark / link submit | sign-up |
XtGem | 64 | 26,727 | dofollow | Page builder site | sign-up |
Ouo Press | 60 | 4,724 | dofollow | URL shortener | no account |
BlogFree | 58 | 5,019 | dofollow | Forum signature | sign-up |
Pub HTML5 | 56 | 99,088 | dofollow | Shared document | sign-up |
AxMag | 54 | 1,668 | dofollow | Shared document | sign-up |
Yooco | 43 | 8,568 | dofollow | Comment | sign-up |
N9.cl Shortener | 40 | 17,321 | dofollow | URL shortener | no account |
Goolnk.com Shortener | 23 | 1,922 | dofollow | URL shortener | no account |
YellKey Shortener | 20 | 389 | dofollow | URL shortener | no account |
More lists, with DA and referring domains: social bookmarking sites, profile creation sites, guest posting sites, web 2.0 sites, directory submission sites, forum posting sites, high DA backlinks.
Why SEO Agent and not another SEO MCP server
It builds, not only reports. Most SEO MCP servers wrap a metrics API. This one follows a site's method in a browser, places the link and proves it with a screenshot and a live-page check.
The library is the moat. 1,245 sites, each with its parsed step-by-step method, verified reachable monthly, with DataForSEO metrics. Twenty-five are free with no key, two of them at DA 90 or higher; the rest appear locked by name and DA.
It is honest about limits. A captcha or a login is a gate it asks you about, never something it fakes its way past. Links that are plain text, nofollow or on a noindex page are reported as such.
Gates are handled in the chat, not skipped
A captcha, an email verification, a phone code, a social login or a payment step is a gate. The agent stops at the gate, tells you what the site wants, and offers the ways through, in the same conversation:
Clear it yourself: it opens the page in a visible browser window and waits while you solve the captcha or log in.
Connect a service once: a captcha solver, your inbox over IMAP, or an SMS number. From then on the agent reads the verification link or code itself and continues without asking.
Paste the code: you read the email or SMS and paste the code into the chat.
Skip the site: it moves to the next site in the plan.
It never fakes a person or works around a site's rules, which keeps your site out of trouble and the links worth having.
Everything a subscription adds
Activate in the chat; nothing else changes.
Feature | What you get |
Model-driven executor | Builds on account-based sites: sign-up, profile fields, articles, forum posts, directory listings, page builders |
Your own AI model | Connect an Anthropic, OpenAI, Google or OpenRouter key once; it drives the browser on account-based sites, so model cost is yours and under your control |
Gates and services | Captcha solver, IMAP inbox and SMS connected once; verification links and codes read automatically |
Background jobs |
|
Identity generation |
|
Monitoring |
|
Campaign reports |
|
Dashboard | A web page per API key with credits, campaigns, results and proof screenshots |
Competitor gap | The referring domains your competitors have and you do not, each row carrying the method to build it |
Keyword and anchor suggestions | Read a target page and get keywords and a full anchor plan across the five types |
Link velocity pacing | Links spread across days and methods, never fired in a burst |
Multi-site | Register many sites under one subscription, each with its own caps and reports |
Fair use | 500 placed links per key in any 30 days; only verified live links count |
Configuration
Nothing is required. activate stores your key in ~/.seoagent/config.json; results live in ~/.seoagent/results.db. Two optional variables override that:
Variable | Purpose |
| A subscription key, for environments where a config file is inconvenient (CI, containers). |
| The hosted endpoint, or a personal link |
Where it runs
One engine, one library, one subscription. Four ways in, at four different stages.
Door | Status | What it is |
Any AI assistant | Live | Claude Code, Claude Desktop, claude.ai, Cursor, Codex, ChatGPT, Windsurf. |
In development | Posts, pages and WooCommerce products as targets. Campaigns, gates, weekly monitoring and white-label reports inside wp-admin. | |
In development | Products and collections as targets, embedded in the Shopify admin, billed through Shopify. | |
In development | The only door that uses accounts you are already signed in to. Its own browser, your own model key, nothing uploaded. |
The roadmap says plainly what is live, what is being built, and what will never be built.
Guides
Documentation site: https://m4mansoor.github.io/seo-agent/
Licence and author
MIT. Built by Engr. Inaamul Haq Mansoor (@m4mansoor).
Available Tools
10 toolsaccountA
Current plan, links placed, and how to upgrade. Call it when the user asks about credits, pricing or limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool returns current plan and link placement info and mentions upgrade guidance, which implies a read-only informational behavior. It doesn't state whether it mutates anything or whether it requires authentication, but for a zero-parameter account status tool, the description is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the content summary and then the trigger condition. Every word earns its place; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter informational tool with no output schema, the description tells the agent what it returns and when to call it. It doesn't describe the exact response shape, but that's not required without an output schema. It could mention that it's read-only, but the content summary implies that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden. The description explains what the tool reports, which is the only relevant semantic content. Baseline 4 for zero params is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose: it reports current plan, links placed, and how to upgrade. It also names the trigger conditions ('credits, pricing or limits'), which helps an agent recognize when to call it. It doesn't explicitly distinguish it from siblings like upgrade, but the resource ('account') and content summary are specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit trigger conditions: 'Call it when the user asks about credits, pricing or limits.' This is clear usage guidance. It doesn't mention when not to use it or point to alternatives like upgrade, but the trigger list is actionable and sufficient for a simple zero-parameter tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activateA
Activate a subscription key (le_...) or a personal MCP link from the purchase success page. Verifies it with the hosted engine and saves it here; from then on every hosted tool is available.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It states that the tool verifies with the hosted engine and saves the key, and that all hosted tools become available afterward. However, it does not disclose potential failure modes, whether the operation is reversible, or what happens if the key is invalid, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences with the primary action front-loaded. It avoids fluff and every sentence contributes to understanding the tool's purpose and effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the core functionality, the source of the key, and the consequence of activation. It does not mention return values or edge cases, but these are less critical given the tool's simplicity. Overall, it is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does provide a hint about the key format ('le_...') and indicates it can be either a subscription key or a personal MCP link, but it does not fully explain validation rules or how to obtain a valid key. This adds some meaning beyond the bare schema but is not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: activating a subscription key or personal MCP link, with verification and saving. It specifies the resource type and effect (making hosted tools available), and is distinct from sibling tools like search_sites or verify_link, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by mentioning the purchase success page as the source of the key, implying the tool is used after purchase. However, it does not explicitly state when not to use it or name alternatives, though no direct alternative exists among siblings, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_linkA
Build one backlink in a browser on this machine (login-free sites: shorteners and open submit forms), with a proof screenshot. On other sites it returns the method for you to follow. Status placed means verified live; gated means a captcha appeared: ask the user, then retry with headless=false or skip.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| headless | No | ||
| target_url | Yes | ||
| anchor_text | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers rich behavioral context: status meanings ('placed means verified live; gated means a captcha appeared'), a concrete retry action (headless=false or skip), and explicit instruction to ask the user when gated. This goes well beyond what any structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. The core action is front-loaded, followed by edge-case status handling and user interaction guidance. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with 5 parameters and no output schema. The description explains status outcomes and captcha handling well, but it does not define parameters or describe the exact return format (e.g., what the 'method' looks like, how the proof screenshot is returned). Adequate for basic use, with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only adds meaning to headless (via the retry guidance), while slug, target_url, anchor_text, and description are left undefined. Even required parameters like slug and target_url are genuinely ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Build one backlink in a browser on this machine' with a clear scope (login-free sites: shorteners and open submit forms) and an artifact (proof screenshot). It also distinguishes behavior from the sibling get_method by noting that on other sites it returns a method to follow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly scopes usage to login-free sites and tells the agent what happens on other sites ('returns the method for you to follow'). It does not name sibling tools or provide explicit when-not-to-use/alternatives, so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_methodC
The method for one site: playbook for its link type, what it requires, the ordered actions with exact button names, and which action places the link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It describes the content of the response but does not state whether the operation is read-only, requires authentication/upgrade, has side effects, or how errors are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and captures the core output components. It is reasonably front-loaded, though the dense clause structure makes it slightly less scannable than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-style tool, the description conveys the essential output contents. However, it omits how slug should be supplied/resolved, whether account or upgrade state is relevant, and what the actual response shape is, leaving some ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, slug, with 0% description coverage. The description only says 'one site', implying slug identifies the site, but it does not explain slug format, how to obtain it, or validation expectations. This is insufficient compensation for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool returns a site-specific method/playbook, including link type, requirements, ordered actions, and the action that places the link. It is distinguishable from sibling tools like build_link or verify_link, though it lacks an explicit verb like 'retrieve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to call this tool versus alternatives such as build_link or verify_link. The phrase 'for one site' weakly implies the slug parameter selects a site, but no explicit usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_summaryB
What the free list contains and what a subscription adds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It implies a read-only, informational output about free vs subscription contents, but does not specify the return format, side effects, or any other behavioral nuances. Minimal transparency beyond the surface meaning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or redundant phrasing. It front-loads the core content and is appropriately sized for a zero-parameter informational tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description gives a general sense of the content but omits details an agent might need, such as the format of the summary (text, list, etc.) or how detailed the information is. It is adequate for a very simple informational tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4. The description adds contextual meaning by clarifying what the tool's content covers (free list and subscription additions), which is useful even though there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the subject matter—what the free list contains and what a subscription adds—but lacks a direct verb or explicit statement of the operation (e.g., 'Returns a summary...'). It is not tautological and hints at the tool's informational purpose, but it is vague about the exact action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus its siblings, nor any context, prerequisites, or exclusions. The description is a standalone phrase with no indication of the scenario in which this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resultsC
Every link built or logged on this machine.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only defines inclusion criteria ('built or logged on this machine') and does not mention read-only behavior, sorting, pagination, defaults, or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and has no wasted words, but it is under-specified rather than usefully concise. A tool description needs enough substance to guide selection and invocation; a fragmentary statement is not appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter tool with no output schema, the description still leaves out essential context: whether this is a read-only list, how limit behaves, and what the returned links actually look like. The statement is too sparse to support confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate by explaining the 'limit' parameter. It does not mention limit at all, leaving default behavior, maximum values, and ordering unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as 'every link built or logged on this machine,' which conveys scope and content, but it lacks an explicit verb such as 'lists' or 'retrieves.' It also does not differentiate this tool from siblings like search_sites or log_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. The description simply states what is included, without stating when to choose list_results over search_sites or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_linkC
Record a link you placed by following a method: status placed (verified live), unverified, manual or failed.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| notes | No | ||
| status | No | ||
| live_url | Yes | ||
| target_url | Yes | ||
| anchor_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that status can be 'placed (verified live), unverified, manual or failed', which is useful, but it does not state whether this is a write operation, any permissions required, the side effects, or the response format. The behavioral disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words, and the core action is front-loaded. It is concise and structured effectively, though it sacrifices necessary detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, no output schema, and no annotations, the description is highly incomplete. It does not explain the required fields, the meaning of most parameters, any return values, or the expected behavior. An agent cannot reliably invoke this tool correctly based on the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must compensate for the six undocumented parameters. It only mentions the 'status' values but provides no meaning for slug, target_url, live_url, notes, or anchor_text. This is a severe gap for a tool with no schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Record' and identifies the resource as 'a link you placed', with status options that clarify the action. It implicitly differentiates from siblings like build_link and verify_link by focusing on logging rather than creation or verification, though it does not name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for recording placed links but provides no explicit guidance on when to use this tool versus siblings, nor any exclusions or conditions. An agent would have to infer that this is for logging placements, with no comparison to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sitesA
Search the free list of 25 backlink sites by name, domain, method, DA and dofollow. auto_build marks the ones build_link can do by itself. The result also lists locked higher-DA matches from the full library; when the user wants those, offer the subscription (see ask_the_user). Methods: profile_website_field, article_post, bookmark_submit, url_shortener, page_builder, forum_post, directory_listing, document_share, social_post, comment, qa_answer, forum_signature.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| method | No | ||
| min_da | No | ||
| dofollow_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that results include auto_build-marked entries and locked higher-DA matches, and instructs the agent to offer a subscription for locked ones. It does not explicitly state read-only nature, but 'Search' implies a non-mutating operation, and it provides meaningful behavioral context beyond a bare definition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then adds behavioral notes and a method list in a compact form. It is efficient with no filler, though the method list adds length; still, it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with five optional parameters and no output schema or annotations, the description covers the main use case and result handling (free vs locked). However, it leaves the limit parameter undefined and does not describe the output structure, pagination, or error cases, making it adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions filterable fields (name, domain, method, DA, dofollow) that map to query, method, min_da, and dofollow_only, and lists valid method values. However, it omits the limit parameter entirely, leaving its meaning to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Search) and resource (free list of 25 backlink sites) with clear filter dimensions (name, domain, method, DA, dofollow). It distinguishes itself from siblings by focusing on searching the free list rather than building, verifying, or logging links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use as the search tool and explains how to handle locked results (offer subscription), but it does not explicitly contrast with alternatives like list_results or get_method. It gives contextual guidance for interpreting results but lacks explicit when-to-use versus sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgradeB
The subscription: every one of 1,245 sites and the whole engine, yearly or monthly. Returns the payment links and what to do after paying.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions the tool 'Returns the payment links and what to do after paying,' which gives some behavioral insight. However, it does not disclose whether the upgrade is immediate, idempotent, or requires authentication, nor what happens to existing subscriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the core purpose ('The subscription'). It avoids fluff but is slightly informal in phrasing ('every one of 1,245 sites'), which adds specificity but could be seen as unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the basics: what it does and what it returns. However, it lacks details on the process flow after payment, any prerequisites, or the relationship to sibling tools like 'activate' or 'account', which may be needed for correct usage in complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters, so the description doesn't need to document them. The description adds value by explaining that the tool returns payment links and post-payment steps, which is beyond what an empty schema conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool relates to upgrading 'the subscription' for sites and engine, with billing periods. It is clear enough for a tool named 'upgrade', distinguishing it from siblings like 'activate' or 'account', though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description does not mention prerequisites (e.g., requires an existing account) or situations where 'activate' or 'account' would be more appropriate. The context is implied by the word 'upgrade' but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_linkA
Fetch a live page and confirm the backlink: target URL present as a hyperlink, anchor text, and whether it is nofollow.
| Name | Required | Description | Default |
|---|---|---|---|
| live_url | Yes | ||
| target_url | Yes | ||
| anchor_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states the tool fetches a live page and checks for the target URL, anchor text, and nofollow status, which is transparent about the core behavior. However, it doesn't disclose potential side effects (e.g., network requests, rate limits) or what happens when the link is not found, which would be useful for a tool that performs live fetching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary action ('Fetch a live page') and then lists the specific verification checks. Every word earns its place, and the structure is easy to parse for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a verification tool with no output schema and no annotations, the description covers the core checks but leaves gaps: it doesn't specify the return format (e.g., boolean, structured result), how to interpret the nofollow check, or edge cases like redirects or page load failures. Given the tool's simplicity, this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'target URL' and 'anchor text' which map to the target_url and anchor_text parameters, but it doesn't explain the live_url parameter beyond the general 'Fetch a live page' context. The description adds some meaning but doesn't fully clarify the role of each parameter, especially anchor_text which is optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a live page and confirms a backlink, specifying the exact checks: target URL present as a hyperlink, anchor text, and nofollow status. It distinguishes itself from sibling tools like build_link and log_link by focusing on verification rather than creation or logging, though it doesn't explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you need to verify a backlink on a live page. It doesn't explicitly state when not to use it or mention alternatives like search_sites or list_results, but the verification-focused language provides enough context for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.2.0- First observed
account - First observed
activate - First observed
build_link - First observed
get_method - First observed
library_summary - First observed
list_results - First observed
log_link - First observed
search_sites - First observed
upgrade - First observed
verify_link
TDQS
Scored across 10 tools
Most tools have clear boundaries: search sites, get method, build, verify, log, and list results are distinct steps. The main confusion risk is build_link returning a method instead of only building, which overlaps somewhat with get_method, and search_sites vs library_summary both touch link discovery.
The core workflow tools follow a verb_noun pattern: search_sites, get_method, build_link, verify_link, log_link, list_results. However, account, upgrade, activate, and library_summary break the pattern with bare nouns or verbs, making the naming convention mixed but still readable.
Ten tools is well within the ideal range and each supports a clear part of the SEO backlink workflow. The inclusion of account, upgrade, activate, and library_summary may feel sales-oriented, but they are relevant to the server's subscription-gated functionality.
The core lifecycle is covered: discover sites, inspect the method, build or manually place links, verify them, log the result, and list all records. Minor gaps exist such as no way to update or delete a logged link and no direct browse of the full paid library, but agents can work around these.
Maintenance
Related MCP Connectors
Backlink & domain authority MCP for AI agents: referring domains, link gap, toxic review queue
Backlink Analysis MCP for AI Agents: authority, referring domains, and competitor link gaps.
Let AI agents buy dofollow backlinks: search 50,000+ vetted sites, order, publish. 7 hosted tools.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceClassic SEO suites charge heavily for link indexes. This MCP gives individuals and agencies a free, automatable path to: surface pages that mention a brand (linked or not), narrow guest-post and resource-page angles, see who links to competitors, verify whether a page links to you, and pull contact signals for outreach—all orchestrated by Claude or Cursor through typed tools instead of brittle copMIT
- AlicenseAqualityBmaintenanceMCP server for the CrawlGraph backlink-intelligence API. Gives any MCP client - Claude Desktop, Claude Code, Cursor, Cline, Zed, Windsurf - backlink lookups and competitor gap analysis built on the public Common Crawl webgraph (4.4B edges, 120M domains).416 npm5MIT
- AlicenseAqualityCmaintenanceFind backlink opportunities, analyze competitors, discover similar domains with AI embeddings, and manage prospecting projects directly from any MCP client.15MIT
- AlicenseAqualityAmaintenanceThe MCP server for SEO. Find prospects, draft outreach, and monitor backlinks from your AI agent.14MIT