Website Auditor MCP
The Website Auditor MCP server provides tools to audit, monitor, and improve a website's visibility to AI assistants (ChatGPT, Perplexity, Claude, Gemini) and overall site health.
Check AI visibility: Get an overall AI-visibility score (0–100) with per-engine breakdown, 7- and 30-day trend data, and top competitors appearing in your place.
Run full site audits: One‑time audits covering AI visibility, SEO, security, and performance—return scores, issues, and a shareable report URL.
Monitor sites: Start/stop weekly monitoring, list tracked sites, and view a dashboard with latest scores, check times, and recent changes.
Track changes: See score movements, engines gained/lost, competitor shifts, and new/resolved issues since the last check.
Compare competitors: Head‑to‑head AI-visibility comparisons against named domains, showing where competitors appear that your site does not (quota‑aware).
Benchmark: Compare your AI visibility against industry and geographic peers for percentile context.
Get recommendations: Receive prioritized, ranked fixes to improve AI visibility and audit scores with expected impact.
Generate JSON‑LD schema: Create structured data to enhance AI and search engine understanding.
Share reports: Retrieve a shareable report URL and an embeddable "Audited by" badge.
Manage subscription: Check subscription status, tier, and upgrade details without using audit quota.
Provides AI-visibility checks for the Perplexity engine, reporting whether a website is recommended by Perplexity and including a Perplexity-specific score in the per-engine breakdown.
Click on "Install 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., "@Website Auditor MCPcheck my AI visibility score for example.com"
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.
Website Auditor MCP
An MCP server for website-auditor.io — AI-visibility (GEO) and site-audit tools you can call from any MCP client (Claude Desktop, Claude Code, Cursor, Codex, and other agents).
Ask an agent "does ChatGPT recommend my business?", "what's my AI-visibility score?", "audit example.com", or "how do I stack up against my competitors?" and it answers with real data — an overall AI-visibility score (0–100), a per-engine breakdown across ChatGPT, Perplexity, Claude and Gemini, a full site audit (SEO, security, performance), competitor comparisons, and ongoing monitoring.
The server is a thin, authenticated wrapper over the Website Auditor API — the audit engine, AI-visibility scoring and monitoring live in that service; this server just makes them available to agents.
Tools
Tool | Tier | What it does |
| Free — no key | A complete sample report for |
| Pro | Current AI-visibility score (0–100) + per-engine breakdown (ChatGPT, Perplexity, Claude, Gemini) + the top competitor appearing in your place. Pro subscribers also get |
| Pro, rate-limited | Full one-time audit → category scores (AI visibility, SEO, security, performance) + top issues + a shareable report URL. |
| Pro | What changed since the last check — score movement, engines gained/lost, competitor moves, new/resolved issues. Requires the domain to be tracked. |
| Pro | Head-to-head AI-visibility ranking against named competitor domains + where each appears that you don't. Quota-aware: caps the audit fan-out to your remaining daily quota, reuses recent cached audits, and reports any competitors it had to skip rather than dropping them silently. |
| Pro | Start (or stop) weekly monitoring of a site's AI visibility. Establishes the history |
| Pro | Stop monitoring a site and free up a monitoring slot. Idempotent. |
| Pro | List the sites you're monitoring, with cadence, active state, and slots used/remaining. |
| Pro | A glanceable dashboard across all tracked sites — latest score, when each was last checked and next runs, and the most recent change. |
| Any valid key | Your own subscription standing — tier, status, period end, and what upgrading unlocks (starting Pro requires a payment method and accepting the Terms). Consumes no audit quota. |
Related MCP server: Seonix SEO MCP
Prompts
Clients that support MCP prompts (Claude Desktop, claude.ai) render these as something you can pick from a menu, so you don't have to phrase the request yourself or know which tool to ask for. In clients that don't surface prompts (Codex, currently), nothing is lost but the menu — ask in words and the same tools run.
Prompt | Needs a key? | What it does |
See a sample report | No | Walks through a complete report for |
Check my AI visibility | Pro | Runs |
Run a full site audit | Pro | Runs |
Compare me to a competitor | Pro | Runs |
Each Pro prompt falls back to get_sample_audit when no API key is configured,
so you always get output rather than an error.
Naming the business (optional)
get_ai_visibility and run_audit both accept two optional arguments that
decide what question the AI-visibility check actually asks:
Argument | Omitted | Supplied |
| Detected from the site, and flagged with | Taken as fact and recorded as caller-supplied — which suppresses the warning |
| Detected from the site; if nothing is found the questions widen to the country, or drop the place entirely | Scopes the questions to that place |
Supply a name only when you actually know it. A supplied name overrides detection and is treated as confirmed, so a guess is scored exactly as if a human had verified it — and silences the warning that would have told you otherwise. Leaving it out is the safer default: detection is transparent about its own uncertainty.
The same applies to location, in the other direction. Omitting it is correct for a national or global business and wrong for a local one, since a local business measured without a place is measured against the wrong queries.
"Check AI visibility for hawaiibackroad.com,
the business is Big Island Backroad Adventures in Hilo, HI"Install & configure
The server runs directly via npx — no clone or build required.
Try it before you buy it. Install with no API key at all and ask your agent
for a sample audit — get_sample_audit returns a full report for example.com
in the exact format a real run produces, so you can check the shape fits your
needs first.
Pricing. Auditing real domains needs a Website Auditor subscription at
$10/month — eligible new customers get a 7-day free trial (payment
method required to start; no charge until the trial ends; customers who used
a trial in the last 12 months are billed immediately). Sign up and create an
API key at
api.website-auditor.io/admin_portal,
then set it as WA_API_KEY below. There is no free API tier — a key only
functions with an active subscription.
Claude Desktop (claude_desktop_config.json), Cursor
(~/.cursor/mcp.json), and most other clients use the same mcpServers shape:
{
"mcpServers": {
"website-auditor": {
"command": "npx",
"args": ["-y", "website-auditor-mcp"],
"env": {
"WA_API_KEY": "wa_your_key_here"
}
}
}
}Claude Code — add it from the CLI:
claude mcp add website-auditor -e WA_API_KEY=wa_your_key_here -- npx -y website-auditor-mcpCodex — the CLI, IDE extension and ChatGPT desktop app all read the same
~/.codex/config.toml, so one of these covers all three:
codex mcp add website-auditor --env WA_API_KEY=wa_your_key_here -- npx -y website-auditor-mcp[mcp_servers.website-auditor]
command = "npx"
args = ["-y", "website-auditor-mcp"]
[mcp_servers.website-auditor.env]
WA_API_KEY = "wa_your_key_here"Codex doesn't render MCP prompts, so the Prompts above won't appear as menu entries there — ask in words instead ("show me a sample audit").
Or install the packaged Codex plugin, which bundles the same server and restores the prompts as skills (which Codex does render):
codex plugin marketplace add SpikeyCoder/website-auditor-mcp
codex plugin add website-auditor@spikeycoderCursor — one-click install, or put the same mcpServers JSON as above in
~/.cursor/mcp.json:
The one-click config arrives with an empty WA_API_KEY — the sample report
works as-is; fill the key in under Settings → MCP to audit real domains.
There is also a packaged Cursor plugin (this server plus the prompts as
skills) in cursor-plugin/; its Cursor Marketplace listing
is pending — status in docs/CURSOR-PLUGIN.md.
Restart the client and the tools appear.
Getting an API key
WA_API_KEY is a per-user key (it starts with wa_) minted from a Website
Auditor account at
api.website-auditor.io/admin_portal
— the admin portal, where you subscribe and manage keys.
Minting a key requires an active subscription ($10/month; eligible new
customers get a 7-day free trial — payment method required, no charge until
the trial ends): there is no free API tier, so every tool except
get_sample_audit and check_upgrade_status needs one. get_sample_audit
needs no key at all.
Treat the key like a password — set it only in your MCP client's env and never
commit it.
Restart after setting or changing the key. WA_API_KEY is read once, when
the server starts, so a key added while the client is running is invisible to
it — in Claude Desktop, quit and reopen the app. Without the restart the tools
keep returning the same AUTH_REQUIRED you just acted on, which looks
identical to the key not working.
Configuration (environment variables)
Var | Default | Purpose |
| (required) | Per-user API key (starts with |
|
| The Website Auditor API this server wraps. |
|
| Used to build shareable report links. |
|
| Where auth and subscription errors point you. |
|
| Timeout for API calls. |
|
| Reuse a domain's audit within this window instead of spending quota (used by |
|
| How long a resolved Pro/free tier is cached per key before re-checking the subscription. |
| (unset → metrics on) | Set to |
Only WA_API_KEY is normally needed; the rest have sensible defaults. See
.env.example for the full list.
Auth & tiers
Your key is validated on every call. The Pro/free tier is resolved live from the API and cached briefly, so upgrades and downgrades take effect within about a minute:
No key →
get_sample_auditstill works (that's the point of it); every other tool returnsAUTH_REQUIREDwith the price and a sign-up link.Revoked or unrecognized key →
INVALID_KEY, carrying the API's own remediation ("generate a new key"). Distinct fromPRO_REQUIRED: the fix is a new key, not a purchase.No active subscription (valid key, lapsed/canceled/never subscribed) →
PRO_REQUIREDwith the price and an upgrade link — there is no free API tier;check_upgrade_statusstill answers so the caller can learn why.Subscribed (status
activeor a trial in progress) → all tools.
Errors are normalized to stable codes agents can branch on — e.g.
AUTH_REQUIRED, INVALID_KEY, PRO_REQUIRED, OVER_QUOTA,
UNREACHABLE_DOMAIN, INVALID_INPUT, TIMEOUT. A domain that can't be reached
returns UNREACHABLE_DOMAIN — never a fabricated score.
Develop
npm install
npm run build # compile TypeScript → dist/
npm start # serve over stdio
npm run dev # run from source without building
npm test # vitest
npm run typecheckThe suite is hermetic — the API client, subscription provider and meter are
injected, and HTTP is mocked at the fetch boundary, so no network is touched.
Privacy Policy
Anonymous install id. When telemetry is enabled, the server generates a
random UUID on first run and stores it at
~/.config/website-auditor-mcp/install-id (or $XDG_CONFIG_HOME), sending it
with each event. It exists solely to tell one install restarting many times
apart from many separate installs — without it, install counts are just restart
counts. It is randomly generated, never derived from your machine, username or
network, and is not a fingerprint. Setting WA_METRICS_DISABLED stops
telemetry entirely: no id is generated and nothing is written to disk.
This connector talks to a single external service: the Website Auditor API at website-auditor.io. When you invoke a tool it sends only two things to that API:
the target domain you asked to audit or monitor, and
your API key (
WA_API_KEY), used to authenticate the request and resolve your plan tier.
That's the full extent of what leaves your machine. The connector does not collect, store, or transmit your files, prompts, conversation content, or any other personal data, and it does not send data to any third party beyond the Website Auditor API. Your API key is held only in your MCP client's configuration (in Claude Desktop it is stored in the OS keychain and injected as an environment variable); it is never written to the bundle or logged.
Anonymous, aggregate usage telemetry (which tool ran, success/failure, latency —
no domains, no keys, no personal data) may be emitted to improve the service, and
can be disabled entirely by setting WA_METRICS_DISABLED=1. Installed as a
desktop extension, the same opt-out is a "Disable anonymous usage telemetry"
checkbox in the extension's settings.
Full privacy policy: https://website-auditor.io/privacy
License
MIT — © 2026 Kevin Armstrong / SpikeyCoder.
This covers the MCP server in this repo: the client that talks to the Website Auditor API. The audit engine and the API behind it are separate products, not covered here, and running real audits still needs a Website Auditor account.
Learn more at website-auditor.io.
Available Tools
15 toolscheck_upgrade_statusCheck upgrade statusARead-only
Check the caller's own Website Auditor subscription standing. Use this when someone asks "am I on Pro," "is my trial still active," "when does my subscription renew/end," "why is this tool locked," or before suggesting an upgrade. Works with any valid API key and consumes no audit quota. Returns the tier (none/free/pro), raw subscription status, period end, whether the subscription is set to cancel, the upgrade URL, and a plain-language summary — including what starting Pro requires (a payment method and accepting the Terms).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and non-destructive, but the description adds real behavioral context: it works with any valid API key, consumes no audit quota, and returns specific fields including raw status, period end, cancel flag, and upgrade URL. This goes well beyond what the annotations provide.
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, front-loaded with the core purpose, followed by clear usage triggers and a concise enumeration of returned data. Every sentence contributes meaning without padding or repetition.
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, the description fully compensates by listing the returned tier, raw status, period end, cancel setting, upgrade URL, and plain-language summary. It also covers quota impact and key validity, making it complete for a zero-parameter 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?
There are no parameters, and the schema is empty, so there is no semantic burden to carry. The description reinforces that the tool operates on the caller's own subscription, which is sufficient given the absence of inputs.
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 a specific verb and resource: 'Check the caller's own Website Auditor subscription standing.' It clearly identifies the tool's scope and distinguishes it from sibling tools like get_monitoring_status or get_report, which deal with other aspects of the product.
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 explicitly lists concrete scenarios: 'am I on Pro,' 'is my trial still active,' 'when does my subscription renew/end,' 'why is this tool locked,' and before suggesting an upgrade. It does not mention alternatives or exclusions, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_competitorsCompare against competitorsARead-only
Compare a website's AI visibility head-to-head against named competitors. Use this when someone asks "how do I stack up against X and Y," "who does ChatGPT recommend instead of me," or wants a competitive AI-visibility view. Returns each competitor's score and where they appear that the site does not. Each competitor not already cached costs one audit against your daily quota; if the quota can't cover every competitor, it ranks the ones it could audit and returns a quota summary plus a skipped list naming the rest — it never drops competitors silently or invents scores. If the quota is already exhausted it returns an over-quota error with the reset time. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The website domain, e.g. "example.com". | |
| competitors | Yes | Competitor domains to compare against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint false, but the description adds substantial beyond-annotation behavior: each uncached competitor consumes one audit against the daily quota, quota shortfall leads to a ranked subset plus a skipped list, over-quota returns an error with reset time, and it never silently drops competitors or invents scores. This is exactly the kind of context an agent needs.
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 long but every sentence earns its place: purpose, use-case triggers, return behavior, quota mechanics, over-quota error, subscription requirement, and fallback alternative. It is front-loaded with the core purpose and keeps critical decision-making information up front.
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, the description compensates by specifying what the tool returns: each competitor's score, where they appear that the site does not, a quota summary, a skipped list, and an over-quota error with reset time. It also covers the subscription prerequisite and the recommended fallback action, making the tool fully callable by 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?
Schema coverage is 100%, so the schema already documents domain and competitors. The description adds meaningful semantics beyond that by explaining that each competitor not already cached costs one audit and that a quota shortfall changes which competitors are evaluated. This helps the agent set expectations and explain outcomes to the user.
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 and resource: 'Compare a website's AI visibility head-to-head against named competitors.' It then gives concrete example queries ('how do I stack up against X and Y'), making exactly when to use it unambiguous and distinguishing it from sibling tools like get_recommendations or run_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 explicitly states 'Use this when' followed by three concrete user-phrasing triggers. It also tells the agent when not to proceed: if the user lacks a Website Auditor subscription, call get_sample_audit instead, naming the alternative and the condition for choosing it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_schemaGenerate JSON-LD schemaARead-only
Generate ready-to-paste structured data (JSON-LD schema) tailored to a website, to improve how AI assistants and search engines understand it. Use this when someone asks for "schema," "structured data," "JSON-LD," or wants the actual markup to implement a recommendation. Returns valid JSON-LD. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Schema type, or auto-detect. | |
| domain | Yes | The website domain, e.g. "example.com". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly/openWorld/non-destructive behavior, so the description correctly avoids repeating that. It adds substantial beyond-schema context: a subscription requirement, trial terms, the promise of valid JSON-LD output, and a fallback tool. This meaningfully helps the agent manage user expectations.
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 action, then efficiently lists trigger phrases, the output guarantee, and the subscription/trial caveat. Although long, every clause earns its place because the paywall detail directly affects invocation decisions.
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 two-parameter tool with full schema coverage and strong annotations, this description is complete. It covers when to use it, what it returns, access requirements, and the non-subscriber fallback. No output schema exists, but 'Returns valid JSON-LD' is sufficient for the tool's simple return type.
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 already describes both parameters fully (domain example, type enum with auto-detect), giving 100% schema description coverage. The description adds only the general idea that output is tailored to the website, so it does not significantly advance parameter understanding beyond the schema baseline.
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 ('Generate'), a concrete deliverable ('ready-to-paste structured data (JSON-LD schema)'), and the intended effect on AI and search-engine understanding. It also gives clear trigger phrases, which helps an agent distinguish this tool from siblings like get_sample_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 explicitly defines when to use the tool: when the user asks for 'schema,' 'structured data,' 'JSON-LD,' or wants the actual markup. It also names a condition and an alternative: if the user lacks a subscription, call get_sample_audit first. This is exact routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_visibilityCheck AI visibilityARead-only
Check how visible a website is to AI assistants right now. Use this whenever someone asks "does ChatGPT/Perplexity/Claude/Gemini recommend this business," "is my site showing up in AI answers," "what's my AI visibility / GEO score," or wants a quick read on whether an AI assistant would surface a given domain. Returns an overall AI-visibility score (0–100), a per-engine breakdown (ChatGPT, Perplexity, Claude, Gemini), and the top competitor appearing in place of the site. When the audit recorded citations, sources lists the documents the assistants actually read, ranked by cross-engine agreement, each marked yours, competitor or third_party — treat competitor rows as context, not as placement targets; sources: null means the recorded answers cited nothing attributable, and an absent key means citations were not recorded for this audit. The result also includes trend data: 7- and 30-day score movement computed from the domain's stored snapshot history. If name_warning is present, the business name behind the score could not be verified — relay that caveat rather than presenting the score as settled fact, and offer to re-run with an explicit business name. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The website domain, e.g. "example.com". | |
| business_name | No | Optional. The business's real name, if you know it. Leave it out and the audit detects the name from the site and flags it when unverified — a guessed name is scored as if confirmed, so supply one only when it is actually known. | |
| business_location | No | Optional. The city the business trades in, e.g. "Hilo, HI". Leave it out and the audit detects it; when nothing is detectable the questions widen to the country or drop the place entirely, which is right for a national or global business and wrong for a local one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering the read-only/open-world safety profile, the description adds substantial behavioral context beyond them: the subscription requirement and free-trial terms, the distinction between `sources: null` and an absent `sources` key, the instruction to treat `competitor` rows as context rather than placement targets, and the `name_warning` caveat to relay rather than present as settled fact. It also discloses that trend data is computed from stored snapshot history.
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 purpose and trigger queries before details, and every sentence carries distinct information — nothing is redundant. It is long (roughly 280 words), but the density is justified given the subscription requirement, return-value semantics, and caveat handling it must convey that no output schema exists to cover.
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, the description bears the full burden of explaining return values, and it does: score range, per-engine breakdown, top competitor, `sources` semantics including null vs absent, trend data, and the `name_warning` case. It also covers the access prerequisite (subscription/trial) and the fallback sibling tool, leaving nothing an agent needs to invoke it correctly unstated.
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%, so the baseline is 3, but the description adds meaning beyond the schema for the optional parameters: it warns that "a guessed name is scored as if confirmed, so supply one only when it is actually known," and explains the detection-fallback behavior for `business_location` (widening to country or dropping place, "right for a national or global business and wrong for a local one"). This goes beyond the schema's plain 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 opening line, "Check how visible a website is to AI assistants right now," pairs a specific verb with a precise resource and temporal scope, going well beyond the title. It further delimits the purpose by enumerating the exact user queries that trigger this tool ("does ChatGPT/Perplexity/Claude/Gemini recommend this business") and lists the concrete outputs (0–100 score, per-engine breakdown, top competitor), leaving no ambiguity about what it does.
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 explicitly says "Use this whenever someone asks..." followed by five concrete query patterns, giving unmistakable when-to-use guidance. It also provides an explicit conditional alternative: if the user lacks a subscription, "call get_sample_audit first to show them the exact output format, free and with no API key," which is as clear a routing rule as the calibration 5 example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_benchmarkBenchmark vs industry/geoARead-only
Benchmark a website's AI visibility against its industry and location. Use this when someone asks "how do I compare to others in my space," "is this a good score for my industry," or wants percentile/peer context rather than an absolute number. Backed by aggregated audit data. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Optional location override. | |
| domain | Yes | The website domain, e.g. "example.com". | |
| industry | No | Optional industry override. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the safety profile is covered. The description goes further by disclosing the subscription requirement, the trial terms, and the aggregated-data basis, which are behavioral traits not present in annotations. It also clarifies the fallback path, adding real value beyond structured metadata.
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 two sentences, front-loaded with purpose and usage, then the subscription detail is appended. It's somewhat long but each part earns its place, explaining prerequisites and a routing action. Slight verbosity in the trial terms but acceptable.
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?
Given the low complexity (3 params, no output schema), the description covers purpose, usage, prerequisite, and alternatives. It does not detail the output format, but it points to get_sample_audit for exactly that, and the annotations carry the safety context. Minor gap: it doesn't clarify default behavior when geo/industry are omitted, but the schema implies they are optional overrides.
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 the baseline is 3. The description does not add extra meaning to parameters beyond the schema, though it mentions industry and location in the purpose. No significant gap, but no added value either.
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 verb and resource: 'Benchmark a website's AI visibility against its industry and location.' It differentiates from siblings by explicitly contrasting with absolute numbers and mentioning the use case for percentile/peer context, and it names get_sample_audit as an alternative for non-subscribers.
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 triggers ('how do I compare to others in my space,' 'is this a good score for my industry') and a clear when-not case ('rather than an absolute number'). It also prescribes a fallback action (call get_sample_audit) when the user lacks a subscription, providing unambiguous routing among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changesWhat changed since last checkARead-only
Report what changed in a website's AI visibility and audit since it was last checked. Use this when someone asks "did anything change," "what's different this week/month," "did my AI visibility drop," or "did a competitor overtake me." Requires the domain to be tracked (see track_site). Returns deltas: score movement, engines gained/lost, competitors that moved, and new or resolved issues. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Optional ISO date or "last_check". | |
| domain | Yes | The website domain, e.g. "example.com". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint and destructiveHint, and the description adds meaningful behavioral context: the domain must be tracked, a paid Website Auditor subscription is required, and the return includes specific deltas like score movement and engines gained/lost. It also discloses trial terms and payment requirement, which is useful for setting user expectations. It stops short of discussing rate limits or error behavior, but those are not major omissions for this read-only tool.
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 longer than average, but the length is earned: it covers use cases, prerequisites, return contents, and subscription/fallback details. The core purpose is front-loaded in the first sentence, and the additional detail is actionable. It is slightly verbose around the subscription trial explanation, but not distractingly so.
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 read-only, two-parameter tool with no output schema, the description is complete: it states what the tool returns, what preconditions exist (tracked domain, subscription), and what fallback to use when the user does not have the paid plan. There are no significant gaps that would prevent an agent from invoking 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 100%, so the schema already documents 'domain' and 'since' (including the 'last_check' option). The description indirectly clarifies 'since' by saying 'since it was last checked' and referencing week/month, but it does not add meaningful parameter-level details beyond the schema. This aligns with the baseline 3 for fully covered schemas.
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, actionable statement: 'Report what changed in a website's AI visibility and audit since it was last checked.' It then lists concrete user phrasings ('did anything change,' 'what's different this week/month'), which makes the tool's purpose unmistakable and distinguishes it from sibling tools like get_ai_visibility or get_sample_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?
The description provides explicit when-to-use guidance through example queries, states the prerequisite that the domain must be tracked and points to track_site, and gives a clear alternative path: call get_sample_audit first if the user lacks a subscription. This is strong routing behavior that helps an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gtm_planBuild a GTM plan from the auditARead-only
Build a written go-to-market plan from a website's latest audit, grounded in its citation evidence. Use this when someone asks "what should I do about my AI visibility," "turn this audit into a plan," or wants a GTM or marketing plan for their site. The plan is built from the sources the assistants actually read — each marked yours, competitor or third_party; competitor sources shape the analysis but are never placement targets. When the audit recorded no citation evidence the plan grounds itself in the report's issues and stats instead. Pass focus or constraints to steer it, and prior_plan (the markdown from an earlier call) to refine rather than start over. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | What to emphasize — e.g. "local directories", "content", "a launch next month". | |
| domain | Yes | The website domain, e.g. "example.com". | |
| prior_plan | No | The markdown of a plan from an earlier call, to refine instead of starting over. | |
| constraints | No | Budget, team, or time constraints — e.g. "solo founder, $200/mo". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations by explaining how the plan is grounded in `sources` marked yours/competitor/third_party, that competitor sources are never placement targets, and the fallback to report issues/stats when no citations exist. Also discloses subscription requirements and free-trial details, which materially affect whether the agent should call get_sample_audit.
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 organizes trigger phrases, behavioral grounding, parameters, and subscription constraint into distinct clauses. Although longer than minimal examples, every sentence carries load-bearing information; the subscription/trial detail is critical for correct agent routing.
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 description covers grounding, fallback, parameters, and subscription, but never states the precondition that an audit must already exist for the domain. It does not tell the agent to call run_audit first if no audit is present, which is a notable gap given the audit-dependent nature of the tool and the absence of an output schema.
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%, but the description adds meaning by explaining that `focus` and `constraints` steer the plan and that `prior_plan` holds markdown from an earlier call to refine rather than restart. This meaningfully supplements the schema's terse property 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?
States a specific action ('Build a written go-to-market plan') on a specific resource (the website's latest audit), grounded in citation evidence. Trigger phrases like 'turn this audit into a plan' and the mention of get_sample_audit clearly differentiate it from sibling tools.
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?
Provides explicit when-to-use trigger phrases ('what should I do about my AI visibility,' 'turn this audit into a plan') and a conditional alternative: if the user lacks a subscription, call get_sample_audit first. It also names the subscription prerequisite. It does not explicitly contrast with get_recommendations, which could be triggered by similar phrasing, so a small routing gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monitoring_statusMonitoring status summaryARead-only
Get a glanceable summary of monitoring status across all tracked websites. Use this when someone asks "how are my tracked sites doing," "what's my current AI visibility across everything I monitor," "when were my sites last checked or when do they run next," or wants a dashboard of their monitored domains. Returns, per domain, the latest AI-visibility score, when it was last audited and next runs, and the most recent change since the prior check. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses an important behavioral condition: a Website Auditor subscription is required, including trial details and payment requirements. It also explains the fallback behavior to get_sample_audit for non-subscribers, which annotations could not convey.
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 action, then gives usage examples, return contents, and subscription caveats in a logical order. Every sentence adds necessary information for selecting and invoking the tool correctly; 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?
For a tool with no parameters and no output schema, the description is fully self-sufficient: it explains what it does, when to use it, what it returns, and what prerequisites or alternatives apply. The agent has enough information to call it correctly or route to get_sample_audit when needed.
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 and 100% schema description coverage, so there is nothing for the description to compensate for. The description still clarifies the implicit scope—'across all tracked websites'—which is useful context.
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 and resource: 'Get a glanceable summary of monitoring status across all tracked websites.' It clearly separates this from siblings like get_ai_visibility or get_changes by emphasizing the across-all-domains dashboard nature, listing return fields per domain.
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 explicitly says 'Use this when someone asks...' and gives concrete query examples. It also provides an alternative path: if the user lacks a subscription, call get_sample_audit first. This gives the agent clear routing logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationsPrioritized fixesARead-only
Get specific, prioritized fixes to raise a website's AI visibility and audit scores. Use this when someone asks "how do I fix this," "what should I change," "how do I improve my AI visibility," or after an audit surfaces issues. Returns ranked actions with expected impact. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The website domain, e.g. "example.com". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, so the description correctly reinforces a non-destructive profile without contradiction. It adds substantial beyond-annotation behavior: the paid subscription requirement, free trial terms, payment method requirement, and instruction to fall back to get_sample_audit. It also discloses the return shape ('ranked actions with expected impact').
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 and usage triggers, then moves into subscription details and fallback routing. It is somewhat long due to pricing and trial terms, but every sentence serves a functional purpose—no filler. It earns a strong score, though tightening the subscription wording could make it even more concise.
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 read-only tool with one parameter and no output schema, this description covers everything an agent needs: what it does, when to use it, what it returns, the subscription prerequisite, and the alternative path for users without access. Nothing essential 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 description coverage is 100% for the single 'domain' parameter, which is already well-documented. The description does not add further parameter-level detail, but with full schema coverage the baseline of 3 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 uses a specific verb and resource: 'Get specific, prioritized fixes to raise a website's AI visibility and audit scores.' It clearly distinguishes the tool from siblings by emphasizing 'prioritized fixes' and 'ranked actions with expected impact,' and explicitly names get_sample_audit as a different, free alternative. This leaves no ambiguity about what the tool does.
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 when-to-use triggers: 'when someone asks...' or 'after an audit surfaces issues.' It also provides a when-not-to-use and alternative: 'if the user doesn't have one, call get_sample_audit first.' This is exemplary usage guidance with a clear conditional route to a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportShareable report + badgeARead-only
Get a shareable report URL and the embeddable "Audited by Website Auditor" badge snippet for a website. Use this when someone wants to "share," "export," "send a client," or "embed" the audit result. Returns a link and an HTML badge snippet. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The website domain, e.g. "example.com". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, but the description adds substantial context beyond that: the tool requires a paid subscription, explains the free-trial condition, and describes the return payload (link + HTML snippet). This goes well beyond what annotations alone provide.
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 bit long but each sentence delivers essential information: core purpose, usage signals, and subscription fallback. The most important information is front-loaded, and the pricing detail is relevant context packed compactly.
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 tool with a single parameter and no output schema, the description adequately covers return values (a link and HTML badge snippet), prerequisites (subscription), and fallback guidance. An agent has all necessary information to decide when to call it and what to expect.
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%, and the only parameter 'domain' is already documented in the schema with an example. The tool description adds no additional parameter-level detail, so the baseline of 3 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?
States a specific verb and resource: 'Get a shareable report URL and the embeddable badge snippet.' It clearly differentiates from siblings by naming the use case ('share,' 'export,' 'send a client,' 'embed') and even points to get_sample_audit as the alternative for non-subscribers.
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 when to use this tool ('Use this when someone wants to share/export/send/embed') and when not to ('if the user doesn't have one, call get_sample_audit first'). The subscription prerequisite and fallback behavior are spelled out directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sample_auditSee a sample audit (no key needed)ARead-only
Show a complete sample Website Auditor report — no API key required, nothing to set up. Use this whenever someone wants to "try it," "see a demo," "show me what this does," "what does the output look like," or is deciding whether Website Auditor is worth subscribing to — and use it INSTEAD of refusing when no API key is configured. Returns fixed sample data for example.com in the exact shape a real audit returns: scored summary, per-test results, and the AI-visibility breakdown across ChatGPT, Perplexity, Claude and Gemini. It is clearly marked as a sample and always describes example.com, never the user's own site — auditing a real domain needs a subscription.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and openWorldHint=false, but the description goes further by explaining the data is fixed, clearly marked as a sample, and always describes example.com. This adds meaningful behavioral context beyond the annotations without contradicting them.
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?
Each sentence earns its place: purpose, usage triggers, output shape, then the important caveat about sample vs real audits. It is slightly long but information-dense and logically ordered, with no redundant phrases.
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 demo tool with no output schema, the description fully explains the return shape (scored summary, per-test results, AI-visibility breakdown) and the boundary conditions. The sibling list provides the real-audit alternative, so nothing an agent needs to invoke it correctly 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?
The tool has zero parameters, so the baseline is 4. The description appropriately communicates that no API key or setup is required, which is the only relevant 'parameter-like' context. There are no parameter details needed because the schema is empty.
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 the exact action and resource: 'Show a complete sample Website Auditor report.' It distinguishes itself from siblings by clarifying it returns static data for example.com and never a user's own site, so an agent can tell it apart from run_audit and similar tools.
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 lists trigger intents ('try it,' 'see a demo,' 'show me what this does') and directs agents to use it INSTEAD of refusing when no API key is configured. It also states the alternative condition — auditing a real domain needs a subscription — giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tracked_sitesList monitored sitesARead-only
List the websites currently being monitored for AI visibility on a schedule. Use this when someone asks "what am I tracking," "which sites am I monitoring," "how many monitoring slots am I using," or wants to see their tracked domains. Returns each tracked domain with its cadence and active state, plus slots used and remaining (out of 5). Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, and the description adds meaningful behavior beyond that: it discloses the subscription requirement, the exact returned data (domain, cadence, active state, slots used/remaining), and the fallback path when the user is not subscribed. This is exactly the kind of non-obvious context an agent needs.
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 and use cases, then output, then subscription routing. The subscription explanation is a bit long with pricing and trial details, but it is relevant for deciding whether to call this tool or get_sample_audit. No filler is present, though it could be tightened slightly.
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, the description appropriately explains what the tool returns: each tracked domain with cadence and active state, plus slot counts out of 5. It also covers the subscription prerequisite and the fallback for non-subscribers. For a zero-parameter list tool, this is complete enough 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?
The tool has zero parameters and the schema coverage is 100%, so there is nothing for the description to add about parameter meaning. Per the baseline for a no-parameter tool, a 4 is appropriate; the description uses that freedom to explain output and access rather than parameter details.
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 and resource: 'List the websites currently being monitored for AI visibility on a schedule.' It also gives concrete user phrasings that should trigger this tool, making the purpose unmistakable. It clearly differentiates this list operation from other monitoring-related siblings by naming the exact output scope.
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 explicitly states when to use the tool with natural-language examples like 'what am I tracking' and 'how many monitoring slots am I using.' It also provides a conditional alternative: if the user lacks a Website Auditor subscription, call get_sample_audit first. This is clear routing guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_auditRun a full auditARead-only
Run a full one-time audit of a website — AI visibility plus SEO, security headers, broken links, and performance. Use this when someone asks to "audit," "scan," "check," or "review" a website's health or SEO, or wants a complete report rather than just the AI-visibility number. Returns a scored summary across categories and a link to the full report. The ranked cited-sources evidence behind the AI-visibility number is returned by get_ai_visibility, not by this tool. If name_warning is present, the business name the AI-visibility score was measured against could not be verified — relay that caveat rather than presenting the score as settled fact. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The website domain, e.g. "example.com". | |
| business_name | No | Optional. The business's real name, if you know it. Leave it out and the audit detects the name from the site and flags it when unverified — a guessed name is scored as if confirmed, so supply one only when it is actually known. | |
| business_location | No | Optional. The city the business trades in, e.g. "Hilo, HI". Leave it out and the audit detects it; when nothing is detectable the questions widen to the country or drop the place entirely, which is right for a national or global business and wrong for a local one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses several important behaviors: the audit is one-time, returns a scored summary and report link, requires a paid subscription with trial terms, may return a name_warning that must be relayed as a caveat, and warns that an unverified business name is scored as if confirmed. This is rich behavioral context an agent needs to handle the result responsibly.
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 long but every sentence carries operational value: scope, trigger conditions, output summary, sibling-tool distinction, caveat handling, and subscription gate. It is front-loaded with the core purpose and then layers necessary detail without redundancy.
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?
Despite having no output schema, the description explains what the tool returns (scored summary, report link, possible name_warning) and covers subscription requirements, fallback behavior, and free-alternative routing. For a tool with optional parameters and real-world caveats, this is complete enough for an agent to call 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 coverage is 100%, so the baseline is 3, but the description adds critical semantic warnings: business_name should only be supplied when actually known because a guessed name is scored as confirmed, and business_location omission triggers detection with fallback behavior. This meaningfully improves correct parameter use 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?
The description states a specific verb and resource ('Run a full one-time audit of a website') and enumerates what the audit covers: AI visibility, SEO, security headers, broken links, and performance. It also explicitly distinguishes itself from get_ai_visibility, eliminating ambiguity about which tool returns the cited sources evidence.
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 gives explicit trigger phrases ('audit,' 'scan,' 'check,' 'review'), clarifies the complete-report use case, and tells the agent exactly when to use get_sample_audit instead (no subscription). This is model guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_siteStart/stop monitoringA
Start (or stop) ongoing monitoring of a website's AI visibility on a schedule. Use this when someone wants to "monitor," "track," "watch," or "get alerted about" a site's AI visibility over time, rather than a one-off check. Establishes the history that get_changes reads from. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The website domain, e.g. "example.com". | |
| cadence | No | Monitoring cadence (weekly). | weekly |
| enabled | No | Set false to stop monitoring. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds that this is a scheduled/ongoing operation, that it creates the history get_changes reads, and that it requires a paid subscription with trial details. It also handles the fallback behavior for non-subscribers. It does not spell out whether stopping is reversible or what happens to existing history, but the key consequences are disclosed.
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?
All four sentences carry distinct information: function, trigger phrases, downstream dependency, and subscription gate with fallback. It is a bit dense, especially the parenthetical trial/payment clause, but it is still efficient relative to the complexity. Front-loaded with the core start/stop behavior before commercial details.
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 3-parameter tool with no output schema, the description covers the main requirements: correct triggering, subscription prerequisite, fallback to get_sample_audit, and the relationship to get_changes. It doesn't describe return values or edge cases like duplicate domains, but those are not strongly needed given the schema and annotations. The description is sufficient for an agent to select and invoke the tool 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 100%: domain, cadence, and enabled all have descriptions, defaults, and enum constraints in the schema. The description only reinforces the cadence indirectly with 'on a schedule' and the enabled=false stopping behavior is already in the schema. Since the schema does the heavy lifting, this is a baseline 3.
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 'Start (or stop) ongoing monitoring of a website's AI visibility on a schedule,' which names a specific verb and resource. It explicitly contrasts with a 'one-off check' and names get_changes as a downstream consumer, distinguishing it from siblings like run_audit and get_changes. This is far more specific than the title alone.
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 gives explicit trigger phrases ('monitor,' 'track,' 'watch,' 'get alerted about') and excludes one-off checks. It also provides a conditional alternative: if the user lacks a Website Auditor subscription, call get_sample_audit first. This is clear when-to-use and alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
untrack_siteStop monitoringADestructive
Stop ongoing monitoring of a website's AI visibility. Use this when someone wants to "stop tracking," "unmonitor," "stop watching," or "remove" a site from scheduled monitoring, or to free up a monitoring slot. Idempotent — safe to call even if the site isn't currently tracked. Returns how many monitoring slots are now free. Requires a Website Auditor subscription ($10/month; eligible new customers get a 7-day free trial — payment method required, no charge until the trial ends) — if the user doesn't have one, call get_sample_audit first to show them the exact output format, free and with no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The website domain, e.g. "example.com". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by disclosing idempotency ('safe to call even if the site isn't currently tracked'), the return value ('how many monitoring slots are now free'), and a subscription prerequisite with a clear fallback. No contradiction with 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?
Every sentence earns its place: purpose, usage triggers, idempotency, return value, and subscription gating with routing. It is longer than average but dense and front-loaded, 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 one well-documented parameter, destructive annotations, and no output schema, the description covers everything an agent needs to call it correctly: behavior, result, idempotency, and the non-subscriber edge case. The get_sample_audit routing closes the main uncertainty.
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 fully documents the single required domain parameter, so the description adds little parameter-level detail. The surrounding context clarifies that the domain is a monitored site, but this is baseline value given 100% schema coverage.
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: 'Stop ongoing monitoring of a website's AI visibility.' It also positions the tool as the inverse of tracking via trigger phrases like 'stop tracking' and 'unmonitor,' and distinguishes it from monitoring/list/report tools by framing it as removal and slot freeing.
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?
Provides explicit when-to-use guidance with quoted user intents and the slot-freeing goal, and routes non-subscribers to get_sample_audit first. It does not explicitly state when not to use it, such as when the user wants to start tracking a new site, though that is inferable from sibling tools.
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. Dates show when Glama detected each change.
1 tool update
v1.0.20- Added
get_gtm_plan
3 tool updates
v1.0.15- Changed
get_ai_visibility2 fields changed- added
Input schema / properties / business_locationAdded value: +{ + "description": "Optional. The city the business trades in, e.g. \"Hilo, HI\". Leave it out and the audit detects it; when nothing is detectable the questions widen to the country or drop the place entirely, which is right for a national or global business and wrong for a local one.", + "type": "string" +} - added
Input schema / properties / business_nameAdded value: +{ + "description": "Optional. The business's real name, if you know it. Leave it out and the audit detects the name from the site and flags it when unverified — a guessed name is scored as if confirmed, so supply one only when it is actually known.", + "type": "string" +}
- Added
get_sample_audit - Changed
run_audit2 fields changed- added
Input schema / properties / business_locationAdded value: +{ + "description": "Optional. The city the business trades in, e.g. \"Hilo, HI\". Leave it out and the audit detects it; when nothing is detectable the questions widen to the country or drop the place entirely, which is right for a national or global business and wrong for a local one.", + "type": "string" +} - added
Input schema / properties / business_nameAdded value: +{ + "description": "Optional. The business's real name, if you know it. Leave it out and the audit detects the name from the site and flags it when unverified — a guessed name is scored as if confirmed, so supply one only when it is actually known.", + "type": "string" +}
13 tool updates
v1.0.6- First observed
check_upgrade_status - First observed
compare_competitors - First observed
generate_schema - First observed
get_ai_visibility - First observed
get_benchmark - First observed
get_changes - First observed
get_monitoring_status - First observed
get_recommendations - First observed
get_report - First observed
list_tracked_sites - First observed
run_audit - First observed
track_site - First observed
untrack_site
TDQS
Most tools have distinct purposes: get_ai_visibility vs run_audit, compare_competitors vs get_benchmark, etc. The main ambiguities are track_site's description mentioning 'start (or stop)' when untrack_site explicitly handles stopping, and a slight overlap between list_tracked_sites and get_monitoring_status. These are minor and descriptions are detailed enough to guide selection.
All tool names follow a consistent snake_case verb_noun pattern (e.g., get_ai_visibility, list_tracked_sites, run_audit, untrack_site). While different verbs are used for different actions, this is natural and predictable, and there are no mixed conventions like camelCase or vague names.
With 14 tools, the server sits within the well-scoped range of 3-15 tools, and each tool earns its place by covering distinct functionality: auditing, tracking, comparisons, recommendations, schema generation, reporting, and subscription management. Even though a couple of tools overlap (list_tracked_sites and get_monitoring_status), they serve different aspects of the domain.
The toolset covers the core lifecycle: track, untrack, audit, get visibility, monitor status, see changes, compare, benchmark, get recommendations, generate schema, share reports, check subscription, and demo with a sample. Minor gaps include no tool to update tracking cadence or directly retrieve a full audit report (only a link to it), but agents can work around these.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- VibeSEOOAuthdev.vibeseo
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
AEO audit: score any website 0-100 for AI visibility. Checks schema, meta, content, AI crawlers.
Scan any website's AI readiness: AI search visibility and AI agent usability. Free, no auth.
Site scores, audits, Search Console, keywords, competitors, authority and AI visibility tools.
1
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to monitor website performance by scanning sites, retrieving Core Web Vitals, detecting regressions, and receiving AI-powered optimization recommendations.1020MIT

Seonix SEO MCPofficial
AlicenseAqualityBmaintenanceLets any AI agent audit any website for SEO, GEO/AEO, and speed problems, reporting issues and recommendations without modifying the site.4MIT- AlicenseNot gradedqualityCmaintenanceEnables AI agents to perform instant SEO audits, check robots.txt, sitemaps, and AI crawler access for any URL without API keys.MIT
- AlicenseAqualityBmaintenanceProvides tools for AI agents to audit websites, including stack detection, DNS snapshots, and security checks.819MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SpikeyCoder/website-auditor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server