Corpus Plan
Server Details
Free SEO/GEO audits of public websites and AI answer-engine citation checks. No login or API key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Most tools have distinct purposes: run_audit starts an audit, check_citations queries Perplexity, describe_corpus_plan returns meta info. get_public_report and get_report_progress both involve a public report slug, so an agent could momentarily confuse them, but their descriptions clearly separate final report retrieval from progress status.
All tool names follow a consistent verb_noun snake_case pattern: check_citations, describe_corpus_plan, get_public_report, get_report_progress, run_audit. No deviations or mixed conventions.
Five tools is well-scoped for a public SEO/GEO audit service. Each tool covers a distinct step: initiating an audit, tracking progress, fetching the report, checking citations, and describing capabilities.
The surface covers the core lifecycle: start audit, monitor progress, retrieve report, check citations, and describe service. Minor gaps exist—no tool to save a report or list existing audits—but agents can work around these via the provided workspace link.
Available Tools
5 toolscheck_citationsCheck which sites an AI answer engine citesAInspect
Use this when the user asks whether AI answer engines cite their website. Asks one answer engine (Perplexity) three customer-style questions written from the site's own pages and returns each question, the sites it cited, whether this site was one of them, and the date. A result for the same site from the last 24 hours is returned again instead of asking again.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website to check, e.g. example.com. | |
| brand | No | Optional business name, used to keep it out of the questions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With openWorldHint=true, idempotentHint=false and readOnlyHint=false already declared, the description adds real context: it discloses that live external queries are made, the exact question count and style, the return payload, and a 24-hour cache that re-serves prior results instead of re-asking. That explains the non-idempotent annotation rather than contradicting it. It still doesn't say what happens on failure or query cost/latency.
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?
Three sentences, each earning its place: trigger, mechanism, caching. The trigger is front-loaded and there is no redundant restatement of the title or name.
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?
No output schema exists, so the description correctly spends words on the return shape (each question, cited sites, whether this site was cited, date) and on the caching behavior. Parameters are covered by the schema. The only gap is failure/error behavior and any statement about scope or cost limits.
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 100%, so both parameters are already documented, and the baseline is 3. The description adds meaning for `url` (the site whose citations are checked, and the source of the generated questions) but says nothing about `brand`, so it does not meaningfully exceed the schema.
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 (check whether AI answer engines cite a website) and pins down the mechanism: one answer engine (Perplexity), three customer-style questions drawn from the site's own pages. That level of specificity distinguishes it from siblings like run_audit and get_public_report without requiring the agent to open any schema.
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?
"Use this when the user asks whether AI answer engines cite their website" gives an explicit trigger condition. It does not name alternatives or exclusions (e.g. when to prefer run_audit or get_public_report), and it says "engines" plural while only Perplexity is actually queried, but the primary when-to-use signal is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_corpus_planDescribe Corpus Plan public auditsARead-onlyIdempotentInspect
Return Corpus Plan's public SEO/GEO audit capabilities, product links, and safety notes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, covering the safety profile fully. The description adds only that the response contains capabilities, product links, and safety notes; it does not say whether the content is static or how large the payload is.
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?
A single front-loaded sentence that names the resource and enumerates the three content categories with no filler. Nothing in it is redundant.
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 enough: it returns capability metadata, product links, and safety notes. Only the return shape is left unspecified, which is a minor gap for a static info endpoint.
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 takes zero parameters, so by convention the baseline is 4. There is nothing parameter-related for the description to clarify or compensate for.
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 ('Return') and resource (Corpus Plan's public SEO/GEO audit capabilities, product links, safety notes). It is clearly distinguishable in kind from action-oriented siblings like run_audit and get_report_progress, though it never names them explicitly.
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?
There is no statement of when to call this versus alternatives such as run_audit or get_public_report, and no prerequisites or exclusions. Usage is only inferable from the verb 'Return'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_reportRead a saved shared audit reportARead-onlyIdempotentInspect
Read the stored public audit report for a saved Corpus Plan share slug. Unsaved reports require saving through the website first. Only public report facts are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug from a /r/{slug} Corpus Plan report URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds real value beyond that by disclosing the failure mode for unsaved reports and scoping the return to 'public report facts' only.
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?
Three short sentences, zero filler, with the resource and scope front-loaded before the prerequisite caveat and the return-value note.
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 tool with no output schema and full annotation coverage, the description supplies purpose, prerequisite, and return scope. It could say slightly more about the shape of the returned facts, but nothing critical for correct invocation is missing.
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 coverage is 100% and the single slug parameter is fully documented with a pattern and URL provenance, so the schema does the heavy lifting. The description's mention of 'share slug' is consistent but adds no syntax or format detail beyond the schema.
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 (read) and resource (stored public audit report) scoped to a saved Corpus Plan share slug, which clearly separates it from get_report_progress and describe_corpus_plan.
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 states the prerequisite that unsaved reports must be saved through the website first, which tells the agent when this call will fail. It stops short of naming an alternative sibling for other report needs, so it is not a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_progressRead shared audit progressARead-onlyIdempotentInspect
Read the current status and progress lines for a Corpus Plan audit behind a public report slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug from a /r/{slug} Corpus Plan report URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the description's burden is light. It adds that access is via a public report slug and that the payload is status plus progress lines, but says nothing about freshness, staleness, or what happens for an unknown/invalid slug.
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?
A single sentence with the resource, scope, and access constraint front-loaded; every clause earns its place and there is no filler.
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 one simple required parameter, full schema coverage, and complete safety annotations, an agent has what it needs to call this correctly, and the description even sketches the return payload. Only the behavior for invalid or missing slugs is unaddressed, which is minor for a read-only tool.
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 100% — the slug parameter already documents its pattern, length bounds, and origin in /r/{slug} URLs. The description adds no syntax or semantic detail beyond restating that a public report slug is required, which is the correct baseline when the schema does the work.
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?
Specific verb ('Read') plus a precise resource ('current status and progress lines for a Corpus Plan audit') scoped to a public report slug. It is distinguishable from get_public_report by focusing on progress/status rather than the report body, but it never names or contrasts the sibling explicitly.
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 phrase 'behind a public report slug' implies the access model (public, unauthenticated, read-only) and the required input, so usage is inferable. However, it gives no explicit when-to-use versus get_public_report or describe_corpus_plan, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_auditRun a free website auditAInspect
Use this when the user wants a website audited. Starts Corpus Plan's free audit of a public website (up to 20 pages of that site) and returns the overall score, the five pillar scores with AI citability first, the top three issues, the Product information document and the workspace link where the user can save the report. The same site audited from an AI assistant in the last 24 hours is returned again instead of re-crawled. If the result says running, call again with the same url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website to audit, e.g. example.com or https://example.com. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the 20-page crawl cap, the 24-hour dedupe/cache behavior ('returned again instead of re-crawled'), the contents of the result, and the async 'running' state requiring a re-call. These are exactly the operational traits an agent needs and none appear in the annotations.
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?
Front-loaded with the usage trigger, then progressively tighter detail on scope, return values, caching, and polling. Every sentence conveys actionable information with no filler.
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 no output schema and no annotations covering return shape, the description fully compensates by enumerating the returned artifacts and explaining the async state. An agent has everything needed to call it and interpret the response.
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 coverage is 100% and the single `url` parameter is fully documented with an example, so the schema does the heavy lifting. The description adds a meaningful constraint by specifying the site must be *public*, which the schema does not state.
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 opens with a specific verb+resource ('Starts Corpus Plan's free audit of a public website') and enumerates the return payload (overall score, five pillar scores, top three issues, workspace link). It clearly distinguishes this from siblings like get_public_report and get_report_progress, which retrieve rather than initiate an audit.
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?
It states the trigger condition explicitly ('Use this when the user wants a website audited') and gives a polling instruction ('If the result says running, call again with the same url'). It doesn't name the retrieval siblings as alternatives, so it falls short of a full when/when-not rubric.
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.
5 tool updates
- First observed
check_citations - First observed
describe_corpus_plan - First observed
get_public_report - First observed
get_report_progress - First observed
run_audit
Related MCP Connectors
Free SEO, GEO, and AEO audits: analyze any page or domain, AI-crawler access, agent readiness.
Free AI visibility and GEO audit: see what AI reads on your site and whether its answers cite you.
Audit any URL for ChatGPT, Claude & Perplexity GEO citation readiness, llms.txt & Schema.org.
Free AI visibility (GEO/AEO) audit: can ChatGPT, Claude and Perplexity find and cite your website?
Related MCP Servers
- AlicenseAqualityBmaintenanceFree SEO + GEO (AI-search-citation) analysis for AI assistants: full SEO audits, AI-crawler-access checks (GPTBot/ClaudeBot/PerplexityBot), Core Web Vitals, structured data, security headers, mobile, and images. No signup, no API key, nothing sent to any server - runs entirely on the user's machine.1367 npm1MIT
- AlicenseAqualityDmaintenanceEnables users to scan any website for AI search visibility, producing AEO, GEO, agent readiness, and mention-readiness scores along with AI identity and business profile insights. Paid tools extend this to competitive comparisons, detailed audits, and generated fixes.41MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to run evidence-first technical SEO and GEO audits, inspect HTML, structured data, robots policies and sitemaps, and compare before/after reports to verify fixes.51MIT

Seonix SEO MCPofficial
AlicenseAqualityCmaintenanceLets any AI agent audit any website for SEO, GEO/AEO, and speed problems, reporting issues and recommendations without modifying the site.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.