Skip to main content
Glama

Server Details

Website QA for your coding agent: audit SEO, performance, security, accessibility over MCP.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
squirrelscan/squirrelscan
GitHub Stars
265
Server Listing
squirrelscan

Available Tools

20 tools
add_websiteAdd a websiteAInspect

Register a website with the organization without running an audit (run_audit registers automatically, so this is only needed to set a site up ahead of time). Returns the website_id; idempotent per domain, so calling it again returns the existing website. Pass kind to classify it as owned or prospect up front. On a plan with scheduled audits, a NEW site is registered with recurring weekly audits already on, and each of those runs costs credits: tell the user before calling this, and point them at the site's schedule settings to turn it off. The result's scheduled_audits field reports what was actually set.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWebsite URL to register, e.g. https://example.com (scheme optional).
kindNoClassify the site: 'owned' for something the user runs and monitors, 'prospect' for a lead or competitor. Filterable in list_websites. Unclassified sites read as 'owned', so only an explicit 'prospect' makes a site show up in a prospect cleanup. Re-calling with a different value reclassifies it.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses behavioral traits beyond the annotations: idempotency per domain, automatic enabling of recurring weekly audits on eligible plans, credit costs, and the presence of scheduled_audits in the result. Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the full burden and does so thoroughly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence carries necessary information: core action, idempotency, classification, cost warning, and result field. The most important statement (register without audit, contrast with run_audit) is front-loaded, and the warning is placed logically before usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters and no output schema, the description covers all operational aspects: when to use, side effects, return value (website_id and scheduled_audits), idempotent behavior, and cost implications. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds meaningful semantics: it explains the effect of 'kind' (owned vs prospect), clarifies that unclassified sites default to 'owned', and notes that re-calling with a different value reclassifies. This goes well beyond the schema's field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Register') and resource ('a website with the organization'), and explicitly contrasts itself with run_audit, making its unique role clear. An agent can immediately understand what the tool does and how it differs from the closely related sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use this tool ('only needed to set a site up ahead of time'), notes that run_audit registers automatically, and provides a warning to inform the user about costs and how to turn off scheduled audits. This is explicit guidance with alternatives and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comment_on_issueComment on an issueAInspect

Post a comment on a website issue — use it to record analysis, a proposed fix, or what you changed, so the team sees it in the dashboard issue thread. Markdown is supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment body (markdown supported).
website_idYesWebsite id the issue belongs to.
issue_numberYesIssue number from list_issues.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by mentioning that comments support Markdown and appear in the dashboard issue thread. Annotations already indicate readOnlyHint=false (write operation) and destructiveHint=false, which are consistent. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the main purpose, and avoids any wasted words. The Markdown hint is appended efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple comment-posting tool with no output schema, the description covers the core functionality, usage context, and a key feature (Markdown). It is complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds contextual meaning by stating that the body supports Markdown and that the comment is posted to a thread visible to the team. This aids understanding beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Post' and the resource 'comment on a website issue'. It further specifies the purpose: to record analysis, proposed fix, or changes, and distinguishes it from sibling tools like delete_website or list_issues by focusing on comment threads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool (to record analysis, fix, or changes) and provides context ('so the team sees it in the dashboard issue thread'). It does not explicitly state when not to use it, but the sibling tools list provides implicit differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_auditsCompare two auditsA
Read-only
Inspect

Compare two completed audits of one website and get what changed. Defaults to the website's latest completed audit against the one before it; pass base/head run ids to compare any two. Each finding gets one of seven kinds: new, resolved, worsened, improved, unchanged (both audits published it), still_open (the evidence store says it is still there but the newer audit did not republish it), or not_crawled (the page was not visited, so the issue is neither fixed nor still broken). resolutionEvidence says what backed the resolved verdicts; when it is "none" nothing is reported as fixed. Score movement is broken down by category. A website with only one audit returns first_run with an empty finding list; an audit where nothing moved returns changed: false. Unchanged, still-open and not-crawled rows are omitted unless requested.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoOlder run id. Default: the completed run before head.
headNoNewer run id. Default: the website's latest completed run.
limitNoMax findings returned (default 100). Totals are never capped.
website_idYesWebsite id from list_websites or run_audit.
include_unchangedNoInclude unchanged findings.
include_still_openNoInclude still-open findings (present per the evidence store, not republished).
include_not_crawledNoInclude not-crawled findings.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only indicate read-only, non-destructive behavior, so the description carries the burden of explaining behavior. It thoroughly discloses the seven finding kinds, the meaning of resolutionEvidence, score movement breakdown, and edge cases like first_run and changed: false. This goes well beyond what 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but each sentence adds unique useful information, and the core purpose is front-loaded in the first sentence. The later sentences unpack the seven categories, edge cases, and include flags in a logical order without fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 explaining what the response contains: changed findings, seven categories, resolutionEvidence semantics, score movement by category, first_run behavior, changed: false, and default omission of certain rows. This is complete enough for an agent to invoke the tool correctly and interpret its response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 meaningful semantics beyond the schema: base defaults to the run before head, head defaults to the latest completed run, limit totals are never capped, and the include_* flags correspond to findings that are omitted by default. This enriches the parameter understanding without repeating the schema verbatim.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb and object: "Compare two completed audits of one website and get what changed." It clearly distinguishes this tool from siblings like get_audit_status or list_audits by emphasizing comparison and delta reporting rather than status or enumeration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains defaults (latest completed audit vs the one before it), how to override with base/head run ids, and behavior for edge cases such as a website with only one audit. It does not explicitly name alternatives or say when not to use the tool, but the usage context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_api_keyCreate an API keyAInspect

Mint a new squirrelscan API key for this organization (requires credentials carrying the keys:write scope, which OAuth sign-in grants). The key is returned EXACTLY ONCE: show it to the user immediately and suggest saving it as the SQUIRRELSCAN_API_KEY environment variable for the CLI, CI, and MCP. Minted keys cannot themselves mint keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable label shown in the dashboard, e.g. "ci" or "claude-code".
scopesNoScopes to grant (default: audits:write, audits:read, credits:read, org:read). Grantable: audits:write, audits:read, credits:read, org:read, org:write.
expires_in_daysNoExpire the key after this many days (default: never expires).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key returned exactly once, scope requirement, and inheritance restriction. This adds significant behavioral context beyond annotations (readOnlyHint=false, destructiveHint=false). No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences clearly structured: purpose, important note, restriction. No wasted words, front-loaded with action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately explains the one-time return behavior, but lacks explicit output schema or format details for the returned key. Minor gap for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds value with examples for name, defaults and list for scopes, and default behavior for expires_in_days. Exceeds baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly specifies 'Mint a new squirrelscan API key for this organization' with a distinct verb and resource. No sibling tool creates API keys, so it is well-distinguished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context on required scope (keys:write), OAuth, and immediate action (show user, suggest env var). Also notes that minted keys cannot mint keys. Does not explicitly state when not to use, but no alternative exists among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_websiteDelete a websiteA
Destructive
Inspect

Delete a website from the organization (soft delete: past audits, reports, and issues are preserved, and published report links keep working). Frees a slot under the plan's website limit. Re-adding the same domain later registers a fresh website with a new website_id. Call once without confirm to see what will happen; call again with confirm: true to delete. To remove many sites at once, use delete_websites.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoApprove the deletion. Omit on the first call to see the effect; set true to delete after the user approves.
website_idYesWebsite id from list_websites, run_audit, or add_website.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true, but description adds substantial context: soft delete preserves audits/reports/issues, published links keep working, frees a plan slot, and re-adding creates a new website_id. It also discloses the confirm-step behavior. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each delivers a distinct piece of information: soft-delete semantics, slot effect, re-add behavior, and confirmation workflow plus bulk alternative. No redundant words; front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool's destructive nature is fully contextualized: safety workflow, side effects, and alternative for bulk deletion are all covered. No output schema is needed, and the description provides complete guidance for a complex action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for both website_id and confirm. The description reinforces the confirm parameter's purpose through the two-step workflow but does not add meaning beyond what the schema already provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Delete a website from the organization' – a specific verb and resource with scope. It immediately distinguishes itself from the sibling delete_websites by noting bulk deletion separately. The soft-delete behavior and slot freeing further clarify the exact function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes the two-call workflow (without confirm, then with confirm) and names the alternative for bulk deletion: 'To remove many sites at once, use delete_websites.' This gives 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.

delete_websitesDelete websites in bulkA
Destructive
Inspect

Delete up to 50 websites in one call, for cleaning up a dashboard that has filled with one-off or prospect audits. Same soft delete as delete_website (past audits, reports, and issues are preserved, published report links keep working, slots are freed) and the same two-step confirm: call once without confirm to see the domain behind every id, then again with confirm: true. EVERY result echoes the domain, so read them back to the user before and after: an id is not a name, and this is the tool most likely to be pointed at the wrong list. The preview also shows each site's kind and an owned_count: unclassified sites read as owned, so an 'owned' entry in a list you built from prospects is the clearest sign the wrong ids were assembled. Ids that do not resolve are reported per-id, never as a whole-call failure. To pick the ids, list_websites with kind: "prospect" returns only sites explicitly marked disposable.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoApprove the deletions. Omit on the first call to see which domain each id resolves to; set true to delete after the user approves.
website_idsYesWebsite ids from list_websites (1 to 50). Duplicates are collapsed.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description richly discloses behavior: soft-delete semantics, two-step confirm, per-ID error handling, the preview showing owned_count, and the caveat about unclassified sites. This adds significant value and context not available from annotations alone. No contradictions 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph, but every sentence carries important operational or safety information. It is front-loaded with the core action, and while long, the complexity of the tool justifies the length. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk tool with no output schema, the description covers all critical aspects: what happens on delete, how preview works, how to verify IDs, what errors occur, and how to correctly source IDs. It is fully complete for an agent to safely invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, but the description adds practical semantics: the two-step confirm workflow, that website_ids should come from list_websites, and that duplicates are collapsed. It also warns that every result echoes the domain, reinforcing the importance of confirm. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete up to 50 websites in one call', which is a specific verb, resource, and scope that distinguishes it from the sibling delete_website. It also provides the use case ('cleaning up a dashboard') and the bulk nature, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use it ('for cleaning up a dashboard filled with one-off or prospect audits') and explicitly points to list_websites as the way to select IDs. It does not explicitly state when to use delete_website instead, but the bulk vs. single distinction is implied through the max 50 limit and the reference to 'same soft delete as delete_website'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_audit_statusGet audit statusA
Read-only
Inspect

Poll a running audit by run_id (from run_audit or list_audits). Status pending/running means keep polling (every 15-30 seconds) — the response includes a progress field (phase, message, page/link counts) when available. Status completed means the report is ready: call get_report with the same run_id. Status failed/cancelled includes the error and completion reason. A failed run also carries failure_reason_code (one of dns, tls, connection, timeout, http_4xx, http_5xx, redirect, robots, unknown) and failure_next_step, so you can act on the cause rather than parsing the error sentence; a cancelled run has neither, because it was stopped rather than defeated by the site. Once the run has a report, health_score and issues_found are read from that published report, so they equal get_report's summary.healthScore and its failed+warnings (#1700). health_score is null for a blocked or unreachable site: that audit has no meaningful grade.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesRun id returned by run_audit or listed by list_audits.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true and destructiveHint=false; the description carries far more behavioral detail. It discloses the progress field when available, the failure_reason_code enum, failure_next_step, the absence of both on cancelled runs, and the exact relationship of health_score and issues_found to get_report's summary. This goes well 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place: the purpose is front-loaded, then status branches are laid out in reading order, and nuanced edge cases like cancelled vs failed and null health_score are explained with concrete field names. It is dense rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining the response contract. It covers the status states, polling behavior, progress field, error fields, failure reason code enum, next-step guidance, and derived health fields. An agent has enough context to poll correctly, recognize terminal states, and decide whether to call get_report.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers run_id completely at 100% coverage, including its origin from run_audit or list_audits. The description repeats this origin but adds no new parameter-level semantics such as format, length, or validation constraints, so it stays at the baseline for fully documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the specific verb and resource: 'Poll a running audit by run_id'. It distinguishes this tool from get_report by explicitly routing completed audits to get_report with the same run_id, and it correctly references run_audit and list_audits as the source of run_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: keep polling every 15-30 seconds while status is pending/running, stop and call get_report when completed, and treat failed/cancelled as terminal states with structured reasons. It also names the provenance of the run_id, so an agent knows which sibling tools feed into this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_credit_balanceGet credit balanceA
Read-only
Inspect

Get the organization's credit balance: monthly credits (reset each billing period) and pack credits (purchased, never expire). Audits spend credits pay-as-you-go while they run; run_audit shows an upper-bound estimate before starting. Every audit starts at 50 credits plus 2 per rendered page, so a balance under 50 cannot start one. Pro is $19 a month (or $190 a year) and includes 3,000 credits a month, daily scheduled audits on every site (free schedules one site weekly), faster crawls, and up to 2,000 pages per audit. Upgrade or top up at https://squirrelscan.com/upgrade?src=mcp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description does not contradict these. It adds valuable context beyond the annotations, such as the cost per audit, the 50-credit floor, and pricing plans, which help the agent understand the tool's role in the broader ecosystem. It does not describe potential edge cases (e.g., what happens if balance is zero), but for a simple read operation, the added context is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is verbose and includes promotional content, such as detailed subscription prices and a link to upgrade. While some context (audit cost, threshold) is useful, the extended pricing details and call-to-action are not necessary for an agent to call the tool correctly. It would be more effective condensed into two or three sentences focusing on what the tool returns and the credit audit thresholds.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no parameters, the description covers the key information: what gets returned (two types of credits), the variable related to audit cost, and the minimum required to run an audit. Though the pricing/upgrade details are extraneous, they do not detract from completeness. The description would be a 5 if the non-essential marketing were removed, but as is, it's a solid, complete description with some noise.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%. The baseline for a no-argument tool is 4, and since there are no parameters to explain, the description rightly does not add any. It could not add more value here beyond the existing schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: it retrieves the organization's credit balance, distinguishing between monthly credits (reset each billing period) and purchased pack credits (never expire). This is a specific verb+resource and easily distinguishes from other tools like list_credit_transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context about when knowing the balance is important, noting that audit costs and the 50-credit minimum are relevant before running an audit. However, it does not explicitly mention alternatives like list_credit_transactions, so an agent could be uncertain about when to use this versus transaction history. The guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_issueGet issue detailA
Read-only
Inspect

Fetch one issue by website_id + issue number, including its full description, recommendation, affected pages, occurrence detail from the latest report (which page/image/URL, snippets), and comment thread. Use comment_on_issue to add analysis or a fix note to the thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
website_idYesWebsite id the issue belongs to.
issue_numberYesIssue number from list_issues.
occurrence_limitNoMax occurrences to include (default 20); see occurrence_count/truncated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read operation. The description adds useful context about the returned data (full description, recommendation, affected pages, occurrences from latest report, comment thread), enhancing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. The first sentence front-loads the purpose and key parameters, and the second sentence provides a cross-reference to a sibling tool. All content earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with simple parameters and no output schema, the description reasonably covers what the tool returns. It could mention the occurrence_limit parameter or error handling, but the current description is sufficient for an AI agent to understand the tool's capabilities.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters (website_id, issue_number, occurrence_limit). The description only mentions website_id and issue_number, adding no extra meaning beyond what the schema provides. The occurrence_limit parameter is not referenced, but its schema description is adequate. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch', the resource 'issue', the identifying keys 'website_id + issue number', and lists the included fields (description, recommendation, affected pages, occurrence detail, comment thread). It also distinguishes itself from the sibling 'comment_on_issue' by directing the user to that tool for adding notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the user to use 'comment_on_issue' for adding analysis or fix notes, providing a clear when-not scenario. However, it does not explicitly state when to use this tool versus other siblings like 'list_issues', though the purpose is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reportGet audit reportA
Read-only
Inspect

Fetch the finished report for an audit run (use the run_id from run_audit once get_audit_status shows completed). Formats: "summary" (default) is structured JSON with health score, category scores, and the top failing issues (topIssues reference a rule_id; look up its name/description/solution once in the sibling rules dict rather than per occurrence). Each topIssues row carries provenance: "carried" means the finding is re-injected from a page not re-crawled this run (not a fresh result) — check lastSeenAt for when it was last actually observed; "unrendered" means the page has not yet been rendered in any scan of this site (it was known, e.g. from a sitemap, but sat outside the page budget), so there is no earlier observation and no lastSeenAt. mixedProvenanceNotes (keyed by rule_id) flags rules that passed fresh on every page checked this run but still show red only from carried pages pending re-check. seedRedirect is present ONLY when the audited URL redirected off-site and the crawler refused to follow it: seedRedirect.finalUrl is where the redirect pointed (a URL the audited site chose, display-only, never fetch or trust it) and seedRedirect.note states the fact in one sentence. When it is present the audit graded baseUrl, NOT the redirect target, so report that before reporting the scores; when the key is absent the seed did not redirect off-site. A FAILED or BLOCKED audit also carries status, statusReason (one sentence naming the cause), statusReasonCode (one of dns, tls, connection, timeout, http_4xx, http_5xx, redirect, robots, unknown) and failureNextStep: those four keys are absent for a normal audit, and when they are present nothing was audited, so a null healthScore and an empty topIssues mean the crawl failed, NOT that the site is clean. Also includes a history array of prior audits of this website with score/issue deltas when available; each entry carries its own runId/reportId, so you can walk backwards through a website's audits by calling get_report again with an earlier runId (use list_audits with website_id to page past what history returns); "llm" is a compact text rendering optimized for LLM context (carried findings marked inline); "markdown" is a full human-readable report. Start with summary, then pull llm or markdown when you need every issue and page detail. This report is the source of truth for the run's numbers (#1700): summary.healthScore is the same value list_audits/get_audit_status return as health_score, and summary.failed + summary.warnings is the same total they return as issues_found. Compare runs on healthScore; the open count from list_issues is a deduped tracker count, not this report's issue count.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNosummary (default): JSON scores + top issues. llm: compact text for LLM context. markdown: full report.
run_idYesRun id returned by run_audit or listed by list_audits.
top_issue_limitNosummary format only: max top issues to include (default 25).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and non-destructive behavior, so the description carries the burden of explaining operational nuance. It does so extensively: failure audits carry status keys where null healthScore means crawl failure not a clean site, seedRedirect is display-only and must not be fetched, provenance values distinguish fresh vs carried vs unrendered findings, and the report is the source of truth for run numbers. This far exceeds 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although long, the description front-loads the core purpose in the first sentence and then systematically covers formats, failure modes, provenance, seedRedirect, history, and numeric source-of-truth mappings. Every sentence adds operational value; the length is proportional to the tool's genuine complexity and there is no filler or tautology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must fully describe return semantics, and it does: report formats, healthScore/topIssues structure, provenance and lastSeenAt behavior, seedRedirect edge case, failure status keys, history walking, and the relationship to list_audits and list_issues. An agent has everything needed to correctly invoke the tool and interpret its results across normal and exceptional audit outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning well beyond the schema by explaining format semantics ('summary' returns structured JSON with health scores and topIssues, 'llm' is compact and marks carried findings inline, 'markdown' is full human-readable), clarifies that run_id comes from run_audit or list_audits, and explains failure-related fields absent from the schema. The top_issue_limit parameter is already fully described by the schema, so the description appropriately focuses where the schema is thin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'Fetch the finished report for an audit run', and immediately disambiguates from siblings by tying it to run_audit and get_audit_status. It clearly distinguishes the report's role from list_audits, get_audit_status, and list_issues, so an agent knows exactly what this tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: wait until get_audit_status shows completed, use the run_id from run_audit, start with summary then escalate to llm/markdown when more detail is needed, and use list_audits with website_id to page past the history array. It also states which values to compare across runs and warns against using list_issues' open count as the report's issue count, providing clear alternatives and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ruleGet rule detailA
Read-only
Inspect

Fetch one audit rule by id (e.g. "meta/title-length"), including what it checks, how to fix it (recommendation), its severity and score weight, a docs link, and whether it is a cloud (credit-billed) rule. Rule ids appear in report topIssues and issue rule_id fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesRule id like "crawl/canonical-chain" (category/slug).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false. Description adds specific return fields and context (e.g., cloud flag, docs link), enhancing transparency beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-loaded with purpose; every sentence adds essential detail without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (1 param, no output schema, annotations present), description fully covers what the tool returns and why it's useful, including source of rule ids.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers the single parameter with description, but description adds examples (e.g., 'meta/title-length') and context on where rule ids appear, providing additional value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches one audit rule by id, listing specific fields like checks, recommendation, severity, score weight, docs link, and cloud flag. It distinguishes from sibling list_rules by specifying single rule retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions when to use (fetch a specific rule by id) and where rule ids come from (report topIssues, issue rule_id). Implies not for listing all rules, but does not explicitly state alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_auditsList auditsA
Read-only
Inspect

List the organization's audit runs: currently active (pending/running) plus recent runs of any status. Pass website_id (from list_websites) to get one website's full audit history, oldest runs included, and page through it with limit/offset using the returned total/has_more. This is the way to reach the preserved reports of a soft-deleted website: its runs still list under its old website_id. total/has_more describe the recent array only, and recent already includes any pending/running run, so active is a live view of those same runs and not extra items to add to the count. Use the run ids with get_audit_status or get_report, and website ids with list_issues. Numbers on a recent run come from its published report (#1700): health_score is that report's overall score (the same value as get_report's summary.healthScore; null when the site was blocked or down, which earns no grade) and issues_found is the report's failing + warning checks (its summary.failed + summary.warnings). health_score is the metric to compare run over run: it is the only one rescored consistently across the whole site. Do NOT compare issues_found with the open count from list_issues: the issue tracker folds a rule failing on many pages into one open issue and carries issues forward until they are re-checked, so its count is legitimately much smaller and moves independently.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax recent runs to return (default 20, max 100).
offsetNoPagination offset into the recent runs (default 0). Use with total/has_more.
website_idNoOnly return runs of this website (id from list_websites, run_audit, or add_website). Works for soft-deleted websites too.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag readOnlyHent=true and destructiveHint=false, and the description adds substantial behavioral detail: active vs recent semantics, total/has_more describing only the recent array, health_score nullability for blocked/down sites, and issues_found sourced from the published report. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose. It is longer than strictly necessary and includes an internal reference (#1700) that may not be meaningful to all agents, but most sentences earn their place by conveying behavior or routing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even with no output schema, the description explains the meaningful return concepts (active, recent, total, has_more, health_score, issues_found) and their relationships. It also covers pagination, soft-deleted access, and cross-tool usage, making it effectively complete for a listing operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description goes beyond the schema: it explains that website_id works for soft-deleted sites, that limit defaults to 20 and offset to 0, that total/has_more apply only to recent, and that health_score echoes get_report's summary.healthScore. This materially improves parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb-resource statement: it lists the organization's audit runs (active plus recent of any status). It then distinguishes itself from related operations such as get_audit_status, get_report, and list_issues by explicitly saying where run ids and website ids should be used.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: pass website_id for full per-site history, use limit/offset for pagination, reach soft-deleted websites’ preserved reports through this tool, and route run ids/website ids to specific sibling tools. It leaves little ambiguity about alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_credit_transactionsList credit transactionsA
Read-only
Inspect

Audit the organization's credit accounting log: grants (signup/monthly/pack/promo), debits (audit_base 50cr + render 2cr/page + folded 0-cost services), refunds, and adjustments — newest first, paginated. Each debit/refund carries run_id so you can group a single audit's spend. Use this to explain why an audit cost what it cost or to reconcile a balance. For one audit's per-feature breakdown, use get_report (its cost field). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions to return (default 25, max 100).
cursorNoOpaque pagination cursor from a previous page's `next_cursor`.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false. Description adds behavioral details: each debit/refund carries run_id for grouping, pagination, and explicit 'Read-only' confirmation. No contradictions 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured, front-loaded with purpose, then details, then usage. While comprehensive, it is efficient and every sentence adds value. Slightly longer than minimal, but not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains return details: newest first, each entry includes run_id, pagination via cursor. Covers what the agent needs to know to interpret results and use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described (limit with default and max, cursor as opaque pagination token). Description does not add additional semantics beyond schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool audits the organization's credit accounting log, listing grants, debits, refunds, adjustments. It distinguishes from get_report (per-feature breakdown) and get_credit_balance (balance), and specifies ordering (newest first, paginated).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance: 'Use this to explain why an audit cost what it cost or to reconcile a balance.' Also directs to use get_report for per-feature breakdown, clearly differentiating when to use this tool vs sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_issuesList website issuesA
Read-only
Inspect

List a website's open audit issues (like a bug tracker: each issue is one failing rule with occurrences across pages, numbered per website). Returns issues sorted by severity, plus severity and status summaries. Use the issue number with get_issue for full detail and comments. Filter by status/severity/category to narrow down. This is a per-website tracker spanning audits, not a per-run count: one rule failing on 600 pages is ONE issue here, and an issue stays open until an audit re-checks it. So the open count is expected to be far smaller than a run's issues_found (list_audits) or a report's failed+warnings, and the two are not comparable (#1700). To compare runs, use health_score from list_audits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default 50).
offsetNoPagination offset (default 0).
statusNoFilter by issue status (omit for all statuses).
categoryNoFilter by rule category code (e.g. seo, performance, security).
severityNoFilter by severity.
website_idYesWebsite id from list_websites, run_audit, or list_audits.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds valuable behavior: sorting by severity, inclusion of severity/status summaries, per-website tracker spanning audits rather than per-run count, and the persistence model of issues staying open until re-checked. It also explains why counts differ from related tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every section earns its place: it explains the bug-tracker analogy, sorting/summaries, the crucial per-website vs per-run distinction, and routing to siblings. It is front-loaded with the core purpose and saves the numerical caveat for the end. Could tighten slightly, but it's dense and mostly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for a read-only list tool: it explains return summaries, sorting, filtering, the relationship to get_issue, and the critical caveat about count comparability. No output schema exists, so the description appropriately explains what the response contains and why.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents all six parameters with descriptions and enums. The description adds context on filtering by status/severity/category and how pagination works through limit/offset defaults, though the schema already covers those details. There's a small bonus for explaining the issue-number link to get_issue.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists a website's open audit issues, compares them to a bug tracker, and specifies each issue is one failing rule with occurrences across pages numbered per website. Distinguishes itself from sibling tools like list_audits, get_issue, and run_audit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use this tool vs alternatives: use issue numbers with get_issue for details, compare runs with health_score from list_audits, and notes that open counts are not comparable to list_audits or report failed/warnings. This is strong alternative-routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notificationsList notificationsA
Read-only
Inspect

Read the organization's notification feed, newest first: what finished, what broke, and what changed since you last looked. Categories include audit_complete, issues_detected, audit_failed, schedule_paused. Use this to catch up at the start of a session ("did last night's scheduled audit run?", "what failed?") instead of polling every website. Each entry carries the category, the human-readable title and body, a data payload with the ids involved (website_id, run_id, report_id), and whether a human has read it in the dashboard. Filter with category, or unread_only to see just what nobody has looked at yet. Paginated with limit/offset. Read-only: this never marks anything read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax notifications to return (default 20, max 100).
offsetNoRows to skip (default 0).
categoryNoRestrict to these categories, e.g. ["audit_failed"]. Omit for every category.
unread_onlyNoOnly notifications no one has read in the dashboard yet.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses ordering (newest first), the data shape (category, title, body, payload ids, read state), filtering options, pagination, and the critical read-only behavior that it never marks anything read. This goes well beyond the annotations (readOnlyHint=true) by detailing what the response contains and how the feed behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: purpose, content, use case, filtering, pagination, and read-only safety. It is front-loaded with the main purpose and remains readable despite covering many details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining return values—and it does: category, title, body, data payload, read status. It also covers ordering, filters, pagination, and the use case. Nothing essential is missing for an agent to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters, but the description adds contextual meaning: unread_only is explained as 'what nobody has looked at yet', and pagination via limit/offset is explicitly mentioned. This enriches the schema's baseline without needing to describe syntax.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Read') and resource ('organization's notification feed'), and immediately tells the agent what it will find: what finished, broke, or changed. It is clearly distinct from siblings like list_audits or list_issues by focusing on notifications and enumerating the exact categories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends using this at the start of a session to catch up on scheduled audit results, and contrasts with 'polling every website'. It doesn't name a specific sibling tool as an alternative, but gives enough context to know when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rulesList audit rulesA
Read-only
Inspect

Browse the catalog of 260+ audit rules that run during an audit, grouped into categories (crawlability, meta tags, performance, security, accessibility, content, and more). Filter by category code or search by keyword to find what a specific rule checks. Use get_rule for one rule's full detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoCase-insensitive keyword match on rule id, name, and description.
categoryNoFilter to one category code (see the categories list in the response).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Adds behavioral context about catalog size and grouping. No contradiction. Slight deduction for not detailing pagination or response format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that front-load purpose and grouping, then provide usage guidance and sibling reference. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides catalog size, grouping, and filtering context. Lacks description of response fields beyond categories, but sufficient for a list tool given good schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds minimal extra beyond the schema parameter descriptions, essentially paraphrasing filter/search behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'browse' and resource 'audit rules' are clear. It distinguishes from sibling 'get_rule' by directing users to that tool for full details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states how to filter (by category or keyword) and when to use an alternative ('Use get_rule for one rule's full detail'). Provides context like '260+ rules' and grouping.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_websitesList websitesA
Read-only
Inspect

List websites the organization has audited, with their latest run status, health score, and owned/prospect kind. Each row carries last_run_id (the latest run, any status) and last_report_run_id / last_report_id (the latest completed run whose report has not been deleted) — pass last_report_run_id to get_report to read a website's newest report without knowing a run id in advance, or list_audits with website_id for its full history. Use the website_id with list_issues/get_issue. Websites registered but never audited do not appear; run_audit or add_website registers a new one. Ephemeral one-shot audits never appear. Returns total/has_more for pagination. Filter by kind to separate sites the user runs from one-off prospect audits: kind: "prospect" returns ONLY sites explicitly marked as such, so it is the safe way to build a bulk-delete list.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by classification. Unclassified sites count as 'owned', so 'prospect' never returns a site nobody explicitly marked disposable. Omit for all websites.
limitNoPage size (default 50).
offsetNoPagination offset (default 0).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/destructiveHint annotations, the description discloses that unregistered and ephemeral one-shot audits are omitted, that last_report_run_id points to the latest completed report whose report was not deleted, and that the response includes total/has_more for pagination. This adds meaningful behavioral context without contradicting any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded, with the main purpose in the first sentence. It is longer than average but every clause adds operational detail (ID relationships, exclusions, pagination, filter semantics). A slight trim could improve readability, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no output schema, the description covers return fields, pagination, filtering semantics, exclusions, and cross-tool ID usage. It anticipates likely follow-up actions (get_report, list_audits, list_issues) and provides enough context to invoke the tool correctly and interpret results. This is exceptionally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema already covers all three parameters with descriptions, the description enriches the meaning of 'kind' by explaining that unclassified sites count as 'owned' and that 'prospect' only returns explicitly marked sites. It also clarifies pagination semantics (default limit, offset behavior) and the difference between last_run_id and last_report_run_id, adding real value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('List') and resource ('websites the organization has audited'), and immediately defines the contained fields (latest run status, health score, kind). It distinguishes itself from sibling tools by naming how its IDs relate to get_report, list_audits, list_issues, and by clarifying that unregistered/unused websites are excluded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage direction: pass last_report_run_id to get_report, use website_id with list_issues/get_issue, and use list_audits for full history. It also states when to use kind=prospect for bulk deletion and that run_audit/add_website are for new registrations, effectively defining when this tool is and isn't appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_auditRun a cloud auditAInspect

Run a cloud audit of a website (crawl + 260+ rule analysis + report). Credits are spent as the audit runs (pay-as-you-go). The dry run is optional: pass confirm: true on the first call to start straight away. Without confirm, an audit whose estimate is over the org's auto-run threshold comes back as status "confirmation_required" with the estimate to show the user, and you call again with confirm: true; one at or under the threshold just starts. Use max_pages to size the crawl (max_pages: 1 audits just the entry URL, the cheapest run). Audits are asynchronous and take minutes: poll get_audit_status with the returned run_id, then fetch results with get_report. The website is registered automatically on first audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWebsite URL to audit, e.g. https://example.com (scheme optional).
kindNoClassify the site: 'owned' for something the user runs and monitors, 'prospect' for a lead or competitor audited once. Filterable in list_websites so a prospect cleanup can never sweep up a live site. Unclassified sites read as 'owned'. Ignored when ephemeral is true (an ephemeral site never joins the list).
renderNoRender pages in a headless browser (default true). Catches JavaScript-dependent issues; costs extra credits per page.
confirmNoApprove the credit spend. Set true to start immediately. Omitting it returns an estimate first for anything over the auto-run threshold, and starts the audit anyway for anything at or under it.
coverageNoCrawl coverage profile (default fast, 10 pages). Deeper coverage crawls more pages and costs more credits.
ephemeralNoOne-shot check: run the audit and return the report without adding the site to the organization's website list, and without consuming a slot against the plan's website limit. Use for any 'just check this URL' audit the user is not going to monitor. The site is removed automatically once the audit finishes; get_audit_status and get_report keep working on the run_id. Ignored if the domain is already registered, in which case the audit runs against the existing tracked site (nothing is ever deleted) and the response reports ephemeral: false.
max_pagesNoCap the crawl at this many pages for this run. Overrides the coverage profile's page count, so max_pages: 1 audits just the entry URL for the cheapest possible run. A value above the plan's per-audit page ceiling is clamped to the ceiling and reported back in a notice, not rejected.
max_creditsNoSpend guard: refuse to start if the upper-bound estimate exceeds this many credits.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only signal readOnlyHint=false, openWorldHint=true, destructiveHint=false. The description adds crucial behavioral context: pay-as-you-go credit spend, the dry-run/confirmation flow, asynchronous execution, auto-registration of the website, and the existence of an auto-run threshold. This goes far beyond annotations and gives the agent a clear model of side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph, front-loaded with the core purpose and then explaining the confirmation flow, sizing, async behavior, and auto-registration. Every sentence adds value, though it could be broken into bullets for readability. It earns a 4 rather than a 5 due to moderate length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 params, async, credits, confirmation, auto-registration), the description covers all key operational aspects: cost, confirmation threshold, polling workflow, max_pages sizing, and auto-registration. It also correctly points to sibling tools for follow-up. The lack of an output schema is offset by pointing to get_audit_status and get_report.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds workflow-level meaning for confirm (dry-run behavior) and max_pages (cheapest run), which helps the agent understand how parameters interact in practice. It does not add detail for every parameter, but the schema already handles those, and the added semantics justify a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Run a cloud audit of a website (crawl + 260+ rule analysis + report).' It uses a specific verb and resource, and distinguishes itself from sibling tools like get_audit_status and get_report by explaining the asynchronous hand-off.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use the tool: how to start immediately with confirm: true, how the confirmation_required flow works, when to poll get_audit_status, and when to use max_pages for sizing. It also implies when not to use it (e.g., for checking progress or results) by naming the appropriate sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_feedbackSend feedbackAInspect

Report your experience using squirrelscan mid-session: a bug, a missing feature, what worked, what confused you, missing report data, or tool ergonomics. Reviewed by the team to improve the product — use it any time something surprises you, not just at the end of a session. Works with any authenticated credentials, including read-only API keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idNoAudit run id this feedback relates to, if any (from run_audit/get_report). Verified against your credentials' runs before being attached.
messageYesFree-text feedback (truncated at 2000 chars).
categoryYesbug_report (a defect in squirrelscan itself — wrong or missing rule result, crash, broken tool), feature_request (something squirrelscan should do but doesn't), what_worked (something worked well), confusing (unclear response/behavior), missing_data (a report or tool response was missing something you needed), tool_ergonomics (awkward tool shape/args/naming), or other.
website_idNoWebsite id this feedback relates to, if any (from list_websites). Verified against your org's websites before being attached.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations show readOnlyHint=false (write) and destructiveHint=false (non-destructive). Description confirms it is for feedback submission, reviewed by team, and works with any credentials. No contradictions or missing behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loaded with action and purpose. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a feedback submission tool with no output schema, the description fully explains its purpose, usage timing, and compatibility. All parameters are well-documented in the schema. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description itself does not repeat parameter details but provides overall context. No additional semantic value beyond the schema is added by the description text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('report your experience') and resource ('squirrelscan mid-session'), clearly distinguishing it from sibling tools (no other feedback tool exists).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('any time something surprises you, not just at the end of a session'). Does not explicitly mention when not to use, but alternatives are not needed since no feedback sibling exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiWho am IA
Read-only
Inspect

Identify the current credentials: how you are authenticated, which organization you act for, the plan, and the current credit balance. Call this first in a session to orient yourself before running audits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds specific behavioral context about what information is returned (credentials, organization, plan, credit balance), which is useful beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the action ('Identify'), and provides all necessary information without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description adequately explains the tool's purpose and return value. It is complete for an identity/authentication tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the description does not need to add parameter meaning. With schema description coverage at 100% (empty schema), a baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Identify the current credentials: how you are authenticated, which organization you act for, the plan, and the current credit balance.' It uses a specific verb and resource, and the nature of checking credentials distinguishes it from sibling tools like list_websites or get_issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this first in a session to orient yourself before running audits,' providing clear context for when to use it. However, it does not mention when not to use it or alternatives, so it falls short of a perfect 5.

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. 1 tool update
    • Addedcompare_audits
  2. 1 tool update
    • Addedlist_notifications
  3. 4 tool updates
    • Changedadd_website1 field changed
      • addedInput schema / properties / kind
        Added value: +{
        +  "description": "Classify the site: 'owned' for something the user runs and monitors, 'prospect' for a lead or competitor. Filterable in list_websites. Unclassified sites read as 'owned', so only an explicit 'prospect' makes a site show up in a prospect cleanup. Re-calling with a different value reclassifies it.",
        +  "enum": [
        +    "owned",
        +    "prospect"
        +  ],
        +  "type": "string"
        +}
    • Addeddelete_websites
    • Changedlist_websites1 field changed
      • addedInput schema / properties / kind
        Added value: +{
        +  "description": "Filter by classification. Unclassified sites count as 'owned', so 'prospect' never returns a site nobody explicitly marked disposable. Omit for all websites.",
        +  "enum": [
        +    "owned",
        +    "prospect"
        +  ],
        +  "type": "string"
        +}
    • Changedrun_audit2 fields changed
      • addedInput schema / properties / ephemeral
        Added value: +{
        +  "description": "One-shot check: run the audit and return the report without adding the site to the organization's website list, and without consuming a slot against the plan's website limit. Use for any 'just check this URL' audit the user is not going to monitor. The site is removed automatically once the audit finishes; get_audit_status and get_report keep working on the run_id. Ignored if the domain is already registered, in which case the audit runs against the existing tracked site (nothing is ever deleted) and the response reports ephemeral: false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / kind
        Added value: +{
        +  "description": "Classify the site: 'owned' for something the user runs and monitors, 'prospect' for a lead or competitor audited once. Filterable in list_websites so a prospect cleanup can never sweep up a live site. Unclassified sites read as 'owned'. Ignored when ephemeral is true (an ephemeral site never joins the list).",
        +  "enum": [
        +    "owned",
        +    "prospect"
        +  ],
        +  "type": "string"
        +}
  4. 2 tool updates
    • Changedlist_audits4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Max recent runs to return (default 20)."New value: +"Max recent runs to return (default 20, max 100)."
      • changedInput schema / properties / limit / maximum
        Previous value: -50New value: +100
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Pagination offset into the recent runs (default 0). Use with total/has_more.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / website_id
        Added value: +{
        +  "description": "Only return runs of this website (id from list_websites, run_audit, or add_website). Works for soft-deleted websites too.",
        +  "type": "string"
        +}
    • Changedrun_audit3 fields changed
      • changedInput schema / properties / confirm / description
        Previous value: -"Approve the credit spend. Omit on the first call to see the estimate; set true to start the audit after the user approves."New value: +"Approve the credit spend. Set true to start immediately. Omitting it returns an estimate first for anything over the auto-run threshold, and starts the audit anyway for anything at or under it."
      • changedInput schema / properties / coverage / description
        Previous value: -"Crawl coverage profile (default fast). Deeper coverage crawls more pages and costs more credits."New value: +"Crawl coverage profile (default fast, 10 pages). Deeper coverage crawls more pages and costs more credits."
      • addedInput schema / properties / max_pages
        Added value: +{
        +  "description": "Cap the crawl at this many pages for this run. Overrides the coverage profile's page count, so max_pages: 1 audits just the entry URL for the cheapest possible run. A value above the plan's per-audit page ceiling is clamped to the ceiling and reported back in a notice, not rejected.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
  5. 17 tool updates
    • First observedadd_website
    • First observedcomment_on_issue
    • First observedcreate_api_key
    • First observeddelete_website
    • First observedget_audit_status
    • First observedget_credit_balance
    • First observedget_issue
    • First observedget_report
    • First observedget_rule
    • First observedlist_audits
    • First observedlist_credit_transactions
    • First observedlist_issues
    • First observedlist_rules
    • First observedlist_websites
    • First observedrun_audit
    • First observedsend_feedback
    • First observedwhoami

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Point your coding agent at a URL and get a real-browser QA audit: broken signup/login/checkout flows, JS console errors, missing analytics, consent + security headers, mobile tap targets, and accessibility — returned as machine-verified findings graded A-F.
    44
    2
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    AI-powered exploratory QA agent. Explores web apps like a real user — 18 MCP tools for clicking, filling forms, and navigating. Automatically verifies that actions persist (fake deletes, failed edits). Runs 16 detection types including dead links, SEO, accessibility, and performance checks.
    29
    2
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    MCP server for website SEO + GEO analysis. Scan any URL to get scores across 5 categories (SEO, GEO, Performance, Security, Accessibility) with actionable fix recommendations. Enables AI coding assistants to audit websites and implement fixes autonomously.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool maps to a distinct resource-action pair: websites, audits, issues, rules, credits, notifications, and account info are cleanly separated. Even the close pairs (delete_website vs delete_websites, get_rule vs list_rules) are clear singular/bulk or fetch-all vs fetch-one distinctions.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: add_, delete_, get_, list_, run_, comment_, send_, create_. The only outlier, whoami, is a conventional standalone command and does not break the overall predictability.

Tool Count4/5

At 20 tools, the surface is slightly heavy, but the count is justified by the wide domain coverage: audit lifecycle, issue tracking, rule catalog, billing/credits, notifications, and account management. Each tool appears to earn its place, and none feel redundant.

Completeness4/5

The core workflow is well covered: run an audit, poll it, fetch a report, compare audits, list and comment on issues, browse rules, and manage websites. Minor gaps exist—no cancel-audit tool, no update_website, and issues cannot be status-changed—but agents can work around these using the existing tools.