Skip to main content
Glama

Server Details

AskYourStack connects Claude to your Linux server and to Google Search Console over MCP.

On a server, a small open-source agent (Apache-2.0, reproducible builds) dials out to AskYourStack; no SSH key or password is stored. Claude can then set up a raw VPS, install Magento or WordPress, read logs and fix errors, take backups and snapshots, harden the server, scan for malware and move a site to a new server. It runs as the Linux user who owns the sites by default, or as root when the user chooses

Ownership verified
Status
Healthy
Uptime
98.4% over 25 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
AskYourStack

TDQS

B3.4/5.0

Scored across 137 tools

Disambiguation4/5

Tools are strongly grouped by domain prefixes (bing_, cf_, gh_, gsc_, ga4_, content_, umami_) and descriptions repeatedly cross-reference alternatives such as comparing bing_performance with gsc_performance_overview or pointing to whizzy_tools before whizzy_call. Some boundaries remain fuzzy across overview, health_report, server_facts, list_servers, list_sites and connected_sites, and among run, start_job, site_console, wp and magento, but the documentation mostly resolves them.

Naming Consistency3/5

Names are uniformly snake_case with domain prefixes, which makes grouping readable. However, verb/noun ordering is mixed: gh_create_repo and gh_pull_create coexist with gh_issue_create and gh_issue_update, and noun-only names like overview, logs, snapshot and health_report sit beside verb-first names like save_note, read_file and write_file.

Tool Count2/5

137 tools is far beyond a practically scannable surface for an agent, even for a broad server, SEO and analytics platform. While many are distinct operations, the count forces the model to navigate a very large set and would likely work better split into domain-specific servers or dynamically loaded tool groups.

Completeness5/5

The surface covers server setup, health, logs, files, database dump/restore, shell and app CLIs, snapshots and rollback, git deployment, GitHub, Cloudflare DNS/firewall/settings, WordPress/Shopify content, redirects, SEO fields, Search Console, Bing, GA4, Umami, Merchant Center and full site audits. Lifecycle and cross-domain workflows are unusually complete, with undo and approval mechanisms included.

Available Tools

137 tools
bing_crawlHow Bing crawls a siteA
Read-onlyIdempotent
Inspect

How Bingbot crawls a site: daily crawled pages, pages in the index, crawl errors and what blocked them (Bing keeps about 6 months), plus the crawl issues per address (HTTP errors, long page, missing titles and descriptions, blocked by robots.txt) and, for one address, when Bing found and last crawled it and what it answered.

NameRequiredDescriptionDefault
urlNoOne address to inspect.
siteNoThe site as Bing lists it, like https://www.example.com/ (a bare domain also works). Optional when one site is picked.
limitNoIssues to list, default 50, at most 500.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that, notably the retention window ('Bing keeps about 6 months') and the specific classes of data returned. It stops short of describing limits or pagination behavior for the 'limit' param.

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?

It is a single, front-loaded sentence that leads with the core behavior and packs in only substantive detail. It is somewhat run-on and could split the per-address and per-site clauses, but every clause 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?

With readOnly/idempotent annotations carrying safety and no output schema, the description does the needed work of enumerating return categories (index, errors, issues, find/last-crawl/response) and the 6-month retention. The main omission is clarifying the relationship between the url and site parameters and pagination of the limit-ed issue list.

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 the schema already documents url, site, and limit with defaults and bounds. The description only loosely gestures at the url parameter ('for one address') and adds no format or interaction detail beyond what the schema provides. Baseline 3 applies when the schema carries the load.

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

Purpose4/5

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

The description states a specific resource and specific data categories (daily crawled pages, index pages, crawl errors, per-address issues, plus find/last-crawl/response for one address). It is clearly a Bing crawl-data retrieval tool. It does not, however, name or distinguish itself from nearby siblings such as crawl_report, gsc_inspect_url, or page_audit, so an agent must infer the boundary itself.

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?

Usage is only implied: the description hints at two modes ('crawl issues per address' vs 'for one address ... when Bing found and last crawled it'), which loosely maps to the site vs url parameters. There is no explicit when-to-use guidance, no statement of when to prefer this over gsc_inspect_url or crawl_report, and no note on whether url and site are mutually exclusive.

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

bing_keywordsKeyword research from BingA
Read-onlyIdempotent
Inspect

Keyword research from Bing's own data, free with Bing Webmaster Tools: how many searches a keyword had on Bing in a period (week by week too), and related keywords with their Bing search counts. These are Bing's own counts: use them to compare keywords against each other and to see trends, not as a keyword's total search demand.

NameRequiredDescriptionDefault
countryNoTwo-letter country code, default us.
keywordYes
relatedNoAlso list related keywords (default true).
end_dateNoDefault today.
languageNoLike en-US, default en-US.
start_dateNoDefault 90 days ago.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful context beyond that: the data is Bing's own (not a blended estimate), it is free via Bing Webmaster Tools, it returns week-by-week granularity, and it carries an interpretive caveat about not treating counts as total demand.

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?

Two sentences, front-loaded with the purpose and data source before the caveat. Every clause carries information; the only mild redundancy is restating the Bing-ownership point. Appropriately sized for the tool's scope.

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?

With no output schema, the description must convey return values, and it does: search counts for the keyword, week-by-week breakdown, and related keywords with their counts. That covers what an agent needs to call and interpret the tool; only the exact date-range semantics and default handling are left entirely to the 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 83%, so the schema documents most parameters (country, related, language, dates) already. The description hints at the date-period and related-keyword parameters ('in a period (week by week too)', 'related keywords') but adds no format or syntax detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific resource ('keyword research') and verb-like action, and clarifies the data source as Bing's own counts with two concrete outputs (search volume over a period, week-by-week breakdown, and related keywords with counts). It clearly distinguishes itself from Google-based tools by emphasizing Bing data, but it never names the close siblings (keyword_volume, keyword_ideas, domain_keywords), so the agent must infer the distinction.

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 gives an interpretation caveat ('use them to compare keywords against each other and to see trends, not as a keyword's total search demand'), which is useful guidance on how to use the output. However, it gives no when-to-use-vs-alternatives guidance, e.g., when to pick this over keyword_volume or keyword_ideas, leaving tool selection to inference.

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

bing_performanceBing search performanceA
Read-onlyIdempotent
Inspect

Bing search performance of a site: daily impressions and clicks (Bing keeps about 6 months), the last 28 days against the 28 before, the top queries and the top pages with impressions, clicks and average position. Pass query to see the pages one query lands on, or page to see the queries one page gets. Compare with gsc_performance_overview for Google.

NameRequiredDescriptionDefault
pageNoA full page address.
siteNoThe site as Bing lists it, like https://www.example.com/ (a bare domain also works). Optional when one site is picked.
limitNoRows per list, default 25, at most 200.
queryNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds a genuinely useful behavioral fact not in the structured data: Bing retains roughly six months of history, and the comparison window is fixed at 28 days vs the preceding 28. It does not discuss rate limits or result truncation beyond the schema's limit.

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?

Front-loaded with what is returned, then the parameter-routing guidance, then the sibling pointer — a sensible order with no filler. The first sentence is long and packs several distinct report sections, which slightly hurts scannability, but nothing is wasted.

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?

With no output schema, the description does the job of describing returns (daily metrics, 28-day comparison, top queries/pages with impressions, clicks, average position) and adds a retention caveat. Combined with the 75%-covered schema for site/limit/page, an agent has enough to call it correctly; only permission/precondition details are absent.

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 75% and the `query` parameter has no schema description at all, so the description carries real weight here by explaining that `query` pivots to landing pages and `page` pivots to queries. That is meaning beyond the schema. It does not clarify the site-matching or limit interaction further, but the key ambiguity is resolved.

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?

States a specific verb+resource ('Bing search performance of a site') and enumerates exactly what is returned: daily impressions and clicks, 28-day vs prior-28-day comparison, top queries and top pages with impressions, clicks and average position. It explicitly positions itself against the sibling gsc_performance_overview, so an agent can distinguish the two without opening either schema.

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?

Gives concrete routing rules for two parameters: 'Pass query to see the pages one query lands on, or page to see the queries one page gets', and points to gsc_performance_overview for Google data. This is clear usage context, but it never states when not to use the tool or what preconditions (e.g. a connected Bing site) are required.

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

bing_sitemapsSitemaps at BingA
Read-onlyIdempotent
Inspect

The sitemaps Bing knows for a site, with status, when Bing last read them, and how many addresses they hold. To submit one, use bing_submit with sitemap.

NameRequiredDescriptionDefault
siteNoThe site as Bing lists it, like https://www.example.com/ (a bare domain also works). Optional when one site is picked.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true), and the description adds useful output context: status, last-read date, and address count. It does not cover auth requirements or rate limits, but for a read-only listing tool it adds meaningful behavioral detail 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?

Two sentences, zero waste. The core purpose and returned fields are front-loaded, and the alternative is relegated to the second sentence.

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 simple read-only Bing sitemap listing tool with rich annotations, 100% schema coverage, and no output schema, the description is complete enough. It says what is returned and routes the agent to the correct tool for submission.

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 the single optional site parameter is fully documented in the schema. The description adds no parameter syntax or format detail beyond what the schema already provides, which matches the baseline 3 for high schema coverage.

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 states a specific resource and scope: 'The sitemaps Bing knows for a site, with status, when Bing last read them, and how many addresses they hold.' It distinguishes from the sibling bing_submit by naming it as the submission alternative, so an agent can tell what this tool does without opening the schema.

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 an explicit alternative for submission: 'To submit one, use bing_submit with sitemap.' That is a clear when-not/alternative cue, though it does not explicitly compare against other retrieval siblings like gsc_sitemaps or sitemap_check.

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

bing_sitesBing Webmaster Tools sitesA
Read-onlyIdempotent
Inspect

The sites in the user's Bing Webmaster Tools account and which of them the AI may read (picked on the SEO page). Bing Webmaster Tools is the Bing (and Yahoo, DuckDuckGo, Ecosia) side of Search Console: queries, pages, crawl errors, inbound links, URL submission and sitemaps.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context beyond the annotations: the return includes per-site AI read permissions (a non-obvious access-control field) and it enumerates the scope of the underlying Bing Webmaster Tools data (queries, pages, crawl errors, links, URL submission, sitemaps).

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?

Two sentences, front-loaded with the actual resource and its permission aspect. The second sentence is background on what Bing Webmaster Tools is; it earns partial credit by disambiguating Bing from the many Google Search Console siblings, but it is closer to contextual padding than operative instruction.

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 parameterless, read-only listing tool with no output schema, the description tells the agent what it gets back (sites plus read permissions) and where that permission is configured (the SEO page). Nothing essential to calling it correctly is missing, though it stops short of saying how to proceed once the site list is obtained.

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 takes zero parameters, so the schema carries no semantics to supplement; baseline for a no-param tool is 4. The description correctly implies the tool is account-scoped with no filtering inputs.

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

Purpose4/5

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

The description names the resource precisely (sites in the user's Bing Webmaster Tools account) and adds a distinct output dimension: which sites the AI is permitted to read. It is a noun phrase rather than a verb-led statement, and it does not explicitly distinguish itself from sibling listers such as list_sites or connected_sites, but the 'Bing Webmaster Tools' scoping makes the intent unambiguous within the bing_* family.

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?

Usage is only implied: the mention of read permissions and the explanation of what Bing Webmaster Tools covers hints that this is the discovery entry point before calling bing_performance, bing_backlinks, etc. There is no explicit 'use this when' statement and no exclusion of alternatives, so an agent must infer the routing.

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

bing_submitSubmit pages or a sitemap to BingAInspect

Ask Bing to crawl pages now: submit up to 500 addresses of a picked site (Bing allows about 10,000 a day per site; the quota left is shown), or submit a sitemap. Use after publishing or changing pages; IndexNow (indexnow_submit) reaches Bing too and needs no account, so prefer this when the user has Bing connected and wants Bing's own confirmation and quota.

NameRequiredDescriptionDefault
siteNoThe site as Bing lists it, like https://www.example.com/ (a bare domain also works). Optional when one site is picked.
urlsNoPage addresses of the site to submit.
sitemapNoA sitemap address to submit instead.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, open-world write, so the safety profile is covered. The description adds genuinely new behavioral context beyond them: the 500-address cap, the ~10,000/day per-site quota and that remaining quota is surfaced, and the account prerequisite. It does not say how partial failures or rejected URLs are reported.

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?

Two front-loaded sentences, with the action and its limits stated before the alternative-tool routing. The first sentence is dense with nested parentheticals, which slightly taxes readability, but no sentence is filler.

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?

No output schema exists, but the description covers the mutation's constraints, quota behavior and the alternative route, and annotations carry the safety hints. It stops short of explaining what a submission result or a failure looks like, which is the main remaining gap for a write tool.

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 the schema already documents site, urls and sitemap. The description adds only the volume ceiling on urls, not format or validation semantics. Baseline 3 is correct when the schema does the heavy lifting.

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?

Specific verb and resource ('Ask Bing to crawl pages now', submit addresses or a sitemap) with concrete scope limits (up to 500 addresses, ~10,000/day per site). It also names the sibling it overlaps with (indexnow_submit), so an agent can distinguish it without opening either schema.

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 trigger ('Use after publishing or changing pages') plus an explicit alternative and the condition that selects it: prefer indexnow_submit when no account exists, prefer this when Bing is connected and the user wants Bing's own confirmation and quota.

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

cf_analyticsTraffic through CloudflareA
Read-onlyIdempotent
Inspect

Traffic through Cloudflare for a zone (proxied traffic only): requests, cached share, visitors, threats, bandwidth and status codes per day for up to 30 days, top countries, requests per hour for the last 24 hours, and a sample of the firewall events of the last 24 hours (what was blocked or challenged, by action, source, address, path and country). The place to look during a bot attack or a traffic alert.

NameRequiredDescriptionDefault
daysNo1 to 30, default 7.
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the description's added value is data-boundary disclosure: proxied traffic only, a 30-day ceiling, fixed 24-hour windows for hourly/top-country/firewall data, and that firewall events are only a 'sample'. It does not mention auth/token requirements or whether any fields can be empty.

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?

Front-loaded with resource, zone scope and the 'proxied traffic only' constraint, then the output inventory, then a short usage cue. The long enumerated list is information-dense rather than padded, and with no output schema that detail earns its place, though the single run-on sentence is heavier than necessary.

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?

With no output schema, the description carries the return-value burden and does so comprehensively (metrics, time windows, top countries, hourly, firewall-event sample). Combined with annotations and full schema coverage, the only real gap is operational context such as permissions and whether the firewall sample is truncated.

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% and both parameters (days 1-30 default 7, zone optional for single-zone users) are fully documented in the schema. The description's 'per day for up to 30 days' and 'last 24 hours' windows loosely mirror the days parameter but add no syntax or format detail beyond it, so the baseline 3 applies.

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 states a specific resource and scope: 'Traffic through Cloudflare for a zone (proxied traffic only)', followed by an explicit inventory of the metrics returned. That scope cleanly separates it from the other cf_* siblings (DNS, firewall rules, cache, settings, zones), which are configuration tools rather than read-only analytics.

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 place to look during a bot attack or a traffic alert' gives a concrete triggering context, and 'proxied traffic only' implicitly scopes out non-proxied/GA-sourced data. It stops short of naming an alternative (e.g. ga4_* or cf_firewall_list for rule configuration), so no explicit 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.

cf_dns_addAdd a Cloudflare DNS recordAInspect

Add a DNS record to a Cloudflare zone: a new subdomain, a mail record or a verification text. proxied defaults to false. It can be removed again with cf_undo.

NameRequiredDescriptionDefault
ttlNoSeconds, or auto (default).
dataNoSRV and CAA fields, as Cloudflare takes them.
nameYesThe record's name: shop, www, @ for the zone itself, or the full host.
typeYesA, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR.
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
commentNo
contentNoThe address, target host or text.
proxiedNoThrough Cloudflare (orange cloud). Default false for a new record.
priorityNoMX and SRV.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already disclose the write profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), lowering the bar. The description adds two useful facts beyond them: proxied defaults to false, and the record can be reversed via cf_undo. It still omits auth/permission needs and any rate-limit context, so it is solid but not rich.

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?

Two tight sentences, front-loaded with the core action and examples, with no filler. Slightly under-elaborated on routing but nothing wasted.

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?

With no output schema required and annotations carrying the safety profile, the description covers purpose, examples, the proxied default, and the reversal path. The only gap is the lack of differentiation from cf_dns_change, which keeps it from a 5.

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 89%, so the schema already documents all 9 parameters well, including the proxied default. The description only repeats the proxied default and adds no new meaning for type/name/content/data, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Add) and resource (DNS record to a Cloudflare zone) and gives concrete examples of what can be added (subdomain, mail record, verification text). It does not differentiate itself from the sibling cf_dns_change, which an agent might confuse with it, so it falls short of a 5.

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?

Usage is implied by the 'Add' framing, and it usefully points to cf_undo for removal, but it never states when to prefer this over cf_dns_change or what prerequisites (e.g. an existing zone) are needed. This is the minimum viable routing guidance.

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

cf_dns_changeChange a Cloudflare DNS recordA
Destructive
Inspect

Change one DNS record of a Cloudflare zone, by record_id from cf_dns_list (or name plus type when they match one record): its content, TTL, proxy, priority or name. Records that were there before AskYourStack need the connection's "change anything" mode. cf_undo puts the old values back.

NameRequiredDescriptionDefault
ttlNoSeconds, or auto (default).
dataNoSRV and CAA fields, as Cloudflare takes them.
nameNoThe record's name: shop, www, @ for the zone itself, or the full host.
typeNoA, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR.
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
commentNo
contentNoThe address, target host or text.
proxiedNoThrough Cloudflare (orange cloud). Default false for a new record.
new_nameNoFor change: rename the record.
priorityNoMX and SRV.
record_idNoFor change and remove: the id from list (or name plus type when they match one record).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, so the safety profile is known. The description adds genuinely new context: the pre-existing-record restriction requiring elevated mode, and that cf_undo restores prior values — real behavioral detail beyond annotations. It stops short of clarifying partial-update semantics for a tool whose 11 params are all optional.

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 dense sentences, front-loaded with the core action, followed by record targeting, the prerequisite, and the reversal path. No filler or repetition of the title.

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 an 11-parameter destructive mutation with no output schema, the description covers record identification, a non-obvious prerequisite, and rollback. The only notable gap is whether unspecified fields are left untouched or cleared, which an agent would want before mutating.

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 91%, so the schema already carries nearly all parameter meaning. The description adds only light framing (which fields can be changed, how record_id resolves), so the baseline 3 is appropriate rather than a higher mark.

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?

States a specific verb and resource (change one DNS record of a Cloudflare zone) and enumerates exactly which fields are mutable (content, TTL, proxy, priority, name). This clearly separates it from cf_dns_add, cf_dns_list, and cf_dns_remove without opening any schema.

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?

Explains how to target the record (record_id from cf_dns_list, or name plus type when they match exactly one record) and states a real prerequisite: records predating AskYourStack require the connection's "change anything" mode. It also points to cf_undo for reversal, though it never explicitly says when to prefer cf_dns_add over this tool.

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

cf_dns_listList Cloudflare DNS recordsB
Read-onlyIdempotent
Inspect

List the DNS records of a Cloudflare zone, filtered by type, name or search (part of a name or content), each with its id. Changes nothing.

NameRequiredDescriptionDefault
nameNoThe record's name: shop, www, @ for the zone itself, or the full host.
typeNoA, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR.
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
searchNoFor list: part of a name or content.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description's 'Changes nothing' reinforces the read-only nature but adds no new behavioral context such as rate limits, auth requirements, or pagination.

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 tight sentences with zero waste, front-loading the core action and filtering options before the no-side-effect assurance. Every part 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 simple list tool with full schema descriptions and rich annotations, the description is nearly complete. It does not mention pagination or default behavior when no filters are applied, but with no output schema that is a minor gap.

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 the schema already fully documents all four parameters. The description mentions filtering by type, name, or search but adds no syntax or format details beyond what the schema provides.

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

Purpose4/5

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

States the specific verb 'List' and resource 'DNS records of a Cloudflare zone', and clarifies filtering options. It distinguishes itself from mutation siblings implicitly via 'Changes nothing', but does not explicitly name alternatives like cf_dns_add.

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

Usage Guidelines2/5

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

Provides no explicit when-to-use or when-not-to-use guidance. There is no mention of alternatives or conditions for choosing this tool over cf_dns_add, cf_dns_change, or cf_firewall_list.

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

cf_dns_removeRemove a Cloudflare DNS recordA
Destructive
Inspect

Remove one DNS record of a Cloudflare zone, by record_id from cf_dns_list (or name plus type when they match one record). Records that were there before AskYourStack need the connection's "change anything" mode. cf_undo creates it again.

NameRequiredDescriptionDefault
nameNoThe record's name: shop, www, @ for the zone itself, or the full host.
typeNoA, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR.
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
record_idNoFor change and remove: the id from list (or name plus type when they match one record).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered structurally. The description goes beyond that by naming the permission mode needed for pre-existing records and pointing at cf_undo as the reversal path — real behavioral value. It stops short of describing what happens when name+type match zero or multiple records.

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?

Three short sentences, no filler: target and identification method first, then the permission caveat, then the undo remedy. Everything is front-loaded and each sentence carries unique information.

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?

With no output schema, the description still covers identification, permission prerequisite and reversibility — enough for an agent to invoke it correctly. Minor gaps remain around ambiguous-match behavior and whether confirmation is expected before a destructive call.

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?

All four parameters have full schema descriptions (100% coverage), including the same name-plus-type fallback and id-source notes the description repeats. The description adds only a slight emphasis on preferring record_id from cf_dns_list, so the schema is doing the heavy lifting.

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?

States a specific verb (Remove) and resource (one DNS record of a Cloudflare zone) with an exact scoping mechanism (record_id from cf_dns_list, or name plus type). This cleanly separates it from cf_dns_add and cf_dns_change without the agent needing to open schemas.

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?

Gives a concrete prerequisite (records pre-dating AskYourStack require the connection's "change anything" mode) and a recovery route (cf_undo recreates it). It does not explicitly say when to prefer cf_dns_change over this tool, but the destructive verb makes the split clear enough.

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

cf_firewall_addAdd a Cloudflare firewall ruleA
Destructive
Inspect

Add one firewall rule or rate limit to a Cloudflare zone. What it matches comes from ip or ips (addresses or CIDR), asn, country or countries, path (starts with), user_agent (contains), host and not_verified_bot, combined with and; or a raw expression in Cloudflare's rule language. A rule can block real visitors, so it is undone with cf_undo or cf_firewall_remove.

NameRequiredDescriptionDefault
ipNo
asnNo
ipsNo
hostNo
pathNo
ruleYesblock; challenge (a managed challenge most bots fail); js_challenge; allow (skip the other custom rules); log; rate_limit (block an address making more than requests_per_period requests in period_seconds).
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
countryNo
enabledNo
countriesNo
expressionNoA raw Cloudflare expression instead of the fields above.
user_agentNo
descriptionNo
period_secondsNorate_limit: default 10 (the only value on Free).
not_verified_botNoLeave verified search engines (Googlebot, Bingbot) out of the rule.
blocked_for_secondsNorate_limit: default 10 (the only value on Free).
requests_per_periodNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds genuinely new context: that the rule 'can block real visitors' and the exact reversal path via cf_undo/cf_firewall_remove. This is meaningful beyond the safety flags, though it omits permission requirements and success behavior.

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?

Three dense but front-loaded sentences: the action leads, the matching model follows, and the safety/reversal note closes. Every sentence earns its place, though the middle sentence is long and packs many fields together.

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 destructive, open-world write tool with no output schema and partial param coverage, the description supplies the matching model and the critical reversal path. It is largely complete, missing only success/permission details that the annotations partly cover.

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?

With 17 params at 35% schema coverage, the description carries real weight by explaining how matching fields combine ('combined with and') and field semantics like path (starts with) and user_agent (contains), plus the raw-expression alternative. It leaves parameters like enabled and description unexplained, so not fully compensating.

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?

States a specific verb+resource ('Add one firewall rule or rate limit to a Cloudflare zone'), distinguishing it cleanly from cf_firewall_list and cf_firewall_remove. An agent can identify exactly what this tool does without opening the schema.

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 routes the agent to cf_undo and cf_firewall_remove for reversal and explains the match-combination model, giving clear operational context. It stops short of naming when NOT to add a rule (e.g., preferring cf_firewall_list to inspect existing rules first), so it lacks full exclusions.

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

cf_firewall_listList Cloudflare firewall rulesA
Read-onlyIdempotent
Inspect

List the custom firewall rules and rate limits of a Cloudflare zone, each with its id, action and expression. Changes nothing.

NameRequiredDescriptionDefault
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so 'Changes nothing' largely restates them. However, the description adds genuine value by disclosing the shape of the response (id, action, expression) in the absence of an output schema, which the annotations do not cover.

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?

A single, front-loaded sentence with zero filler; every clause (scope, returned fields, no side effects) 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 simple read-only list tool with full annotation coverage and a fully documented parameter, the description is largely sufficient, covering scope and return fields. It could note pagination or result ordering, but nothing critical is missing.

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?

Only one parameter exists and its schema description coverage is 100%, so the schema fully explains the 'zone' argument. The description adds no extra meaning about the parameter, making the baseline 3 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?

States a specific verb ('List') and resource ('custom firewall rules and rate limits of a Cloudflare zone'), and even names the returned fields (id, action, expression). This cleanly separates it from the sibling mutation tools cf_firewall_add and cf_firewall_remove.

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 phrase 'Changes nothing' implies a safe read operation, and the name distinguishes it from the add/remove siblings, but there is no explicit when-to-use or when-not-to-use guidance and no named alternatives. Usage is only implied.

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

cf_firewall_removeRemove a Cloudflare firewall ruleA
Destructive
Inspect

Remove one custom firewall rule or rate limit from a Cloudflare zone, by rule_id from cf_firewall_list. cf_undo adds it again.

NameRequiredDescriptionDefault
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
rule_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the danger profile is covered. The description adds genuinely useful context beyond them: the removal is reversible via cf_undo, which is not derivable from 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?

Two short sentences with zero padding; the destructive action and its identifier source are front-loaded, and the recovery hint is a compact second sentence.

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 destructive, output-schema-less tool whose annotations carry the safety profile, the description supplies the essentials: target, id source, and reversal path. It is slightly thin on the optional zone parameter, but the schema covers that.

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 50% — zone is documented in the schema, rule_id is not. The description compensates for rule_id by specifying its origin (cf_firewall_list), but adds nothing about the zone parameter, so it lands at the baseline for partial coverage.

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?

States a specific verb (Remove) plus the resource (custom firewall rule or rate limit) and its scope (Cloudflare zone), and the mechanism (by rule_id). This cleanly separates it from siblings cf_firewall_add and cf_firewall_list.

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?

It tells the agent where rule_id comes from (cf_firewall_list) and names the recovery alternative (cf_undo), which is clear routing guidance. It stops short of explicit when-not-to-use conditions, but the context is unambiguous.

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

cf_purge_cachePurge the Cloudflare cacheA
Destructive
Inspect

Clear Cloudflare's cache of a zone: everything, or only the given addresses (up to 30). Use it after deploying changes a visitor still sees old, or a wrong page cached. Nothing to undo; the cache fills again from the origin.

NameRequiredDescriptionDefault
urlsNoFull addresses to purge.
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
everythingNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety baseline is set. The description adds genuinely new behavior: the purge is irreversible but self-healing ('the cache fills again from the origin') and the per-request URL limit of 30. It stops short of noting the origin-load consequence of a full-zone purge or any auth/permission requirement.

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 tight sentences: scope first, then the usage trigger and reversibility note. No filler, no restatement of the title, everything front-loaded.

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 3-parameter mutation tool with no output schema, the description covers what is cleared, when to use it, the extent limit, and the post-purge behavior. Only minor gaps remain (whether confirmation/return output exists, any zone-permission caveat), which are not critical to invoking it 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 67% — urls and zone are documented, the boolean 'everything' is not. The description compensates by explaining the everything-vs-addresses dichotomy and surfacing the 30-URL cap, which appears nowhere in the schema. That is real added value above the baseline 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?

States a specific verb and resource — clear Cloudflare's cache of a zone — and immediately enumerates the two scopes (everything, or given addresses up to 30). It is unmistakably distinct from sibling cf_* tools like cf_dns_* or cf_settings without needing to open any schema.

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

Usage Guidelines4/5

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

Explicitly gives the triggering situation: after deploying changes when a visitor still sees the old page or a wrong page is cached. It does not name a sibling alternative, but the line 'Nothing to undo' implicitly rules out reaching for cf_undo/rollback.

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

cf_settingsCloudflare zone settingsA
Destructive
Inspect

Read or change a Cloudflare zone's settings: security_level (essentially_off, low, medium, high, under_attack) or under_attack true/false as a shortcut, development_mode (skip the cache for 3 hours), browser_check, automatic_https_rewrites; and in "change anything" mode ssl (off, flexible, full, strict), always_use_https, min_tls_version. Without arguments it reads them all. Changes can be undone with cf_undo; under_attack false puts the level back to what it was.

NameRequiredDescriptionDefault
sslNo
zoneNoThe zone (domain) at Cloudflare, or any host inside it. Not needed when the user has one zone.
under_attackNo
browser_checkNo
security_levelNo
min_tls_versionNo
always_use_httpsNo
development_modeNo
automatic_https_rewritesNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already flag this as non-read-only, destructive, and non-idempotent, so the bar is lower. The description still adds real value beyond them: it discloses that changes are reversible via cf_undo, that under_attack false restores the prior level, and that development_mode is a temporary 3-hour cache bypass.

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?

Purpose and mode behavior are front-loaded, and most clauses earn their place by naming values or clarifying shortcuts. The middle sentence is dense and slightly run-on, but there is no padding or redundancy.

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 9-param mutation tool with no output schema, the description covers modes, reversible undo, and the key settings. The main gap is that some parameters (min_tls_version, browser_check, automatic_https_rewrites) are listed without any value or effect explanation, and the read-mode return shape is unaddressed.

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 only 11% (just the zone param), so the description must compensate. It does supply enum values for security_level and ssl that the schema lacks, and groups settings by mode, but leaves min_tls_version values and the semantics of browser_check/automatic_https_rewrites unexplained, so compensation is partial.

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?

States a specific verb pair (read or change) and resource (Cloudflare zone settings), then enumerates the exact settings involved. It is clearly distinguishable from siblings like cf_dns_add, cf_firewall_add, and cf_purge_cache, which target different Cloudflare resources.

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 implies the two modes (no args = read all; passing args = change) and routes undo to cf_undo, which is helpful. However, it never explicitly states when to use this tool versus other settings-adjacent siblings, nor any when-not-to-use conditions.

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

cf_undoUndo a Cloudflare changeA
Destructive
Inspect

Undo a Cloudflare change made through the cf_dns_, cf_firewall_ or cf_settings tools: a record or rule that was added is removed, a changed one gets its old values, a removed one is made again. Without change_id it lists the changes of the last 90 days.

NameRequiredDescriptionDefault
change_idNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by spelling out the exact reversal semantics per operation type: an added record/rule is removed, a changed one is restored to old values, a removed one is recreated. This is materially useful given destructiveHint=true and idempotentHint=false, and it also discloses the default listing window of 90 days.

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, no filler. The core undo behavior is front-loaded and the no-argument fallback is placed second, which is the right priority order for an agent deciding how to call it.

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 one-parameter, no-output-schema tool with annotations already declaring the destructive profile, the description covers purpose, reversal semantics, and default behavior. It does not address permissions/auth needed to undo or whether the undo itself is reversible, which would be nice for a destructiveHint=true 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 0% and the single attribute has no description, but the prose fully compensates by explaining the effect of supplying change_id versus omitting it (falling back to a 90-day listing). It stops short of saying where to obtain a change_id, though the listing behavior implies it.

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?

States a specific verb (undo) plus the resource (a Cloudflare change) and narrows the scope to changes made by the cf_dns_, cf_firewall_ and cf_settings tools. An agent can distinguish this from sibling undo tools like redirects_undo or content_undo by the Cloudflare scope alone.

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?

Gives clear context for both invocation modes: with change_id it undoes that change, without it lists changes from the last 90 days. It does not explicitly name non-Cloudflare alternatives (rollback, redirects_undo) or state exclusions, so it falls just short of the 5 bar.

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

cf_zonesCloudflare zonesA
Read-onlyIdempotent
Inspect

The Cloudflare zones (domains) the user connected, with status, plan, name servers and what the AI may do there. Start here before any other cf_ tool. Cloudflare is connected on the Sites & Apps page with an API token; no server is needed.

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, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely new context beyond that: the returned fields, the notion of per-zone AI permissions ('what the AI may do there'), and the auth/setup requirement (API token via the Sites & Apps page, no server needed).

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 tight sentences with the resource and the 'start here' directive front-loaded. No filler, and the setup/auth note is compressed into one clause.

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 and no parameters, the description carries the burden of telling the agent what comes back, and it does so by listing status, plan, name servers and permissions. Combined with the entry-point guidance and auth context, an agent has everything needed to call it 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?

This tool takes zero parameters, so the absence of parameter discussion is expected and the baseline of 4 applies. Nothing in the description misrepresents the no-argument nature of the call.

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?

It names the specific resource (Cloudflare zones/domains the user connected) and enumerates what each entry carries (status, plan, name servers, permissions). The line 'Start here before any other cf_ tool' distinguishes it from the many cf_dns_*, cf_firewall_* and cf_analytics siblings.

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?

It gives an explicit sequencing rule ('Start here before any other cf_ tool'), which is exactly the routing guidance an agent needs when facing dozens of cf_ tools. It stops short of naming when *not* to use it or which specific sibling to follow with, so it is clear context rather than full when/when-not coverage.

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

connected_sitesSites connected without a serverA
Read-onlyIdempotent
Inspect

Sites the user connected without a server: a WordPress site through its REST API (any host, no SSH) or a WhizzyCommerce shop through the shop's own connector. For each: name, address, kind, its mode, and for WordPress the kinds of content it has and the fields content_save takes for each. Use the content_ tools on a WordPress site, and whizzy_tools and whizzy_call on a WhizzyCommerce shop. A site on one of the user's servers is not listed here: for that use list_sites, wp and db_query.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered. The description adds genuinely new context: what each entry contains (name, address, kind, mode, content kinds, content_save fields) and the cross-tool routing. It stops short of noting pagination or auth prereqs, which is a minor gap given annotations carry the rest.

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?

Three tight sentences, front-loaded with the defining scope before the routing and exclusion details. The middle sentence listing returned fields is dense but earns its place since no output schema exists.

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 must describe the return shape, and it does (name, address, kind, mode, WordPress content kinds and content_save fields). Combined with the explicit sibling routing, an agent has everything needed to call it 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?

Zero parameters, so there is nothing for the description to disambiguate; baseline is 4. It usefully describes the shape of each returned record even though that goes beyond strict parameter semantics.

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?

States a specific resource and scope: sites the user connected without a server, split into WordPress-via-REST and WhizzyCommerce-via-connector. It explicitly excludes server-hosted sites and names the sibling that covers them, so an agent can distinguish it from list_sites without opening anything.

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 routing in both directions: use content_ tools on a WordPress site, whizzy_tools and whizzy_call on a WhizzyCommerce shop, and use list_sites/wp/db_query for server-hosted sites. The when-not condition is stated, not inferred.

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

content_getRead one item of a connected siteA
Read-onlyIdempotent
Inspect

Read one item of a connected site in full, as its editor would see it: title, content (the stored source), status, address and what else it has. WordPress: excerpt, categories, tags, featured image, and the SEO title and description when the site's SEO plugin publishes them. Shopify: a product's description, vendor, type, tags, SEO title and description and its images with their alt texts; a page's or blog post's text and SEO fields.

NameRequiredDescriptionDefault
idYes
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
typeNoDefault post.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds real value by clarifying that content is 'the stored source' (raw, editor-view) and listing platform-specific return fields, which goes beyond what the annotations provide.

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

Conciseness4/5

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

Core purpose is front-loaded in the first clause, and the following platform detail is informative rather than filler. The WordPress/Shopify field enumeration is somewhat long but earns its place by telling the agent what to expect.

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?

With no output schema, the description carries the return-value burden and does so thoroughly, listing the fields per platform and clarifying the raw-source nature of content. Minor gaps remain: what 'id' refers to and how ids are obtained, but the tool is otherwise complete.

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 67%; the site parameter is well documented and references connected_sites, but the required 'id' has no description and 'type' is only 'Default post.' The description provides no parameter-level guidance to compensate, so baseline 3 applies.

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?

States a specific verb ('read') and resource ('one item of a connected site'), and immediately scopes it against the sibling list-style tool by emphasizing a single item read 'in full'. It enumerates the returned fields per platform, so an agent knows exactly what this retrieves versus content_list.

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 single-item framing implies usage versus content_list, but there is no explicit when-to-use/when-not statement or named alternative. The agent must infer the routing from the resource scope rather than being told.

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

content_listList a connected site's contentA
Read-onlyIdempotent
Inspect

List content of a connected site, newest change first. WordPress: posts, pages, media, categories, tags and the site's own content types (products on a WooCommerce shop, for example). Shopify: products, collections, pages, articles (blog posts), blogs and redirects. connected_sites names them for each site. Each with id, title, status, address and when it changed; media with its alt text. Filter with search (words) and status (publish, draft, pending, future, private). 20 a page, up to 100.

NameRequiredDescriptionDefault
pageNoThe next_page value of the answer before.
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
typeNoWordPress: post (default), page, media, category, tag, or another type the site has. Shopify: product (default), collection, page, article, blog, redirect.
searchNo
statusNodraft, publish (or active for products), and on WordPress pending, future, private.
per_pageNo
media_typeNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-structured behavior: ordering ('newest change first') and pagination limits ('20 a page, up to 100'), which the annotations do not convey. Returned fields are also enumerated, though pagination cursor mechanics less so.

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?

Front-loaded with the core action, then platform coverage, returned fields, filters and pagination in a tight sequence. It is dense with almost no filler, though the WordPress/Shopify type enumeration is somewhat list-heavy and could be compressed.

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?

With no output schema, the description usefully enumerates the returned fields (id, title, status, address, change time, alt text) and covers filters and paging, which is most of what an agent needs. The gap is that media_type's role and the meaning of the page cursor are left to the 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 description coverage is 57%, so baseline is 3. The description compensates somewhat by defining search as words, listing status values, and giving the per_page default/max ('20 a page, up to 100'), but it partially duplicates the schema's type and status text and never explains media_type (image/video/audio/application), leaving one enum-gated parameter undocumented in both places.

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?

States a specific verb ('List') and resource ('content of a connected site') and immediately scopes it by platform (WordPress vs Shopify content types), which cleanly separates it from siblings like content_get, content_save, content_upload and content_trash. An agent can identify this as the enumeration tool without opening the schema.

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?

It gives implied usage through filters ('Filter with search (words) and status') and default types per platform, but never names an alternative or states when not to use this tool (e.g., versus content_get for a single item). The agent must infer the listing-vs-fetch boundary from sibling names alone.

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

content_saveCreate or change content on a connected siteA
Destructive
Inspect

Create or change content on a connected site. Without id it creates (as a draft unless status says otherwise); with id it changes only the fields you pass. Fields depend on the kind of site and of item: connected_sites lists them (title, content, slug and status everywhere; on Shopify also seo_title and seo_description, and for products vendor, tags and add_image; prices, stock and variants are never touched). What the site's mode allows: drafts only (the default) lets you create and edit drafts and nothing visitors see; publish too lets you publish and edit live content. What a change replaced is kept 90 days: content_undo puts it back. Never publish or change live content unless the user asked for exactly that; a draft's preview link is in the answer for them to check.

NameRequiredDescriptionDefault
idNoThe item to change. Leave out to create.
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
typeNoDefault post.
fieldsYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructive/not-idempotent/openWorld, but the description adds material context they don't carry: draft-by-default behavior, the site-mode gating rules, that prices/stock/variants are never touched, 90-day change retention, the content_undo recovery path, and where the preview link appears. This is well beyond the annotation surface.

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?

Front-loaded with purpose and the create/update switch, and every subsequent sentence carries actionable content (modes, field sources, undo, warning). It is dense and long, but not padded – a slightly tighter grouping of the field-variation detail would read better.

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 a 4-param tool with a nested `fields` object, destructive semantics, and no output schema, the description covers everything an agent needs: how to create vs update, which fields are legal, mode gating, recovery, and that a preview link is returned. Nothing material is missing.

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 75%, and the description meaningfully enriches it: id absence means create, fields vary by site/item kind, and it names the concrete fields (title, content, slug, status; Shopify extras). It does not discuss the `type` parameter (schema only says 'Default post'), leaving one facet thinner than the rest.

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?

States a specific verb pair (create/change) and resource (content on a connected site), and immediately disambiguates the two modes: 'Without id it creates... with id it changes only the fields you pass.' An agent can tell this apart from content_get, content_list, content_trash, and content_undo without opening their schemas.

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?

Gives explicit when-to-use branching (id present vs absent), points to connected_sites for the field list and to content_undo for reverting, and states a clear when-not: 'Never publish or change live content unless the user asked for exactly that.' The mode constraint ('drafts only... publish too') tells the agent what the environment permits.

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

content_trashMove content to the site's trashA
Destructive
Inspect

Move a post, page or other item of a WordPress site to its trash (WordPress keeps it 30 days; content_undo brings it back), or remove a URL redirect of a Shopify store (content_undo makes it again). In drafts-only mode this works for drafts; removing something live needs the publish-too mode. Nothing else is deleted through a connection: Shopify has no trash, so take a product or page off the store by setting its status to draft or archived.

NameRequiredDescriptionDefault
idYes
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
typeNoDefault post.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and non-idempotency, but the description adds behavior they cannot express: the 30-day retention window, the recovery path via content_undo, the drafts-only-mode restriction, and the scope boundary ('Nothing else is deleted through a connection'). That is meaningful consequence disclosure for an irreversible-feeling action.

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?

Three dense sentences, front-loaded with the primary WordPress action before the Shopify variant, and no filler. It is on the long side for a single paragraph but essentially every clause carries operational information.

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?

With no output schema, the description still conveys what happens after the call (recoverable via content_undo for 30 days) and where the tool does not apply. The only real gap is the required id parameter's semantics, which is left entirely to the caller to infer.

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 67% and already documents site (name or address) and type (default post). The description adds context about which item classes are valid (post, page, URL redirect) but never explains the required id parameter — its format, whether it is a numeric ID or a URL for redirects. Baseline 3 is appropriate since the schema does most of the work.

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?

States a specific verb and resource ('Move a post, page or other item ... to its trash') and extends it precisely to a second case ('remove a URL redirect of a Shopify store'). It distinguishes itself from content_undo by naming the inverse relationship, so an agent can pick between the two without opening either schema.

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?

Gives explicit mode conditions ('In drafts-only mode this works for drafts; removing something live needs the publish-too mode') and an explicit when-not ('Shopify has no trash, so take a product or page off the store by setting its status to draft or archived'). Alternatives and exclusions are both covered.

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

content_undoUndo a content changeA
Destructive
Inspect

Undo a change made through content_save, content_upload or content_trash on a connected site: an edit gets its old values back, a created item goes to the trash, a trashed one comes back. Without change_id it lists the changes of the last 90 days with their ids.

NameRequiredDescriptionDefault
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
change_idNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (destructiveHint=true, readOnlyHint=false, idempotentHint=false). The description adds real behavioral detail beyond that: the per-case semantics of what undo actually does, plus the 90-day window and the list-instead-of-revert fallback when change_id is absent. It omits auth/permission requirements, keeping it at a 4.

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, front-loaded with the undo action and its case-by-case effects, followed by the no-argument fallback. No redundant restatement of the title or annotations.

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 2-param mutation tool with no output schema and annotations already carrying the safety flags, the description covers the key unknowns: what gets changed in each scenario and the listing fallback. Lacking output/permission detail, but nothing critical for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 50% (site documented, change_id bare). The description compensates for the undocumented change_id by explaining that omitting it triggers a listing mode and that ids come from that listing, which the schema does not convey. It does not specify the id's origin format beyond 'ids', so it is short of a 5.

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?

States a specific verb (undo) and the exact resource scope by naming the sibling operations it reverts (content_save, content_upload, content_trash). It then enumerates the three concrete outcomes (edit reverts, create trashes, trash restores), so an agent immediately knows what this does and how it differs from generic undo siblings.

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?

Explains the primary condition (undo a prior content_* operation) and a second mode: omitting change_id lists changes from the last 90 days with their ids. This effectively documents a discovery workflow. It stops short of explicitly routing the agent away from other undo tools (cf_undo, redirects_undo, seo_fields_undo), but the operation-scoped wording does most of that work.

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

content_uploadUpload an image to a connected siteAInspect

Add images to a connected site's media library (WordPress) or files (Shopify): images from this conversation (generated here or attached by the user) as images, or one image from a public address as url; a client that cannot pass files may send one small image as data_base64. jpeg, png, gif, webp or avif, up to 15 MB each, up to 10 a call, with alt text and title. On WordPress the answer has each media id to use as featured_media or inside content; on Shopify put an image on a product with content_save add_image (its file address), on a blog post with image_url. Allowed in drafts-only mode: an image in the library shows nowhere until something uses it.

NameRequiredDescriptionDefault
urlNoPublic address of one image.
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
titleNo
imagesNoImages from this conversation, as files.
alt_textNoAlt text for every image of the call, unless alt_texts gives one each.
filenameNoA name for the url or base64 image, like lavender-candle.png.
alt_textsNoOne alt text per image, in the order of images.
data_base64NoOne image's bytes in base64, only when files cannot be passed.

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations (which only say non-read-only, open-world, non-idempotent, non-destructive) the description adds hard limits — accepted formats jpeg/png/gif/webp/avif, 15 MB each, up to 10 per call — the WordPress return shape (media ids for featured_media or inline content), and the drafts-only caveat that an unused image is invisible. It does not cover permission/auth requirements or failure behavior, so it is strong but not exhaustive.

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 purpose and the input-mode choice are front-loaded in the first clause, and every later clause carries operational information (formats, limits, platform-specific follow-up, drafts mode). It is dense — semicolon-chained — and could be broken into a short bullet list for scanability, but nothing is filler.

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 an 8-parameter mutation tool with no output schema, it supplies the missing pieces: accepted formats and size/count limits, which parameter feeds which kind of image, what the response yields on WordPress, and how the result is consumed downstream. Only failure modes and duplicate handling are unaddressed.

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 already 88%, so the baseline is 3; the description nonetheless clarifies intent the schema leaves open — that `images` and `url` are mutually exclusive in spirit (one image via url), and that `data_base64` is a constrained fallback for one small image. It also implies alt_text/alt_texts/title are applied at upload time, matching the schema's per-call alt-text rule.

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 gives a specific verb (add/upload) and resource (images to a site's media library / files) and names the two platforms (WordPress, Shopify) whose behavior differs. It is clearly distinguishable from siblings like content_save (which attaches media) or convert_images (which transforms it).

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?

It explicitly routes between the three input modes (conversation `images`, public `url`, `data_base64` as a fallback for clients that cannot pass files) and states what to do next on each platform (content_save add_image / image_url). It also notes drafts-only mode is permitted. It stops short of naming when NOT to use it (e.g. format conversion via convert_images).

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

convert_imagesMake WebP or AVIF copies of a site's imagesAInspect

Make WebP (or AVIF) copies of the JPEG and PNG images in a site's upload folders, next to each original as .webp, with the encoder the server has (cwebp, avifenc, ImageMagick or vips; the answer names it, or says what to install). Runs as the site's owner in the background: follow with job_output, the last line is the summary (converted, already had a copy, no gain, MB before and after). Originals are never changed, and a copy that is not smaller is removed. dry_run true only counts. Serving the copies is separate: nginx needs a map on the Accept header and try_files $uri$webp_suffix (add_header Vary Accept); Apache a RewriteCond on HTTP_ACCEPT; WordPress and Magento can also serve them through their own image settings. Tell the user that before converting, and run it again later for new uploads (existing copies are skipped).

NameRequiredDescriptionDefault
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
formatNoDefault webp (every browser; AVIF is smaller but slower to make).
serverNoServer name or id. Optional when the account has one server.
dry_runNo
foldersNoFolders relative to the site root; default: the site's upload folders (wp-content/uploads, pub/media, ...).
qualityNo1 to 100; default 82 for WebP, 55 for AVIF.
max_filesNoStop after this many conversions (default and most 20000).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only give the broad profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true); the description adds the details that matter: runs as the site's owner in the background, originals are never changed, non-smaller copies are removed, already-converted files are skipped, and the job summary's contents. It also discloses environment dependence (encoder availability, 'or says what to install').

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

Conciseness3/5

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

Front-loaded with the action, but the remainder is a single dense block with heavy parenthetical nesting that is hard to scan. The serving-configuration paragraph (nginx map, Apache RewriteCond, platform settings) is legitimately useful guidance but would read far better as separated clauses or bullets.

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, and the description compensates fully by telling the agent how to retrieve results (follow with job_output) and what the final line contains (converted, already had a copy, no gain, MB before/after). Background execution, idempotent re-runs and the serving caveat are all covered.

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 high (86%) and already documents site, format, folders, quality and max_files, so the baseline is 3. The description adds real semantics on top: 'dry_run true only counts' (a mode the schema never explains) and the WebP-vs-AVIF tradeoff reasoning, plus the default folder set in prose.

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?

States a precise verb and resource ('Make WebP (or AVIF) copies of the JPEG and PNG images in a site's upload folders'), names the output artifact convention (<file>.webp) and the encoders used. It is unmistakable against siblings like job_output, which it positions itself as a precursor to.

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?

Gives explicit when-to-run ('Tell the user that before converting ... and run it again later for new uploads (existing copies are skipped)'), when-to-use-adjacent alternatives (nginx map/try_files, Apache RewriteCond, WordPress/Magento image settings for serving), and the dry_run preview mode. Nothing about invocation timing is left to inference.

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

core_web_vitalsCore Web VitalsA
Read-onlyIdempotent
Inspect

Real-user Core Web Vitals from Google's Chrome UX Report (the field data Google uses for ranking), for one page (url) or a whole site (origin): LCP, INP and CLS with their 75th percentile and the good / needs improvement / poor split, plus FCP and TTFB, and when LCP is slow its parts (server response, resource load delay and time, render delay). history true adds the weekly trend over about the last 6 months; lab true adds a Lighthouse test with the causes. Pages with too little Chrome traffic have no data; the site's origin is tried then.

NameRequiredDescriptionDefault
labNoAlso run a Lighthouse lab test (about 30 s): score, LCP breakdown and LCP element, and the issues that cost the most time (render-blocking files, image delivery, caching, third parties).
urlNoA page, like https://www.example.com/product.html
originNoA whole site, like https://www.example.com
historyNo
form_factorNoDefault PHONE (Google ranks on mobile).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive, open-world behavior, so the bar is lower; the description goes well beyond by disclosing the no-data limitation for low-traffic pages, the origin fallback, the ~30 s latency of the lab test, and the ~6-month span of the history trend. These are exactly the operational traits an agent needs to set expectations and avoid misinterpreting empty results.

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?

Content is front-loaded with what the tool returns, and most clauses earn their place (data source, metrics, split thresholds, fallback). It is a dense pair of run-on sentences, so it is slightly heavier than ideal, but very little 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?

With no output schema, the description carries the full burden of explaining return values, and it does: metrics, percentile, good/needs-improvement/poor buckets, LCP breakdown components, and the empty-result case. Combined with the annotation-covered safety profile and 80% schema coverage, an agent has everything needed to call and interpret it 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?

With 80% schema coverage the baseline is 3, but the description adds meaning the schema lacks—notably that history=true yields a weekly trend over ~6 months (the schema gives no description for history at all) and how url vs origin select page vs site scope. It reinforces rather than merely repeats the lab and form_factor semantics.

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 names the specific data source (Chrome UX Report / CrUX field data), the resource (a page via url or a site via origin), and the exact metrics returned (LCP, INP, CLS with 75th percentile and good/needs-improvement/poor splits, plus FCP, TTFB, and LCP sub-parts). An agent can distinguish this from every sibling (page_audit, ga4_*, gsc_*) without opening the schema.

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?

It clearly explains the two addressing modes (url for one page, origin for a whole site), what history=true and lab=true add, and the fallback rule when a page has too little Chrome traffic (origin is tried). It stops short of naming alternatives among siblings or stating when-not-to-use it, so 4 rather than 5.

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

crawl_reportWhat crawlers fetchedA
Read-onlyIdempotent
Inspect

What search engine, AI and SEO crawlers actually fetched in the last hours (default 24, up to 168), from the web server's access logs: per crawler the hits, status codes (404, 5xx, redirects), what kind of pages (filtered layered-navigation URLs, search, ordinary pages, static files, API), URLs with a query string, the most fetched, 404 and 5xx paths, Googlebot and Bingbot hits per hour, and for Googlebot and Bingbot how many hits really come from them (reverse DNS) and which addresses fake it. Use it for technical SEO (crawl budget, errors served to Google) next to Search Console data. Pass log for one site's access log when the server has several.

NameRequiredDescriptionDefault
logNoPath of an access log (combined format); default: all nginx/Apache access logs
hoursNo1 to 168, default 24
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description goes further by disclosing the analyzable window (default 24h, up to 168), that it reads access logs, and that Googlebot/Bingbot are verified via reverse DNS including identification of spoofed addresses. It does not discuss rate limits or auth, but adds substantial context 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.

Conciseness3/5

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

The core purpose is front-loaded, and every clause is informative, but it is delivered as one long run-on sentence with an embedded colon-list that is hard to parse. Appropriately sized for the tool's richness but poorly structured for a scanning agent.

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 return-value burden and does so thoroughly, enumerating hits, status codes, page categories, query-string URLs, top/404/5xx paths, per-hour Googlebot/Bingbot hits, and spoofing detection. Combined with the three documented parameters and safety annotations, an agent has enough to invoke it correctly.

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 each parameter is already documented in the input schema, and the description largely restates those values (24/168 hours, combined-format log). It adds only a mild clarification of the log/server relationship when multiple servers exist, so the 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?

States a specific verb+resource: reporting what search/AI/SEO crawlers fetched from the web server's access logs, with an explicit enumeration of what is measured. It distinguishes itself from the many gsc_* and bing_* siblings by framing itself as a log-side technical SEO tool used 'next to Search Console data'.

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?

Gives a clear use context ('technical SEO (crawl budget, errors served to Google)') and a routing instruction for the multi-server case ('Pass log for one site's access log when the server has several'). It implies complementarity with Search Console tools but does not name a specific alternative or an explicit when-not-to-use, so it stops short of a 5.

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

db_dumpDump a site's databaseAInspect

Dump a site's database (any kind list_sites shows) to a .sql.gz file on its server, with the site's own credentials (they never reach the chat). Runs in the background: returns job_id and the file path; follow it with job_output. Files go to /var/lib/askyourstack/dumps; to move one to another server, transfer that folder.

NameRequiredDescriptionDefault
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.1/5.0
Behavior4/5

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

Adds real context beyond the annotations: async execution, the job_id + file path return, the fixed output directory /var/lib/askyourstack/dumps, credential handling ('they never reach the chat'), and a transfer hint. It is consistent with the declared non-destructive, non-idempotent, open-world profile, but does not say what happens on a repeat run (the non-idempotent case) or how failures surface.

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?

Front-loaded with the action and result, and every sentence carries information (return values, storage path, follow-up tool). It is slightly run-on with several clauses chained by semicolons, but nothing is wasted.

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?

With no output schema, the description carries the return-shape burden and does so (job_id and file path). It covers destination and transfer, but leaves failure modes and retrieval of the finished file unaddressed for an async mutation tool.

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 both parameters are already documented in the schema, including their optionality and format examples. The description's only marginal addition is implying the site argument ties back to list_sites; 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?

States a specific verb (dump) and resource (a site's database), plus the output artifact (.sql.gz file on its server), which distinguishes it cleanly from siblings like db_query, db_restore, and list_dumps. The parenthetical '(any kind list_sites shows)' further scopes what databases are eligible.

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?

Gives clear operational context: it runs in the background and the agent should 'follow it with job_output', which is actionable workflow guidance. It does not explicitly contrast with db_query/db_restore or state when not to use it, so it stops short of full when/when-not routing.

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

db_queryQuery a site's databaseA
Destructive
Inspect

Run one SQL statement on a site's database, connecting with the site's own credentials (you never need the password). SELECT, SHOW, DESCRIBE and EXPLAIN run straight away in a read-only transaction; anything that changes data needs the user's approval. Remember the table prefix from list_sites.

NameRequiredDescriptionDefault
sqlYes
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.
max_rowsNoDefault 200, max 1000.
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only give coarse hints (destructiveHint=true, readOnlyHint=false, openWorldHint=true); the description usefully refines this by splitting read-only statements from mutating ones, disclosing that the site's own credentials are used with no password needed, and describing the approval flow. It stops short of mentioning row-limit or result-format behavior.

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?

Three tight sentences with the core action front-loaded, followed by the read/write execution rule and the prefix reminder. No filler.

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 6-parameter, no-output-schema tool with 83% schema coverage, the description covers the critical operational details: credential handling, read vs write execution, and approval semantics. Minor gap is the absence of any note on result shape or row limits.

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 already 83%, so nearly every parameter is self-documenting, including 'why' and 'approval_id'. The description adds only the reminder about the table prefix, which is marginal value on top of 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?

States a specific verb and resource ('Run one SQL statement on a site's database') and bounds the scope to a single statement. It is clearly distinguishable from siblings like db_dump, db_restore, and list_sites.

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?

Explains when the call runs immediately (SELECT/SHOW/DESCRIBE/EXPLAIN in a read-only transaction) versus when user approval is required (anything that changes data), and points to list_sites for the table prefix. It does not explicitly contrast with db_dump/db_restore, so it falls short of a full when/when-not routing statement.

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

db_restoreLoad a dump into a site's databaseA
Destructive
Inspect

Load a .sql or .sql.gz dump into a site's database, with the site's own credentials: the undo for a bad change, or a restore from a backup. Pass file as list_dumps shows it, or any .sql / .sql.gz file on the server (a backup the user keeps). The database as it is now is dumped first (before-restore-...), so the restore itself can be undone with the same tool. Tables in the file replace the tables of the same name; tables the file does not mention stay. A dump from another database or another site version can break the site: check what the file holds first (read_file the first lines, or list_dumps). Runs in the background: follow with job_output. Say beforehand what will be lost (everything in those tables since the dump). For a few rows or one table, load the dump into a scratch database instead (playbook restore).

NameRequiredDescriptionDefault
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
fileYesThe dump to load: a path from list_dumps, or an absolute path to a .sql or .sql.gz file on the server
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the destructive/openWorld annotations: it discloses that the current DB is dumped first (before-restore-...) so the restore is self-undoable, that same-name tables are replaced while unmentioned tables persist, that a foreign/newer dump can break the site, and that it runs in the background (follow with job_output). This is unusually rich behavioral context.

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?

Front-loaded with the core action, then scoped to intent, mechanics, and risks. It is a dense single paragraph that runs long, but nearly every sentence carries operational value; only minor tightening is possible.

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, non-idempotent restore with no output schema, the description covers destruction scope, reversibility, background execution/follow-up, and file validation. An agent has everything needed to call it safely.

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% (baseline 3), and the description still adds value by clarifying what 'file' accepts — a path as list_dumps shows it, or any .sql/.sql.gz on the server — and cross-references list_dumps/read_file for validating the file. The remaining params are fully covered by 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?

States a specific verb and resource ('Load a .sql or .sql.gz dump into a site's database') plus its two primary intents (undoing a bad change, restoring from backup). An agent can distinguish it from db_dump (the inverse) and db_query without opening schemas.

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 says when to use it, when not to ('For a few rows or one table, load the dump into a scratch database instead (playbook restore)'), and names the alternatives (list_dumps, read_file). Nothing is left to inference.

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

disavow_fileWrite a disavow file for GoogleA
Read-onlyIdempotent
Inspect

Write the disavow file for Google's disavow links tool (https://search.google.com/search-console/disavow-links). Google has no API to upload it, so you give the user the file and they upload it themselves. Disavowing is rarely needed and can lower rankings when good links are thrown away: use it after a manual action for unnatural links in Search Console, or for links the site clearly paid for or built in a scheme; Google already ignores ordinary spam links, so a high spam score alone is not a reason. Pass the domains (whole sites, the usual choice) and/or single URLs to disavow, each with a short reason, from the user's backlink data (Ahrefs, Semrush, SE Ranking, bing_backlinks, an attached export). Each upload REPLACES the list Google has, so if the user already uploaded one, ask them to download it from the tool and pass it as current: this tool keeps its lines and adds the new ones. remove takes lines back out (links the user no longer wants disavowed). Answers with the whole file, what was added, kept and dropped, and how to upload it. It works only for a URL-prefix property in Search Console (https://www.example.com/), not a Domain property.

NameRequiredDescriptionDefault
siteYesThe site the links point to, like https://www.example.com (its own domain is never disavowed)
urlsNoSingle linking pages to disavow, full addresses
reasonNoReason for the entries that have none of their own, like "paid links, manual action 2026-10"
removeNoDomains or URLs to take out of current
sourceNoWhere the list came from, written at the top of the new part, like "Ahrefs export 2026-10-09"
currentNoThe file Google has now, as text (Search Console's disavow tool downloads it), so its lines are kept
domainsNoLinking sites to disavow whole, as a name (spam.example) or an address on it; with a reason each when you can

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that each upload REPLACES Google's list, that the tool merges by keeping the 'current' lines, what remove does, that Google has no upload API so the user must upload manually, and that it only works for URL-prefix properties (not Domain properties). It also states the response contents (whole file, added/kept/dropped, upload instructions). No contradiction with readOnlyHint=true, since the server itself performs no remote mutation.

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?

One dense paragraph with zero filler sentences and a front-loaded purpose and link, but it is long and would scan better with the when-to-use and merge/replace behavior split into sentences or bullets. Every sentence earns its place, so it stops short of a structure problem.

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 7-parameter tool with no output schema, it covers everything an agent needs: the manual-upload workflow, replace-vs-merge semantics, the property-type restriction, and the fact that the response includes the full file plus upload instructions. Nothing material is left to inference.

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, but the description adds real meaning: 'domains (whole sites, the usual choice)' flags the default choice, 'single URLs to disavow, full addresses' disambiguates urls, 'current' is explained as the file Google has now whose lines are kept, and remove is described as taking lines back out. It adds nuance beyond the schema, though it does not restate every field.

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?

States a specific verb+resource ('Write the disavow file for Google's disavow links tool'), names the exact external artifact it targets, and no sibling tool does anything similar, so it is trivially distinguishable. The follow-on sentence clarifies it produces a file the user uploads manually, removing any ambiguity about what 'write' means here.

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 gives when to use (after a manual action for unnatural links, or links clearly paid for/built in a scheme) and when not to use ('Google already ignores ordinary spam links, so a high spam score alone is not a reason'), plus the alternative behavior Google applies on its own. This is exactly the when/when-not guidance the dimension asks for.

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

domain_keywordsWhat a domain ranks forA
Read-onlyIdempotent
Inspect

What a domain ranks for in Google (the user's site or a competitor): up to 100 keywords with position, monthly searches, estimated visits and the ranking page, ordered by estimated traffic; and, with competitors true, the domains that share the most keywords with it. Ask for a competitor's domain to find keywords the user's site is missing. One lookup from the plan's allowance.

NameRequiredDescriptionDefault
limitNoDefault 50, at most 100.
domainYes
languageNoTwo-letter language code, default en.
locationNoA country name, like United States (default), Germany, Portugal, United Kingdom.
competitorsNoAlso list competing domains.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so safety is covered. The description adds value beyond that: result ordering ('ordered by estimated traffic'), the 100-keyword cap, and crucially a cost signal ('One lookup from the plan's allowance') that no annotation conveys.

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?

It is a single dense but front-loaded sentence with the core output described first and the competitor/cost caveats trailing. Every clause carries information, though the semicolon-chained structure is slightly heavy.

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?

With no output schema, the description does the work of explaining return values (keywords plus position, searches, visits, ranking page) and the competitors variant. It is nearly complete for calling the tool, missing only edge details like pagination or default behavior when competitor keywords are absent.

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 high (80%), so the baseline is 3, but the description still adds meaning: it clarifies that competitors=true returns domains sharing the most keywords, and that domain may be the user's site or a competitor. It reinforces the limit ceiling ('up to 100 keywords') beyond the schema's wording.

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

Purpose4/5

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

The description states a specific verb and resource ('What a domain ranks for in Google') and enumerates the returned fields (position, monthly searches, estimated visits, ranking page). This clearly separates it from keyword-centric siblings like keyword_volume and keyword_ideas, though it doesn't name those siblings outright.

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?

It gives a concrete when-to-use: 'Ask for a competitor's domain to find keywords the user's site is missing,' and explains the competitors=true variant. No explicit exclusions or named alternatives, so it stops short of a 5.

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

forget_noteDelete a noteA
Destructive
Inspect

Delete a saved note that is wrong or no longer true (its id is in overview).

NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds the id-source hint but says nothing about permanence, reversibility, or whether the note can be recreated.

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?

One front-loaded sentence with the mutation verb first and the parenthetical id source tucked at the end. Nothing is wasted.

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 one-parameter, no-output-schema tool whose annotations already flag destructiveness, the description is nearly sufficient. The remaining gap is that it never signals whether the deletion is permanent or recoverable.

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 0% for the single 'id' parameter, so the description must carry the burden. It does add the useful fact that the id is found in the overview output, but it never clarifies format or validity beyond the schema's integer type.

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

Purpose4/5

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

States a specific verb and resource ('Delete a saved note') and adds the qualifying condition for deletion. It does not name the inverse sibling save_note or any undo path, so differentiation is left implicit.

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?

Gives a usable trigger ('that is wrong or no longer true') and tells the agent where the id comes from ('in overview'), which is real routing help. However, there is no explicit when-not guidance and no mention of save_note as the counterpart operation.

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

ga4_ai_trafficVisits from AI assistantsA
Read-onlyIdempotent
Inspect

Visits referred by AI assistants (ChatGPT, Perplexity, Gemini, Claude, Copilot, DeepSeek, Grok, Meta AI and others): sessions, users, engagement and key events per assistant, the pages they land on, and the daily trend, against the period before. Some AI visits arrive without a referrer and count as Direct; say so.

NameRequiredDescriptionDefault
end_dateNoYYYY-MM-DD. Default: yesterday.
propertyNoGA4 property: its id (properties/123456 or 123456) or its name. Optional when one property is picked.
start_dateNoYYYY-MM-DD. Default: 28 days before end_date.
compare_end_dateNo
compare_start_dateNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, open-world behavior, and the description adds genuinely new context: the report compares against the prior period, and unreferred AI visits are bucketed as Direct so the agent can caveat the numbers rather than misreport them. It stops short of stating defaults (already in the schema) or limits/pagination, but the caveat is real added value.

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?

Purpose is front-loaded in the first clause, and the single trailing sentence carries a non-obvious caveat rather than filler. The assistant-name list is longer than strictly necessary but it usefully bounds what counts as an AI assistant.

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?

With no output schema, the description must describe the return and it does so thoroughly (metrics, dimension breakdown, landing pages, trend, comparison period). The remaining gap is the two undocumented comparison-date parameters, which is a minor omission for a reporting tool with zero required arguments.

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 60%, with start_date, end_date and property documented in-schema and compare_start_date/compare_end_date left blank. The phrase 'against the period before' gestures at the comparison parameters but does not define their semantics or defaults, so the description only marginally compensates for the uncovered pair. Baseline 3 is appropriate.

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

Purpose4/5

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

The description names a specific resource (traffic referred by AI assistants) and enumerates the concrete outputs: sessions, users, engagement, key events per assistant, landing pages, and daily trend versus a prior period. It is clearly distinct from ga4_overview or ga4_report by topic, but it never names those siblings so the agent must infer the boundary itself.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g. property selection is only hinted at via the schema), and no reference to the alternative GA4 report tools that cover overlapping traffic data. The description is purely a statement of what is returned, leaving routing to inference.

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

ga4_landing_pagesAnalytics landing pagesA
Read-onlyIdempotent
Inspect

Landing pages with sessions, engaged sessions, engagement rate, bounce rate, average session time, key events (conversions) and revenue; optionally only one channel (organic search by default) and compared with an earlier period. Pair with gsc_search_analytics by page to see where rankings, clicks and visits part ways.

NameRequiredDescriptionDefault
limitNoDefault 50, max 500.
channelNoA default channel group, like "Organic Search" (default), "Paid Search", "Direct", or "all".
end_dateNoYYYY-MM-DD. Default: yesterday.
propertyNoGA4 property: its id (properties/123456 or 123456) or its name. Optional when one property is picked.
start_dateNoYYYY-MM-DD. Default: 28 days before end_date.
compare_end_dateNo
compare_start_dateNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a safe read-only, idempotent, open-world operation, so the safety profile needs no restating. The description adds the default channel behavior and the period-comparison behavior, which is useful, but does not cover pagination, row limits behavior, or error/empty-result handling.

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?

Front-loaded with the resource and output metrics, then scope defaults, then the sibling pairing. The metric enumeration is long but each item is genuinely informing the agent what it gets back, so nothing is wasted.

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?

No output schema exists, and the description compensates by naming every returned metric, which is the key completeness need here. Defaults and the comparison period are surfaced. Minor gap: compare_start_date/compare_end_date have no schema descriptions and the description only gestures at 'an earlier period'.

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 71%, and the schema itself documents limit, channel defaults, date formats, and property. The description's contribution is confirming the organic-search default and the comparison concept, but it adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a concrete resource (landing pages) and enumerates the metrics returned (sessions, engagement rate, bounce rate, key events, revenue), which distinguishes it from ga4_overview and ga4_report. It is clear what the tool produces, though it never explicitly contrasts itself with those siblings.

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?

It notes the optional single-channel scope (organic search by default) and the earlier-period comparison, which implies when it is useful. However, it offers no explicit when-to-use or when-not-to-use versus ga4_report/overview. The 'pair with gsc_search_analytics' line is a cross-tool relationship, not alternative-selection guidance.

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

ga4_overviewAnalytics overviewA
Read-onlyIdempotent
Inspect

Traffic at a glance for a GA4 property: sessions, users, new users, engaged sessions, engagement rate, average session time, views, key events (conversions) and revenue against the period before, the daily trend, sessions by channel (Organic Search, Direct, Paid, Referral, Social, Email...), organic search's share and its own trend, the top landing pages and AI-assistant traffic in total. Start here when the user asks how the site is doing.

NameRequiredDescriptionDefault
daysNoLength of the period ending yesterday. Default 28.
propertyNoGA4 property: its id (properties/123456 or 123456) or its name. Optional when one property is picked.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds useful behavior beyond that — every metric is compared "against the period before," and it discloses the channel groupings and the inclusion of AI-assistant traffic — but says nothing about auth/property prerequisites or limits.

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?

Front-loaded with the core purpose and the guiding "start here" instruction at the end, so the important routing cue is not buried. The single sentence is long and dense with an enumeration of metrics, which costs a little readability but remains purposeful.

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 convey the return surface — and it does thoroughly, listing the summary metrics, the comparison baseline, the daily trend, the channel breakdown, organic share, landing pages, and AI traffic. An agent knows what it will get and when to call it.

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% for both parameters (days with default 28, property id/name), so the schema carries the semantics. The description only loosely reinforces the period concept via "against the period before" and adds no syntax or format detail beyond the schema.

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

Purpose5/5

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

States a concrete resource (GA4 property traffic overview) and enumerates exactly what is returned: sessions, users, engagement rate, daily trend, channel breakdown, landing pages, AI traffic. This distinguishes it from siblings like ga4_report, ga4_landing_pages, and ga4_ai_traffic, which cover narrower slices of the same data.

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?

"Start here when the user asks how the site is doing" gives a clear entry-point condition for when to reach for this tool first. It does not, however, explicitly name the alternatives for follow-up depth (e.g. ga4_report or ga4_realtime), so the routing guidance is contextual rather than exhaustive.

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

ga4_propertiesAnalytics propertiesA
Read-onlyIdempotent
Inspect

The Google Analytics 4 properties the user picked for AskYourStack, each with a health check: time zone, currency, data retention, key events (conversions) set up, and whether data is still coming in (sessions yesterday and in the last 7 days). Call this first for analytics work.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description goes beyond that by disclosing what the response contains — time zone, currency, retention, conversion setup, and data-freshness signals (sessions yesterday and 7-day) — and by flagging it as the entry point for analytics work.

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 core purpose and the return contents are front-loaded in the first sentence, with the actionable 'call this first' instruction trailing. The enumeration of health-check fields is dense but earns its place given there is no output schema.

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 parameters and no output schema, the description carries the full burden of explaining what comes back, and it does so thoroughly — field list plus data-freshness indicators. Nothing an agent needs in order to invoke this correctly is missing.

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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies.

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

Purpose4/5

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

The description names the specific resource (Google Analytics 4 properties the user selected for AskYourStack) and enumerates what each entry contains, so an agent knows this is a discovery/list tool rather than a report. It is clear and concrete, though it does not explicitly contrast itself with its closest sibling gsc_properties or the other ga4_* tools.

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?

'Call this first for analytics work' gives a clear sequencing cue that tells the agent when to reach for this tool. It stops short of naming alternatives (ga4_overview, ga4_report, ga4_realtime) or stating when NOT to use it, so the routing is implied rather than spelled out.

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

ga4_realtimeAnalytics right nowA
Read-onlyIdempotent
Inspect

Who is on the site right now (last 30 minutes): active users by page or screen, country, device and minutes ago. Use it to check a launch, a campaign or that tracking works after a change.

NameRequiredDescriptionDefault
propertyNoGA4 property: its id (properties/123456 or 123456) or its name. Optional when one property is picked.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior: the exact 30-minute lookback window and the dimensions returned, which the annotations cannot express. Auth requirements and rate limits are not mentioned, but the marginal gap is small.

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 with zero filler: the first front-loads what the tool returns and its time window, the second carries the use cases. Nothing is repeated from the title or schema.

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 single-optional-parameter, read-only tool with no output schema, the description discloses the window and the metric dimensions an agent needs to decide to call it. Property resolution is already handled by the schema, so nothing material is missing.

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% and the single property parameter is fully documented there, including accepted id formats and optionality. The description adds nothing about the parameter, so baseline 3 applies.

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

Purpose4/5

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

States a specific resource and scope: realtime active users in the last 30 minutes, with named breakdowns (page/screen, country, device, minutes ago). The 30-minute window implicitly separates it from ga4_overview and ga4_report, but no sibling is named explicitly, so the differentiation is inferred rather than stated.

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?

"Use it to check a launch, a campaign or that tracking works after a change" gives concrete, actionable when-to-use context rather than vague guidance. It does not say when this is the wrong choice or point to a non-realtime alternative such as ga4_report for historical data.

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

ga4_reportAnalytics reportA
Read-onlyIdempotent
Inspect

Any GA4 report (the Data API's runReport): pick dimensions and metrics, filters, date ranges and an optional comparison period. Examples: dimensions ["newVsReturning"] with metrics ["totalUsers", "sessions", "engagementRate"] for new vs returning; ["searchTerm"] with ["eventCount"] for on-site search terms; ["sessionSourceMedium"]; ["deviceCategory"], ["country"], ["contentGroup"]; ["date"] or ["isoYearIsoWeek"] for trends; ["eventName"] with ["keyEvents"] for conversions; ["itemName"] with ["itemRevenue", "itemsPurchased"] for e-commerce. Common metrics: sessions, totalUsers, newUsers, activeUsers, engagedSessions, engagementRate, bounceRate, averageSessionDuration, screenPageViews, keyEvents, totalRevenue, purchaseRevenue, transactions, eventCount.

NameRequiredDescriptionDefault
limitNoDefault 100, max 1000.
filtersNoDimension filters, all must match. Like {"field": "sessionDefaultChannelGroup", "match": "exact", "value": "Organic Search"} or {"field": "landingPage", "match": "begins_with", "value": "/blog/"}.
metricsYes1 to 10 GA4 metric API names.
end_dateNoYYYY-MM-DD. Default: yesterday.
order_byNoA metric or dimension to sort by, descending. Default: the first metric.
propertyNoGA4 property: its id (properties/123456 or 123456) or its name. Optional when one property is picked.
dimensionsNoUp to 9 GA4 dimension API names.
start_dateNoYYYY-MM-DD. Default: 28 days before end_date.
compare_end_dateNo
compare_start_dateNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds that it maps to the Data API's runReport and mentions an optional comparison period, but says nothing about rate limits, quota, auth/property requirements, or result shape, which is a modest addition over structured data.

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?

Front-loads the core purpose ("Any GA4 report... pick dimensions and metrics") before the examples, and every example carries actionable dimension/metric pairings rather than filler. It is dense and lengthy in a single block, but for a flexible pass-through reporting tool the examples earn their space.

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 10-parameter, flexible tool with no output schema, the description thoroughly covers the input surface (dimensions, metrics, filters, dates, comparison). The main gap is that it never hints at the returned row/column structure, which an agent must infer, but everything needed to invoke it correctly is present.

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 already 80%, so baseline would be 3, but the description adds real value beyond the schema by enumerating common metric names (sessions, totalUsers, engagementRate, keyEvents, transaction...) and example dimension sets, which the schema does not provide. It clarifies the compare_* pair semantically as a comparison period.

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

Purpose4/5

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

States a specific resource and scope: "Any GA4 report (the Data API's runReport)", with a concrete verb-action of picking dimensions, metrics, filters and dates. The many examples make the tool's identity unmistakable, though it never explicitly names the sibling preset reports (ga4_overview, ga4_landing_pages, ga4_realtime) it contrasts with, leaving differentiation implicit.

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?

Rich usage context via worked examples (newVsReturning, searchTerm, sessionSourceMedium, trends, conversions, e-commerce), which effectively shows when to reach for this generic report. It stops short of explicit when-not/alternative guidance, e.g. not telling the agent to prefer ga4_overview for standard dashboards, so 5 is not warranted.

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

get_playbookGet a playbookA
Read-onlyIdempotent
Inspect

Step-by-step guide for a common job, written for you to follow. Available: add-site (A new domain on a server that already runs sites: its own user, folder, PHP pool, web server block, database, SSL and a check that the other sites were not touched.); backups (Scheduled database and file backups with rotation, an optional off-server copy, and a tested restore.); bot-attack (A shop or site is slow or flooded by bots (layered navigation, search, login, account sign-up, API): find what is hitting it and slow it down without blocking customers or search engines.); drupal (Check-up and common jobs for Drupal 9, 10 and 11 with drush: status, security updates, database updates, cache, cron, configuration.); email (Order confirmations, password resets and contact forms that land in spam or never arrive: check how the site sends, the domain's SPF, DKIM and DMARC records, the server's reputation, and move sending to a proper mail service when that is the fix.); failed-services (Services marked failed on a server: tell the ones left behind by sites that were removed (Virtualmin, Plesk and cPanel leave per-site units) from the ones that broke, fix the broken ones, remove the leftovers in one approved plan, and leave the server with no failed units.); ghost (Where Ghost keeps things, ghost-cli as the site's owner, updates and restarts, mail, the database, backups and the common faults.); hardening (Review and tighten an existing server's security without breaking what runs on it.); laravel (Check-up and common jobs for Laravel apps with artisan: environment, deploy steps, migrations, queues and the scheduler as services, logs.); magento-upgrade (Move a Magento or Mage-OS shop to a newer version or patch level: compatibility check of PHP, database, search and modules, a rehearsal on a copy, then the live upgrade in a short maintenance window with a way back.); magento (A full Magento Open Source (or Mage-OS) shop on one server: nginx, PHP-FPM, MariaDB, OpenSearch, Valkey/Redis, cron, SSL, production mode.); malware-cleanup (Contain, investigate and clean a compromised Magento or WordPress site, then close the way in and change every credential.); migrate (Migrate a Magento or WordPress site (or any folder) from one of the user's servers to another, with a short maintenance window and a way back.); other-shops (What is where and the common jobs for three more kinds of site AskYourStack finds: Joomla 4 and 5, OpenCart 3 and 4, and Magento 1 / OpenMage.); performance (Measure a slow shop or site from the server (response times, PHP workers, database, caches, bots, memory, disk), name the real causes with numbers and fix them in order of impact.); prestashop (Check-up and common jobs for PrestaShop 1.7, 8 and 9: cache, debug mode, modules, shop address and SSL, maintenance mode, updates, security.); publish-content (Turn SEO data (Search Console, SE Ranking, a Semrush or other report the user uploads) into a content plan, then write articles, landing pages or category texts and save them as drafts in WordPress or Magento for the user to review.); restore (Bring a site, some files or a database back from a backup or an AskYourStack snapshot, after saving the current state, into a scratch place first when there is any doubt.); seo-dashboard (A site's search performance over the last 90 days as one visual page set in the Inter typeface. Fixes only the basics; what to analyse and show is the AI's judgement.); seo-technical (Technical SEO of a shop or site from the server side (what Googlebot really crawls, errors it gets, robots, sitemaps, redirects, canonicals, speed), combined with Search Console, SE Ranking or the user's exported reports, then fixes on the server.); server-setup (Turn an empty VPS into a sane, updated, secured base before anything is installed on it.); shopware (Check-up and common jobs for Shopware 6: scheduled tasks and the message queue as services, cache, plugins, themes, indexing, updates.); site-checkup (A health and security review of a Magento or WordPress site already in production, with a prioritised list of fixes.); site-down (A shop or site that does not answer, shows an error page or a blank page: find which layer failed (DNS, certificate, web server, PHP, database, disk, memory), bring it back and say why it happened.); staging (A private copy of a live shop or site on the same server or another, with its own database and address, closed to search engines and with emails and payments switched off.); updates (Security updates of the system, WordPress core, plugins and themes, or Magento security patches, with a snapshot first, checks after and the reboot planned with the user.); whizzycommerce (How to work on a WhizzyCommerce shop connected on the Sites & Apps page: what to read first, how changes are proposed and confirmed, what applies at once (colours, fonts), orders, prices, translations, design and own themes, SEO fields and redirects, and what to leave to the merchant.); woocommerce (Check-up and common jobs for WordPress shops: orders, background tasks, WP-Cron, updates with the database step, speed, and what never to cache.); wordpress (WordPress with nginx, PHP-FPM, MariaDB, Redis object cache, wp-cli, system cron and SSL.)

NameRequiredDescriptionDefault
nameYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that the content is a procedure meant for the agent to follow and that some playbooks end in an 'approved plan', hinting at approval workflows, but says nothing about size, structure or that the guide may steer the agent to other tools.

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

Conciseness3/5

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

The purpose is correctly front-loaded in one sentence, but the body is a very large wall of parenthetical mini-essays, only a fraction of which is needed to choose a playbook; much of that detail belongs in the playbook content the agent will fetch next. A single clause per entry would have served selection equally well.

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?

Given a one-parameter catalog lookup with no output schema, the description supplies a full value legend and a minimal statement of what is returned. It would be more complete if it noted the guide's expected shape (ordered steps, expected approvals) so the agent knows how to act on the result.

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 0% and the single `name` property has no schema-level description, so the description must carry the load — and it does, describing the scope of all 29 allowed values in prose. It stops short of 5 because the enum values themselves are already self-describing strings and no format or matching guidance is added.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource: a step-by-step guide for a common job, written for the agent to follow. It is immediately distinguishable from siblings like run, whizzy_tools or list_jobs, though it never names a sibling or explicitly states the boundary between fetching a playbook and executing one.

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 per-entry summaries double as scenario triggers (a site is flooded by bots, a site does not answer, a shop needs updating), so the agent can infer which playbook applies to a given situation. There is no explicit 'use this before X' or exclusion against alternatives, so it falls short of a 5.

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

gh_accountsGitHub connectionsA
Read-onlyIdempotent
Inspect

The GitHub accounts and organisations the user connected (where the AskYourStack app is installed, all or selected repositories) and what the AI may do there. Start here before other gh_ tools. GitHub connects on the Sites & Apps page (Pro and Agency).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare this is a read-only, idempotent, open-world, non-destructive operation. The description adds useful behavioural context about what is returned and the prerequisite connection requirement, though it does not discuss edge cases such as no connected accounts.

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?

Three tightly written sentences with no repetition. The resource description comes first, followed by the routing instruction and setup context, so the most important information is front-loaded.

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 zero-parameter, read-only discovery tool with rich annotations and no output schema, the description provides everything needed: what it returns, why it matters, and when to call it relative to sibling tools.

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, so there is no parameter semantics to explain. The baseline for zero-parameter tools is 4, and the description does not need to compensate further.

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 identifies the resource as the user's connected GitHub accounts and organisations, including repository installation scope and AI permissions. It also distinguishes this tool from all other gh_ tools by marking it as the starting point.

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 explicitly says "Start here before other gh_ tools," giving a clear sequencing rule and implicit alternative set. The setup note about connecting on the Sites & Apps page adds practical context without ambiguity.

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

gh_actionsGitHub Actions runsB
Read-onlyIdempotent
Inspect

The workflows and recent runs of a repository (filter by branch or workflow), or one run (run_id) with its jobs, the failed steps and the end of a failed job's log. Use it when a build or deploy workflow fails.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
limitNo
branchNo
run_idNo
workflowNoFile name like deploy.yml, or id.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful behavioral detail about retrieving jobs, failed steps, and the end of a failed job's log, but it omits permission requirements, pagination behavior, and log truncation specifics. It does not contradict 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.

Conciseness4/5

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

The description is two tight sentences, front-loaded with the retrieval modes and ending with a concrete use case. There is no wasted text, though the opening noun phrase is slightly less actionable than a verb-led phrasing would be.

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?

The description is sufficient to understand what the tool returns, including jobs, failed steps, and log tail, but the overlap with gh_actions_run and the undocumented limit parameter leave meaningful gaps for correct invocation. The annotations cover the safety profile, so those aspects are not missing.

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 only 40%, so the description should compensate more. It does clarify that branch and workflow act as filters and that run_id selects a single run with detailed output, but the limit parameter remains undocumented in both the schema and the description.

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

Purpose4/5

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

The description clearly identifies the resource and two retrieval modes (recent runs with filters vs. a single run via run_id). However, it uses a noun phrase rather than a specific verb and does not differentiate this tool from the sibling gh_actions_run, whose purpose appears to overlap with the single-run mode.

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?

It gives one concrete use case: when a build or deploy workflow fails. But it does not explain when to use the list mode versus run_id mode, nor when gh_actions_run would be the better choice, and it provides no explicit exclusions.

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

gh_actions_cancelCancel a GitHub workflow runA
Destructive
Inspect

Cancel a GitHub Actions run that is queued or in progress, by run_id from gh_actions. A deploy stopped halfway can leave a site half updated.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
run_idYesThe run's id from gh_actions.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false and openWorldHint=true, so safety is covered structurally. The description adds the eligibility constraint (queued/in-progress only) and a consequence warning about half-finished deploys, which is real added value. However, the warning is oblique — it does not say plainly that cancelling mid-deploy leaves the site in an inconsistent state, nor does it mention permissions or whether the cancel can be undone.

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?

Two short sentences, front-loaded with the action and its eligibility constraint, with no filler. The second sentence is a worthwhile warning but is phrased vaguely enough ('can leave a site half updated') that it costs a reread.

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?

With only two required parameters, full schema coverage, and annotations that carry the destructive/non-idempotent profile, the description covers what the agent needs to select and invoke the tool. It stops short of stating the post-cancellation state of the run or that the action is irreversible, which would have made it complete.

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 both parameters (repo with its owner/name example, run_id sourced from gh_actions) are already fully documented in the schema. The description only repeats the provenance of run_id that the schema already states. Baseline 3 applies since the schema carries the load.

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

Purpose4/5

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

States a specific verb and resource ('Cancel a GitHub Actions run') with a state qualifier ('queued or in progress') and points at the source of the identifier ('run_id from gh_actions'). This is enough to distinguish it from list/inspect siblings like gh_actions, but it never contrasts itself with gh_actions_rerun or gh_actions_rerun_failed, which act on the same resource and are the most likely confusion points.

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 a clear precondition for use — the run must be queued or in progress — so the agent knows this is not for completed runs. The closing sentence signals that cancellation carries a cost ('a deploy stopped halfway can leave a site half updated'), which is usage context rather than an alternative-tool routing rule. No explicit when-not or alternative tool is named.

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

gh_actions_dispatchStart a GitHub workflowA
Destructive
Inspect

Start a GitHub Actions workflow that has a workflow_dispatch trigger: workflow is its file name (deploy.yml) or id from gh_actions, ref the branch or tag (default the main branch), inputs the workflow's own inputs. It runs whatever the workflow does, deploys included, so check the workflow first.

NameRequiredDescriptionDefault
refNoBranch or tag to run on. Default the main branch.
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
inputsNoThe workflow's own workflow_dispatch inputs.
workflowYesFile name like deploy.yml, or id, from gh_actions.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false; the description adds the crucial consequence the annotations cannot express — 'It runs whatever the workflow does, deploys included' — plus the trigger prerequisite. It does not cover permissions/auth (relevant given gh_accounts exists) or whether repeated calls create duplicate runs, keeping it at 4.

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?

Dense and front-loaded: the trigger constraint and parameter meanings come in one sentence, with the risk warning placed last where it reads as a final caution. The first sentence is somewhat run-on, but no sentence is filler.

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?

There is no output schema, so the description is the only place an agent could learn what a dispatch returns (run id? URL?) and how to follow up — that information is absent, leaving the agent unable to chain into gh_actions or gh_actions_cancel after firing. Parameter and risk coverage are otherwise adequate for a 4-param tool.

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 largely restates the schema for workflow, ref, and inputs, with only marginal added value in pointing to gh_actions as the source of workflow ids; the nested inputs object gets no structural elaboration.

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?

States a specific verb and resource ('Start a GitHub Actions workflow') and narrows the scope to workflows with a workflow_dispatch trigger, which is exactly what separates this tool from gh_actions, gh_actions_rerun, and gh_actions_cancel. An agent knows what this does and what class of workflow it applies to without opening the schema.

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?

Gives a real precondition (the workflow must have a workflow_dispatch trigger) and a pre-flight instruction ('check the workflow first'), which is actionable guidance for a risky operation. It stops short of naming an alternative tool or stating outright when not to use it, so it lands just below the top band.

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

gh_actions_rerunRe-run a GitHub workflow runA
Destructive
Inspect

Run all the jobs of a finished GitHub Actions run again, by run_id from gh_actions. A workflow that deploys or publishes does that again, so check what the workflow does first.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
run_idYesThe run's id from gh_actions.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds substantive context the annotations cannot: re-running a deploy or publish workflow repeats that side effect, and only finished runs are eligible. That is real consequence-level disclosure, though it doesn't say whether the call blocks until completion.

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, the action and its scope front-loaded, followed by the risk caveat. Nothing is padded and no sentence is redundant.

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?

With two fully documented params, rich annotations and no output schema, the description covers what an agent needs to invoke it. It stops short of saying what happens after the call (async vs blocking, what is returned), which is the one remaining gap.

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% and both parameters are documented in the schema, so the baseline applies. The description's 'by run_id from gh_actions' merely restates the schema's own 'The run's id from gh_actions' and adds no format or constraint detail beyond it.

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

Purpose4/5

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

States a specific verb (run ... again) and resource (all jobs of a finished GitHub Actions run) with the scoping qualifier 'all the jobs'. That implicitly distinguishes it from the sibling gh_actions_rerun_failed, but the sibling is never named, so an agent still has to infer the split.

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?

'by run_id from gh_actions' and 'check what the workflow does first' imply the prerequisite (obtain the run first, understand consequences), but there is no explicit when-to-use vs gh_actions_rerun_failed, gh_actions_dispatch, or gh_actions_cancel. Usage is inferable rather than stated.

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

gh_actions_rerun_failedRe-run the failed jobs of a GitHub workflow runA
Destructive
Inspect

Run only the failed jobs of a GitHub Actions run again, by run_id from gh_actions. A failed deploy job that now succeeds changes what is live.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
run_idYesThe run's id from gh_actions.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is carried structurally. The description earns credit for going beyond that with a concrete consequence: 'A failed deploy job that now succeeds changes what is live' — an agent now understands the real-world blast radius, not just a boolean flag. It stops short of mentioning permissions or whether a new run attempt is created.

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 tight sentences: the operation and its scoping are front-loaded, and the second sentence justifies why the destructive behavior matters. Zero filler.

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?

With only two required, fully documented parameters, no output schema and full annotation coverage, the definition covers what an agent needs to invoke it, plus the live-state consequence. The remaining gap is return behavior — whether a new attempt/run id comes back — which matters for chaining into gh_actions but is unstated.

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% and both parameters (repo, run_id) are already documented in the schema, including the 'from gh_actions' provenance for run_id. The description restates that provenance but adds no format, constraint or edge-case detail beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Run only the failed jobs of a GitHub Actions run again') with a scope qualifier ('only the failed jobs') that implicitly separates it from gh_actions_rerun, which re-runs the whole run. It never names that sibling outright, so the contrast is inferred rather than explicit.

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?

'by run_id from gh_actions' gives a useful prerequisite breadcrumb (fetch the run first via gh_actions), which is real workflow guidance. However, there is no statement of when to prefer this over gh_actions_rerun, nor any exclusion for in-progress or already-successful runs.

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

gh_branchCreate a GitHub branchAInspect

Create a branch from another branch, a tag or a commit (default the main branch).

NameRequiredDescriptionDefault
fromNo
nameYes
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not destructive, not idempotent, open-world), so the description's added value is the default source branch and the range of valid parents (branch/tag/commit). It omits failure behavior, such as what happens if the branch name already exists, which keeps it from a 5.

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?

A single sentence with zero filler, front-loading the action and then the valid sources and default. Nothing redundant.

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 3-parameter mutation with annotations covering safety and no output schema to explain, the description covers the essentials. It leaves the agent guessing about remote vs local branch creation and conflict behavior, which are the only notable gaps.

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 only 33% (only `repo` documented), so the description must compensate, and it does: it explains that the parent can be a branch, tag, or commit and defaults to main. `name` is left implicit as the new branch name and `from`'s exact format is unspecified, so not a 5.

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

Purpose4/5

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

States a specific verb and resource ('Create a branch') and clarifies the accepted parent types (branch, tag, commit) plus the default. It does not distinguish itself from neighboring gh_* tools (gh_commit, gh_pull_create, gh_repo_settings), so it stops short of a 5.

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

Usage Guidelines2/5

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

The description gives no when-to-use context, no prerequisites (e.g. write access to the repo, whether the source branch must already exist), and no pointer to any alternative tool. The only contextual hint is the 'default the main branch' fallback.

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

gh_collaboratorGitHub collaboratorsA
Destructive
Inspect

Without username, list collaborators and pending invitations. With username, invite them or change their permission (pull, triage, push, maintain, admin; default push); remove true takes their access away. Changes need "change anything".

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
removeNo
usernameNo
permissionNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructive and non-readOnly behavior; the description adds that remove true revokes access and changes require 'change anything' permission, plus default permission push. It does not discuss idempotency or rate limits, but adds useful mutation context 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.

Conciseness4/5

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

Compact and front-loaded with the no-username listing case, then mutation cases. The dense semicolon structure is efficient but slightly telegraphic.

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 multi-mode destructive tool with no output schema, the description covers modes, permission values, default, and required scope. It omits return details or pending-invitation specifics, but is sufficient for correct invocation.

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 only 25% (only repo is described), so the description carries username/remove/permission semantics: optional username switches list vs mutate, remove true revokes access, and permission enum values with default push are supplied. This compensates strongly for undocumented schema fields.

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

Purpose4/5

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

States specific verbs and resource: list collaborators and pending invitations, invite, change permission, and remove. The conditional 'without username/with username' distinguishes its modes; it lacks explicit contrast with sibling tools like gh_repo_settings, but the collaborator resource is clear.

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 maps parameter states to behavior: omit username to list, provide username to invite/change, remove true to revoke access. Covers when to use each branch but gives no when-not guidance or alternative sibling routing.

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

gh_commitCommit files to GitHubAInspect

Commit up to 100 files in one commit: add or change ({path, content}, encoding base64 for binary, executable true for scripts) or delete ({path, delete: true}). branch is made from from (default the main branch) when it does not exist yet. In the default mode commits go to other branches than the main one (then open a pull request with gh_pull_create), except on repositories AskYourStack created or empty ones.

NameRequiredDescriptionDefault
fromNoWhere a new branch starts.
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
filesYes
branchNoDefault the repository's main branch.
messageYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the write/non-destructive/open-world profile, and the description adds real behavioral rules: commits land on non-main branches by default, exceptions apply for AskYourStack-created or empty repos, and a branch is created from `from` when missing. It omits that repeat calls are non-idempotent (new commits each time) and says nothing about the response payload, but the added context is substantive.

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?

Dense but front-loaded: the verb, the file operations, and the branch/PR routing each appear once with no filler. The parenthetical parameter hints slightly break reading flow but earn their space.

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?

For a 5-parameter mutation tool with no output schema and no annotations covering returns, the description should say what comes back (commit SHA, branch ref, per-file status) and what happens if one file in the batch fails. Those gaps are notable but the core invocation semantics are covered.

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?

With 60% schema coverage, the description compensates well by explaining the nested file object semantics (base64 for binary, executable true for scripts, delete: true for removal) and branch/from behavior, which the schema barely documents. It adds no detail on `message` or `repo` formatting beyond the schema, hence not a 5.

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?

States a specific verb and resource ('Commit up to 100 files in one commit') and enumerates the two operations (add/change via {path, content}, delete via {path, delete: true}). An agent can distinguish this from gh_commits (log reading) or git_push without opening a schema.

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 routes the post-commit step to gh_pull_create and explains the branch-creation rule via `from`. The caveat is the unexplained phrase 'In the default mode', which implies an alternate mode that is never described, leaving a decision gap.

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

gh_commitsGitHub commits and comparisonsB
Read-onlyIdempotent
Inspect

List commits (of a branch, or touching a path), show one commit with its changes (sha), or compare two branches, tags or commits (base and head) with the changed files and their diffs.

NameRequiredDescriptionDefault
shaNo
baseNo
headNo
pathNo
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
limitNo
branchNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuine value by stating that comparisons return changed files and their diffs, but it says nothing about pagination (the limit parameter), rate limits, or how large diffs are handled.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; each parenthetical clause earns its place by tying a parameter to a behavior. The density is high but still readable, with only minor loss from not breaking the three modes apart.

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?

For a seven-parameter tool with no output schema and low schema coverage, the description is adequate on mode selection and output shape ('changed files and their diffs'). It is incomplete on result limits/pagination and on the repo format, so it falls short of fully self-sufficient.

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 only 14% (repo alone), so the description carries most of the burden: it correctly maps sha, base, head, branch and path to their roles. It leaves limit and repo unexplained in the description, so two of seven parameters have no textual semantics anywhere in the description.

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

Purpose4/5

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

The description enumerates three concrete operations (list commits, show one commit with changes, compare base..head) with their key parameters, so the scope is unmistakable. It does not explicitly distinguish itself from the close sibling gh_commit, leaving the deduplication for the agent to infer from the wording.

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 parenthetical groupings (branch/path, sha, base and head) effectively tell the agent which parameter selects which mode, which is useful implied routing. However, there is no explicit when-to-use/when-not-to-use guidance or reference to alternatives such as gh_commit or gh_branch, so the agent must guess at the boundary.

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

gh_create_repoCreate a GitHub repositoryAInspect

Create a repository on the user's GitHub account or an organisation where the app is installed. Private unless private is false (a public one needs the "change anything" mode). auto_init (default true) starts it with a README; gitignore_template takes GitHub's names (Node, PHP, Python...). Never deletes anything. A repository AskYourStack created may then get commits on its main branch in the default mode.

NameRequiredDescriptionDefault
nameYes
ownerNoAccount or organisation; default the connected user.
privateNo
homepageNo
auto_initNo
descriptionNo
license_templateNo
gitignore_templateNo

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), and the description adds meaningful defaults not in annotations: private-by-default, auto_init defaulting to true with a README, and the elevated-mode requirement for public repos. Minor gap on failure modes and what happens on name collision.

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?

Dense, front-loaded sentences with no filler; the private default and the mode prerequisite come early. The final sentence about later commits on main in default mode is loosely worded and adds less value than the space it takes.

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?

For an 8-parameter mutation with no output schema and near-zero schema descriptions, the description covers defaults and the public-mode prerequisite but leaves several parameters and the return/result shape unaddressed. Adequate but not complete for this complexity.

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 only 13%, so the description has to carry the load, and it does explain private, auto_init, and gitignore_template naming along with the owner scope. However, homepage, description, license_template, and name format/constraints get no treatment in either place.

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?

States a specific verb and resource (create a repository) plus its scope (user account or an installed organisation), which cleanly separates it from read/management siblings such as gh_repo, gh_repos, and gh_repo_settings. An agent can identify the operation without opening the schema.

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 real selection context: public creation requires the 'change anything' mode, and the target must be an account/organisation where the app is installed. It does not explicitly name when to prefer a sibling (e.g. gh_repo_settings for editing an existing repo), so no full exclusion guidance.

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

gh_issue_createOpen a GitHub issueCInspect

Open an issue with a title, body, labels and assignees.

NameRequiredDescriptionDefault
bodyNo
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
titleYes
labelsNo
assigneesNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond repeating schema property names: it does not warn that retries create duplicate issues (non-idempotent), does not mention required permissions, and does not say what happens when labels or assignees do not exist.

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?

A single short sentence with no filler and the core action front-loaded. It is lean, though its brevity comes at the cost of the missing detail noted elsewhere rather than through efficient prioritization.

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

Completeness2/5

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

This is a non-idempotent write tool with no output schema and mostly undocumented parameters, yet the description never covers authentication, required fields, duplicate-risk on retry, or what the response contains (issue number/URL). For a mutation tool in a large sibling set, that leaves the agent under-equipped.

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

Parameters2/5

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

Schema description coverage is only 20% (only 'repo' is documented, with the owner/name format). The description merely lists 'title, body, labels and assignees' without adding format details — e.g. whether assignees are GitHub usernames, whether labels must already exist, or title length constraints — so it does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Open an issue') and enumerates the settable fields, which clearly separates it from gh_issue_update and gh_issues. It stops short of explicitly naming sibling alternatives, so a 4 rather than 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus gh_issue_update (to modify an existing issue) or gh_issues (to read them), and no prerequisites such as repo access or authentication. The agent must infer usage entirely from the name.

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

gh_issuesGitHub issuesB
Read-onlyIdempotent
Inspect

List issues (state, labels) or one (number) with its comments.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
limitNo
stateNo
labelsNo
numberNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior. The description adds useful behavior beyond that: listing supports state/labels filters, and fetching by number returns the issue with comments. It does not cover auth needs, rate limits, pagination, or ordering.

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 a single short sentence with no filler. It is front-loaded with the main operation and efficiently signals the two usage modes.

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

Completeness2/5

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

For a five-parameter tool with low schema coverage and no output schema, the description is too sparse. It does not explain limit/pagination, output shape, filtering details, or authentication expectations, leaving important context gaps.

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

Parameters2/5

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

Schema description coverage is only 20%, so the description must carry more parameter meaning. It references state, labels, and number in a useful mode-switching way, but does not explain limit, labels format, state enum behavior, or how number changes the response beyond including comments.

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

Purpose4/5

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

The description states a clear verb and resource: list issues, or fetch one issue with comments. It also distinguishes the bulk/list mode from the single-issue mode via the parenthetical cues. It is not maximally specific about GitHub context or sibling differentiation, but an agent can identify the operation.

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?

Usage is implied: use state and labels to list issues, or number to fetch one issue with comments. There is no explicit when-not guidance or reference to alternatives such as gh_issue_create or gh_issue_update. The mode selection is helpful but alternatives are left to inference.

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

gh_issue_updateUpdate a GitHub issue or pull requestA
Destructive
Inspect

Comment on an issue or pull request, close or reopen it (state), change its title or body, set labels (replaces them), add_labels, or assignees. A new title, body or labels replace the old ones, and GitHub keeps no undo, so read the issue first (gh_issues) and say what will be replaced.

NameRequiredDescriptionDefault
bodyNo
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
stateNo
titleNo
labelsNo
numberYes
commentNo
assigneesNo
add_labelsNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, yet the description adds real substance: replacement semantics for title/body/labels and the fact that GitHub keeps no undo. It stops short of covering permissions or the effect of combining comment with state changes.

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 tight sentences, with the operation list front-loaded and the destructive warning immediately after. Every clause carries information an agent needs.

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 destructive mutation with no output schema, the description supplies the safety warning and the key alternative tool, which is the main gap annotations cannot fill. It leaves some multi-parameter interactions (comment + state, assignees semantics) unaddressed.

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 only 11% across 9 parameters, so the description must carry weight; it does clarify the labels-vs-add_labels distinction and the replace-not-merge behavior of title/body. However, it says nothing about assignees (replace or append?), comment, or how comment interacts with state/title changes.

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

Purpose4/5

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

The description enumerates concrete operations (comment, close/reopen via state, title/body change, labels, add_labels, assignees) on a specific resource (issue or pull request), so an agent can match intent to tool. Minor deduction because the enumeration is a run-on list rather than a clean statement of scope.

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?

It explicitly routes the agent to the read sibling ('read the issue first (gh_issues)') and distinguishes the two label modes by flagging that labels replaces while add_labels adds. No explicit when-not-to-use case beyond that, so not a 5.

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

gh_pull_createOpen a pull requestBInspect

Open a pull request from head (a branch) into base (default the main branch), with a title and a description of what changed and why.

NameRequiredDescriptionDefault
baseNo
bodyNo
headYes
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
draftNo
titleYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the bar is lower; the description usefully adds that base defaults to the main branch. However, it says nothing about failure modes (existing PR for the same head, missing permissions) or what the call returns, which matters for a non-idempotent mutation.

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?

One compact sentence with the primary action and key inputs front-loaded; no filler. The parenthetical explanation of head/base is slightly clunky but still earns its place.

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?

A moderately complex mutation with 6 params, no output schema, and annotations covering only the safety profile. The description covers the core flow but omits the return value (PR number/URL) and the draft behavior, so an agent knows how to call it but not fully what to expect back.

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 only 17% (only repo is documented), so the description has to compensate. It does explain head, base, and that title/body carry the change summary and rationale, but it is silent on the draft flag and on whether head accepts owner:branch syntax — leaving 2 of 6 parameters unexplained anywhere.

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

Purpose4/5

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

States a specific verb and resource ('Open a pull request from head into base') plus the inputs involved, so an agent can distinguish it from siblings such as gh_pull_merge and gh_pulls. It does not name the siblings explicitly, so it falls just short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus gh_pulls (listing PRs), gh_pull_merge (merging), or gh_branch. The agent must infer that 'open' means create, and nothing is said about preconditions like the head branch existing or the PR not already being open.

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

gh_pull_mergeMerge a pull requestA
Destructive
Inspect

Merge a pull request (method squash by default, or merge or rebase); delete_branch removes its branch afterwards. Merging into the main branch of a repository AskYourStack did not create needs the "change anything" mode: otherwise leave the merge to the user.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
titleNo
methodNo
numberYes
delete_branchNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=false, so the safety profile is covered; the description adds real value on top by naming the default strategy (squash), disclosing that delete_branch removes the branch afterward, and stating the permission mode needed for main-branch merges. It stops short of saying whether the merge is reversible or what happens on conflicting/blocked PRs.

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 dense sentences, zero filler: the operation and its default come first, the side effect and permission caveat follow. Nothing repeats the tool name or annotations verbatim.

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 destructive, open-world mutation with no output schema and thin schema documentation, the description covers the operation, default, side effect, and authorization gate. It could be more complete about the return value (merge commit sha / result state) and about the unexplained 'title' parameter.

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 only 20%, so the description must carry weight: it does explain the 'method' enum, its default, and the semantics of 'delete_branch' ('removes its branch afterwards'). However, 'title' is left completely unexplained (presumably the commit message for squash/merge) and 'number' is undocumented in either place, leaving a meaningful gap.

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?

States a specific verb+resource ('Merge a pull request') and immediately enumerates the strategy space (squash by default, merge, rebase) plus the branch-deletion side effect. This distinguishes it cleanly from gh_pull_create and gh_pulls in the sibling list.

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?

Gives an explicit conditional prerequisite — merging into the main branch of a repo AskYourStack did not create requires the 'change anything' mode — and an explicit when-not: otherwise leave the merge to the user. An agent knows both when this is permitted and when to defer.

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

gh_pullsGitHub pull requestsA
Read-onlyIdempotent
Inspect

List pull requests (state open, closed or all), or one (number) with its description, reviews, checks, mergeability and changed files with diffs.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
limitNo
stateNo
numberNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description usefully adds that single-PR mode returns an enriched payload (reviews, checks, mergeability, changed files with diffs), which hints at cost/volume, but it gives no warning about payload size or rate limits when diffs are included.

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?

A single front-loaded sentence that packs the list mode, the filter values, and the full single-PR return scope with no filler.

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?

With no output schema, the description carries the return-value burden: it describes single-PR output well but says nothing about what a listing returns or how 'limit' behaves. Those gaps matter for an agent deciding between the two modes.

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 only 25% (only 'repo' is documented), so the description must compensate. It does clarify 'state' (open/closed/all) and 'number' (single PR), but 'limit' is left entirely undefined in both schema and description.

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

Purpose4/5

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

A specific verb (List) plus resource (pull requests), with the two operating modes spelled out: filtered listing vs. single PR by number. This naturally separates it from gh_pull_create and gh_pull_merge, though no sibling is named explicitly.

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 implies usage by explaining that 'state' drives listing and 'number' selects a single PR, but it never says when to prefer gh_pulls over gh_issues, gh_actions, or gh_read, nor any exclusions or prerequisites.

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

gh_readRead files in a GitHub repositoryA
Read-onlyIdempotent
Inspect

Read a file, list a folder, or with recursive true list every file below a path, at a branch, tag or commit (default branch when ref is left out).

NameRequiredDescriptionDefault
refNo
pathNoFile or folder; empty for the top.
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
recursiveNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already carry readOnly, idempotent, openWorld and non-destructive. The description adds behavior beyond them: ref may be a branch, tag or commit, and omitting ref resolves to the default branch, which is genuine context an agent needs to predict results.

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?

A single dense sentence, front-loaded with the primary action and then the modifiers. It reads slightly packed but no clause is redundant.

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?

No output schema exists, so the description should hint at what comes back (raw file content vs a listing shape, treatment of binary files, truncation on large files). It is adequate for calling the tool correctly but leaves the return shape entirely unspecified.

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 only 50% — ref and recursive have no schema descriptions — and the description compensates by defining ref's accepted forms and what recursive=true enumerates. repo/path semantics are already in the schema, so this is solid-but-not-complete supplementation.

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

Purpose4/5

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

States concrete verbs and resources: 'read a file, list a folder', plus the recursive variant and the ref scope. That distinguishes it from nearby write-side siblings (write_file, git_push), though it never contrasts with same-named alternatives such as read_file or gh_repo.

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 three modes (file read / folder list / recursive listing) imply when to use the tool and when to pass recursive, and the default-branch fallback is stated. There is no explicit guidance on alternatives or preconditions such as auth or repo access.

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

gh_repoA GitHub repositoryB
Read-onlyIdempotent
Inspect

One repository: settings, branches, the latest commits, open pull requests, the user's rights on it, and the server folders linked to it with git_link.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered externally. The description adds value by disclosing the bundled payload: branches, latest commits, open PRs, permission flags, and git_link-linked server folders. It does not cover pagination, freshness, or error behavior (e.g., repo not found / access denied).

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?

A single efficient sentence with the scoping term 'One repository' front-loaded and the payload contents following. No filler. Slightly list-like but every item names a real component returned.

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 aggregate getter with no output schema, the description enumerates the returned sections, which is the main thing an agent needs. The param is fully documented in schema and annotations carry the safety profile. Missing only access-failure behavior, a minor gap.

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%, and the schema itself documents repo as 'owner/name, like shopwhizzy/client-shop (or a GitHub address).' The description adds nothing about the single parameter, and it does not need to. Baseline 3 is appropriate.

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

Purpose4/5

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

The description explicitly scopes to 'One repository' and enumerates what is included: settings, branches, commits, pull requests, user rights, and linked server folders. This distinguishes it from the plural sibling gh_repos. It lacks an explicit verb such as 'get' or 'retrieve', but the resource and scope are unambiguous.

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

Usage Guidelines2/5

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

The description says nothing about when to use gh_repo versus the many overlapping siblings such as gh_repo_settings, gh_branch, gh_commits, gh_pulls, or gh_collaborator. The mention of git_link identifies a relationship, not a routing rule. An agent must infer from the names alone whether gh_repo is an aggregate summary or a substitute for those targeted tools.

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

gh_reposList GitHub repositoriesB
Read-onlyIdempotent
Inspect

The repositories the AskYourStack app can reach, newest push first, with private or public, default branch and language. Filter with owner or search.

NameRequiredDescriptionDefault
limitNoDefault 50, max 200.
ownerNo
searchNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered without the prose. The description adds two genuinely new facts — ordering is 'newest push first' and the result set is limited to repos the app can reach — but says nothing about pagination or truncation behavior.

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?

A single tight sentence with the resource and scope front-loaded and zero filler. Slightly awkward as a bare noun phrase rather than a verb-led statement, but nothing is wasted.

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 three-parameter read-only list with rich annotations and no output schema, the description covers scope, ordering, returned fields and filters. The only meaningful gap is the undefined semantics of the 'owner' and 'search' filters.

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

Parameters2/5

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

Schema description coverage is only 33%: 'limit' is documented in the schema, but 'owner' and 'search' have no schema descriptions at all. The description names both as filters but gives no format for owner (login vs org) and no indication of what fields 'search' matches, so it does not compensate for the coverage gap.

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

Purpose4/5

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

The description identifies the specific resource (repositories reachable by the AskYourStack app) and adds distinguishing scope plus the fields returned (visibility, default branch, language). It is clear what the tool does, but it never explicitly contrasts itself with the nearby single-repo tool (gh_repo) or gh_create_repo, so sibling differentiation is left implicit.

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?

'Filter with owner or search' implies how to narrow results, which is a light form of usage guidance. There is no statement of when to pick this over gh_repo/gh_repos alternatives, nor any note on exclusions or prerequisites beyond the implicit read-only nature.

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

gh_repo_settingsGitHub repository settingsC
Destructive
Inspect

Without changes, read the settings. description, homepage, topics, has_issues, has_wiki, delete_branch_on_merge and the merge methods change in the default mode; private (visibility), default_branch and archived need "change anything". Repositories are never deleted.

NameRequiredDescriptionDefault
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
topicsNo
privateNo
archivedNo
has_wikiNo
homepageNo
has_issuesNo
descriptionNo
has_projectsNo
default_branchNo
allow_merge_commitNo
allow_rebase_mergeNo
allow_squash_mergeNo
delete_branch_on_mergeNo

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false. The description adds a genuinely useful mitigation ('Repositories are never deleted') and hints at which fields are tainted by the extra confirmation gate. But the mode distinction it relies on is opaque, and nothing is said about partial updates or what happens to unmentioned settings.

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?

Two sentences, but the first is a dangling fragment ('Without changes, read the settings.') and the second is a semicolon chain mixing field lists with an unexplained mode concept. It is short yet not front-loaded or scannable.

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

Completeness2/5

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

A 14-parameter mutating tool with no output schema and a destructive annotation needs clearer coverage than this. The description leaves undefined the mechanism ('change anything') that governs the risky fields and says nothing about write conflicts, visibility semantics, or update behavior.

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

Parameters2/5

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

Schema description coverage is only 7% across 14 parameters, so the description must carry the semantic load. It does enumerate many field names (description, homepage, topics, has_issues, has_wiki, delete_branch_on_merge, merge methods, private, default_branch, archived), but omits has_projects, gives no types or defaults, and the field groupings hinge on undefined 'modes' that don't exist in the schema.

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

Purpose3/5

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

The description does convey that gh_repo_settings reads repository settings when called without changes, and that the listed fields can be modified. However, it never states plainly 'update repository settings' and never distinguishes the tool from the nearby gh_repo sibling. An agent can infer purpose, but only by parsing a garbled sentence.

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

Usage Guidelines2/5

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

'Without changes, read the settings' implies a read-vs-write pattern, but the referenced 'default mode' and 'change anything' are never defined and do not correspond to any schema parameter. No alternatives (e.g., gh_repo for reading, gh_create_repo for creation) are named, so routing guidance is effectively absent.

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

gh_secretGitHub Actions secretsA
Destructive
Inspect

Without name, list a repository's (or an environment's) Actions secret names. With name and value, set one (encrypted for GitHub before it leaves AskYourStack; AskYourStack keeps no copy); remove true deletes it. Setting and removing need "change anything". Typical: SSH_KEY, SERVER_HOST for a deploy workflow.

NameRequiredDescriptionDefault
nameNo
repoYesowner/name, like shopwhizzy/client-shop (or a GitHub address).
valueNo
removeNo
environmentNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive=true and readOnly=false, so the bar is lower; the description adds real operational context beyond them: values are encrypted before leaving AskYourStack, no copy is retained, deletion is via remove=true, and a permission requirement is stated. It could still say whether an existing secret is overwritten on set, but the value-add is clear.

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?

Three dense sentences, mode-switching logic front-loaded, and a short illustrative example at the end. Slightly compressed — the permission clause sits mid-sentence rather than standing out — but nothing 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 five-parameter, multi-mode mutation tool with no output schema and thin schema descriptions, the definition covers all modes, the permission gate, encryption/no-retention behavior, and deletion path. Remaining ambiguity (return shape, name-only edge case) is minor.

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 only 20% (just repo), so the description must compensate — and it does, explaining the semantics of name, value, and remove, plus that environment scopes the repository. It's not exhaustive (no guidance on name-without-value, or value/remove interaction), but it covers four of five parameters meaningfully.

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 names a specific resource (GitHub Actions secrets) and spells out its three modes with their triggering conditions: no name = list, name+value = set, remove=true = delete. An agent can distinguish this from gh_actions, gh_repo_settings, or gh_read without opening the schema.

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?

Mode selection is explicit and conditional ('Without name... With name and value...'), and it adds a prerequisite: setting and removing need "change anything" permission. It doesn't name a sibling alternative for the list case (e.g. why not gh_repo), but within the tool the routing is unambiguous.

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

git_deployDeploy from GitHub to a server folderA
Destructive
Inspect

Bring a linked server folder to the latest commit of its branch (or another branch, or a ref: a commit or tag, also to roll back). dry_run (default true) shows the commits, changed files and the steps the site needs afterwards (composer, setup:upgrade, static content, cache) without changing anything; dry_run false applies it with a fast-forward. It refuses when live files that the deploy would overwrite were changed on the server (git_push them first, or stash_local true to set them aside with git stash). The answer gives the ref to roll back to. Run the after steps with the magento, wp or run tools.

NameRequiredDescriptionDefault
refNo
whyNo
pathYesThe folder's absolute path on the server, like /home/shop/public_html.
branchNo
serverNoServer name or id. Optional when the account has one server.
dry_runNo
approval_idNo
stash_localNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real context beyond them: the dry-run preview enumerates commits, changed files, and required after-steps; the apply path is fast-forward only; and the deploy refuses when dirty live files would be overwritten. It does not explain the approval_id prerequisite, which matters for a destructive tool.

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 definition is dense and front-loads the core action before branching into dry_run, refusal conditions, and follow-ups. It drifts into a long parenthetical and a run-on sentence in the first clause, but no sentence is filler.

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 an eight-parameter destructive deploy tool with no output schema, the description covers outcome (the ref to roll back to), safety defaults, failure modes, and post-step tooling. The missing piece is the approval workflow implied by approval_id, which an agent needs before calling with dry_run=false.

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 only 25% (path and server are the only described fields), so the description must compensate, and it largely does: dry_run default and effect, ref/branch semantics, and stash_local behavior are all spelled out. The approval_id and why parameters remain unexplained, leaving a real gap.

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?

States a specific verb and resource (bring a linked server folder to the latest commit of its branch) with scope detail: branch, commit/tag ref, and rollback use. It is clearly distinguishable from git_push, git_status, and rollback because it describes the deploy action itself and where the deploy lands.

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 defines the dry_run true versus false branches, states that dry_run defaults to true, and explains the refusal condition plus the two remedies (git_push first, or stash_local true). It also names the follow-up tools (magento, wp, run) for post-deploy steps and explains that the returned ref can drive a rollback.

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

git_pushPush server changes to a GitHub branchAInspect

Commit the live changes of a linked folder (all of them, or only paths) and push them to a new branch on GitHub (default server/-), without changing the live files. Then open a pull request with gh_pull_create. Needs a deploy key with write (git_link with write true).

NameRequiredDescriptionDefault
whyNo
pathYesThe folder's absolute path on the server, like /home/shop/public_html.
pathsNo
branchNo
serverNoServer name or id. Optional when the account has one server.
messageNo
approval_idNo

TDQS

A4.1/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing that live files are not modified, that a new branch is created with a default name pattern (server/<server>-<date>), and that a write-scoped deploy key is required. It does not say what happens if the branch already exists or how failures/approvals behave.

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?

Three compact sentences, front-loaded with the core action, then the default naming, then the follow-up and prerequisite. Dense but every clause carries information; the first sentence is long but still readable.

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 non-idempotent open-world write tool with no output schema and 7 parameters, the description covers the key safety and workflow facts. Remaining gaps are the undocumented approval_id/message/server parameters and behavior on branch collisions.

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 only 29%, but the description clarifies path vs paths ('only paths') and explains branch defaulting. It leaves why, message, server, and approval_id entirely unexplained in both description and 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?

States a specific verb and resource: commits live folder changes and pushes them to a new GitHub branch. It also disambiguates the scope (all changes vs. only given paths) and distinguishes itself from the git_link prerequisite and the gh_pull_create follow-up.

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?

Gives explicit context for use (snapshot of live files without touching them) and names the next step, gh_pull_create. It also states the precondition (deploy key with write via git_link). It does not contrast with git_deploy or say when not to use this tool.

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

git_statusGit status of a server folderA
Read-onlyIdempotent
Inspect

A folder on the user's server as git sees it: the repository and branch it runs, the commit, whether GitHub has newer commits, and the drift: live files that differ from that commit (changed, new or deleted, .gitignore respected). Drift on a live shop nobody touched can be a hack: check it with malware_scan. Changes nothing.

NameRequiredDescriptionDefault
pathYesThe folder's absolute path on the server, like /home/shop/public_html.
fetchNoAsk GitHub for new commits first (default true).
serverNoServer name or id. Optional when the account has one server.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered; the description reinforces it with 'Changes nothing.' It adds genuinely new behavioral context beyond annotations: drift respects .gitignore, drift is measured against the current commit, and unexpected drift may signal compromise.

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 core sentence is front-loaded with a colon-delimited enumeration of outputs, and the second sentence adds an actionable warning. It is dense but not padded, though the first sentence is a long run-on that could be split for readability.

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 convey what comes back, and it does: repo, branch, commit, ahead/behind status, and drift broken into changed/new/deleted. An agent can predict the response shape and interpret an alarming result without further documentation.

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 all three parameters (path, fetch, server) are already documented in the schema, making 3 the baseline. The description adds interpretive meaning to the drift concept but does not clarify the fetch or server parameters beyond what the schema states.

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 states a specific resource (a server folder) and enumerates exactly what is reported: repository, branch, commit, whether GitHub has newer commits, and live-file drift with change categories. It implicitly draws a clean line against the gh_* siblings by emphasizing server-side live files rather than GitHub API data.

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?

It supplies one useful trigger and a downstream routing hint ('Drift on a live shop nobody touched can be a hack: check it with malware_scan'), which is real guidance. However, it never says when to prefer this over gh_commits, git_deploy, or git_link, nor any when-not condition, so selection against siblings is left to inference.

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

google_updatesGoogle ranking updatesA
Read-onlyIdempotent
Inspect

Google Search ranking updates from Google's own Search Status Dashboard: core, spam, Discover, reviews and helpful content updates and ranking incidents, with start date, how long the rollout took and whether it is still rolling out. Line them up with traffic changes from gsc_search_analytics before blaming (or clearing) the site itself.

NameRequiredDescriptionDefault
kindNoDefault all.
sinceNoYYYY-MM-DD. Default: 18 months ago.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds real value by disclosing the data source, that entries include rollout duration and ongoing status, and the intended diagnostic pairing — context the annotations do not carry.

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 dense sentences with zero filler; the resource and its contents are front-loaded, and the workflow guidance follows. Every clause carries information an agent would otherwise have to guess.

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?

With no output schema, the description must carry the return-value burden, and it does: it enumerates the update categories and the fields per entry. Slightly incomplete on freshness/cadence and whether results are paginated or how many rollouts are returned, but strong overall for a 2-param read-only tool.

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 the schema already documents both parameters (kind enum and YYYY-MM-DD since, with defaults). The description echoes date/rollout framing but adds no syntax, filtering, or enum semantics beyond what the schema states; baseline 3 applies.

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?

Names a specific resource (Google Search ranking updates) plus its authoritative origin (Google's own Search Status Dashboard) and enumerates the covered update types (core, spam, Discover, reviews, helpful content, incidents). It also states what each entry carries — start date, rollout duration, still-rolling status — so an agent knows exactly what this returns.

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 routes the agent to a sibling: 'Line them up with traffic changes from gsc_search_analytics before blaming (or clearing) the site itself.' That gives a clear use context and names the paired tool, though it does not state any exclusion or when-not-to-use condition (e.g. non-Google search engines).

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

gsc_cannibalizationKeyword cannibalizationA
Read-onlyIdempotent
Inspect

Keyword cannibalization from Search Console: queries where two or more of the site's pages each get a real share of the impressions, so they compete with each other. Per query the pages with their clicks, impressions, share and position, biggest first. Fix by merging, differentiating or canonicalizing the weaker page, and linking to the one that should rank. Pro and Agency.

NameRequiredDescriptionDefault
daysNoDefault 28 (within the plan's window).
siteNoProperty, like sc-domain:example.com or https://www.example.com/ (a bare domain also works). Optional when one property is picked.
min_shareNoA page counts when it has at least this share of the query's impressions. Default 0.1 (10%).
include_brandNoInclude searches for the brand name (left out by default: they show sitelinks).
min_impressionsNoIgnore queries with fewer impressions in total. Default 50.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish a safe read (readOnlyHint, idempotentHint, destructiveHint=false), but the description adds real value beyond them: the return shape (per query the competing pages with clicks, impressions, share and position), the ordering ('biggest first'), and a plan gate ('Pro and Agency') that tells the agent about entitlement requirements.

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 tight sentences, front-loaded with the core concept, then return shape, then remediation, then tier. No filler; each sentence earns its place.

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 return-value burden and does so (per-query pages, metrics, ordering). All five optional params are fully schema-documented, so 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.

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (days, site, min_share, include_brand, min_impressions) are already documented with defaults. The description adds no parameter syntax or format detail beyond the schema, so baseline 3 applies.

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?

States a specific verb+resource with a precise detection definition: queries where two or more pages each capture a real impressions share and thus compete. An agent can distinguish it from gsc_search_analytics, gsc_opportunities and gsc_performance_overview without opening the schema.

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?

Usage is implied by the tool's diagnostic nature and the remediation guidance ('fix by merging, differentiating or canonicalizing'), but it names no alternative sibling and gives no explicit when-to-use vs when-not-to-use condition relative to the other GSC tools.

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

gsc_inspect_urlInspect URLs in Search ConsoleA
Read-onlyIdempotent
Inspect

Google's own view of up to 20 URLs (Search Console URL Inspection): indexed or not and why (coverage state), last crawl, fetch result, robots.txt, the canonical Google picked versus the page's own, the sitemap and referring pages it knows, mobile usability and rich results found. About 2,000 inspections a day per property.

NameRequiredDescriptionDefault
siteNoProperty, like sc-domain:example.com or https://www.example.com/ (a bare domain also works). Optional when one property is picked.
urlsYesFull URLs inside the property, 1 to 20.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive, open-world inspection. The description adds meaningful behavioral context by listing the returned inspection fields and disclosing the daily quota of about 2,000 inspections per property.

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 definition is two dense sentences with no wasted lead-in: it states the resource scope first, then enumerates the key returned fields, then ends with the quota. Every clause earns its place.

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 compensates by listing the important return categories: coverage state, last crawl, fetch result, robots.txt, canonical selection, sitemap/referring pages, mobile usability, and rich results. Combined with annotations covering safety and a fully described parameter schema, an agent has enough context to invoke it correctly.

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 both the optional site parameter and the required urls parameter are already documented. The description repeats the 20-URL limit but adds no syntax, formatting, or per-parameter meaning beyond what the schema provides.

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 states a specific verb and resource: inspect up to 20 URLs via Search Console URL Inspection. It clearly distinguishes this from sibling tools by emphasizing Google's own per-URL indexing, crawl, canonical, and rich-result data rather than aggregate analytics.

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 implies usage by naming Search Console URL Inspection and the 20-URL cap, but it does not explicitly say when to choose this over siblings such as gsc_search_analytics or gsc_sitemaps, nor does it state when not to use it.

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

gsc_opportunitiesSEO opportunities, rankedA
Read-onlyIdempotent
Inspect

The SEO work a Search Console property is asking for, ranked in one call: striking-distance queries (average position 5 to 20 with real impressions, and the page that ranks), low-CTR pages (on page one but earning under half the clicks their position usually gets, with the queries to write the title for), decaying pages (lost at least 10 clicks and 20% against the period before) and queries where two of the site's pages compete. Each item has clicks_at_stake, a rough monthly estimate from typical CTR by position, so the four kinds rank together in top_actions with what to do. Brand searches are left out. Start here when the user asks what to work on, what to improve first or for quick wins; then open the pages with page_audit or gsc_search_analytics.

NameRequiredDescriptionDefault
daysNoLength of the period, ending with the latest final data, compared with the same length before it. Default 28.
siteNoProperty, like sc-domain:example.com or https://www.example.com/ (a bare domain also works). Optional when one property is picked.
limitNoItems per list, default 20, max 50.
include_brandNoInclude searches for the brand name (left out by default).
min_impressionsNoIgnore queries with fewer impressions. Default 30 (low-CTR pages need twice this).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, and the description adds substantial behavior beyond them: the exact thresholds defining each category (position 5-20 with impressions, under half the expected clicks, lost 10 clicks and 20% vs prior period), that brand searches are excluded, and that items carry a clicks_at_stake monthly estimate ranked together in top_actions.

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?

Purpose and the four categories are front-loaded before the routing sentence, and each clause carries distinct information. It is dense and long, but no sentence is filler; the single mega-sentence is the only mild readability cost.

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 return-value burden and does so: it names the four ranked lists, the top_actions container, and the clicks_at_stake field. Combined with the safety annotations, an agent has everything needed to call and interpret it correctly.

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 the schema already documents defaults and ranges for days, site, limit, include_brand and min_impressions. The description reinforces a few of these (brand exclusion, 'real impressions', period-over-period comparison) but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('The SEO work a Search Console property is asking for, ranked in one call') and enumerates the four opportunity kinds it returns. It names adjacent siblings (page_audit, gsc_search_analytics), so an agent can distinguish it from the broader GSC tools without opening their schemas.

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?

Gives explicit routing: 'Start here when the user asks what to work on, what to improve first or for quick wins; then open the pages with page_audit or gsc_search_analytics.' The entry condition and the follow-up tools are both named, leaving nothing to inference.

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

gsc_performance_overviewSearch performance overviewA
Read-onlyIdempotent
Inspect

One-call summary of a Search Console property: totals for the period against the period before it (clicks, impressions, CTR, position and their change), the day-by-day series, and the biggest winning and losing queries and pages by clicks, plus queries and pages that appeared or vanished. Start here when the user asks how the site is doing or why traffic moved; drill down with gsc_search_analytics.

NameRequiredDescriptionDefault
daysNoLength of the period, ending with the latest final data. Default 28.
siteNoProperty, like sc-domain:example.com or https://www.example.com/ (a bare domain also works). Optional when one property is picked.
search_typeNoDefault web.

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, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds useful behavioral scope beyond that: it discloses that results are compared against the prior period and include emergence/disappearance detection, which is non-obvious. It does not mention auth requirements or rate limits, leaving a small gap.

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 lead clause ('One-call summary of a Search Console property') front-loads the essential scope, and every subsequent clause adds a distinct output dimension rather than filler. Two dense sentences that earn their 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?

With no output schema, the description carries the full burden of explaining return values, and it does so comprehensively: comparison totals, time series, ranked winners/losers, and appeared/vanished entities. An agent knows what it will get and how to follow up.

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 days, site, and search_type are fully documented in the schema, including the enum values and defaults. The description only implies period semantics ('totals for the period') without adding syntax or format meaning beyond the schema, so baseline 3 applies.

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?

It states a specific verb and resource ('One-call summary of a Search Console property') and enumerates exactly what the summary contains: period-over-period totals (clicks, impressions, CTR, position and change), a day-by-day series, winning/losing queries and pages, and appeared/vanished queries. It explicitly names the sibling to drill into (gsc_search_analytics), so an agent can separate it from that tool without opening a schema.

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?

Gives explicit when-to-use ('Start here when the user asks how the site is doing or why traffic moved') and names the alternative and its selection condition ('drill down with gsc_search_analytics'). Nothing is left for the agent to infer about routing.

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

gsc_propertiesSearch Console propertiesA
Read-onlyIdempotent
Inspect

The Google Search Console properties the user picked for AskYourStack, with the access level, and which Google account is connected. Call this first for SEO work that uses Search Console.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld. The description adds value the annotations do not: it discloses what the call surfaces (access level and connected account) and that it acts as a prerequisite first step. Rate limits and auth specifics are not covered, but for a read-only discovery tool this is solid.

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 tight sentences: the first front-loads what the tool returns, the second front-loads the calling-order directive. No filler and no redundancy.

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?

There is no output schema, so the description carries return-value disclosure, and it names the key fields (properties, access level, connected account). Combined with the sequencing cue, an agent has what it needs to call this correctly first. It could be slightly richer about how to consume the result, but it is complete for a 0-param read 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?

With zero parameters, the baseline is 4. There is nothing for the description to document beyond the fact that the tool returns the user's configured properties, which it does state.

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

Purpose4/5

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

The description names a specific resource (the user's Search Console properties for AskYourStack) and what it exposes (access level and connected Google account). This clearly distinguishes it from the data-fetching gsc_* siblings such as gsc_search_analytics or gsc_performance_overview. It is not framed as a verb, but the resource and returned facets are 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 final sentence gives explicit ordering guidance: 'Call this first for SEO work that uses Search Console.' That is actionable context for an agent deciding what to invoke first. It stops short of naming alternatives or stating when NOT to call it, but the sequencing rule is clear.

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

gsc_search_analyticsSearch Console search analyticsA
Read-onlyIdempotent
Inspect

Google Search Console performance: clicks, impressions, CTR and average position, grouped by query, page, country, device, date or search appearance, with filters. Pass compare_start_date and compare_end_date to compare two periods (each row then has the previous values and the change, and rows that disappeared are listed). Dates are YYYY-MM-DD; Search Console keeps about 16 months of history (use it for year-over-year and seasonality) and lags about 2 to 3 days. Default: the last 28 days of final data, grouped by query.

NameRequiredDescriptionDefault
siteNoProperty, like sc-domain:example.com or https://www.example.com/ (a bare domain also works). Optional when one property is picked.
filtersNoAll must match. Like {"dimension": "page", "operator": "contains", "expression": "/blog/"} or {"dimension": "country", "operator": "equals", "expression": "prt"} (countries are ISO 3166-1 alpha-3, devices DESKTOP, MOBILE, TABLET).
end_dateNo
row_limitNoDefault 100, max 1000.
start_rowNoFor paging: skip this many rows.
dimensionsNoDefault ["query"]. Up to 3, like ["page", "query"].
start_dateNo
search_typeNoDefault web.
include_freshNoInclude the last days' data that is not final yet. Default false.
compare_end_dateNo
compare_start_dateNo

TDQS

A4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds substantial behavior beyond them: a 2-3 day data lag, ~16 months of retained history, the semantics of include_fresh, and exactly what comparison does (previous values, change, and rows that disappeared are listed). This is rich operational context that goes well past the structured fields.

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?

Front-loaded with purpose, then comparison semantics, then date/history constraints, then the default — a logical ordering. It is dense and slightly long, but nearly every sentence conveys a distinct constraint the agent needs, so little is wasted.

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 an 11-parameter, no-output-schema tool with 64% coverage, the description fills the key gaps: comparison behavior, date format, freshness/lag, history window, and defaults. It does not describe the row payload for non-comparison calls or elaborate on the optional site parameter, but overall it is complete enough to 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 64%, so the description must add meaning, and it does: compare_start_date/compare_end_date have no schema descriptions yet their behavior is fully explained, the YYYY-MM-DD date format is stated, and the grouping dimension usage is illustrated. It does less for site and start_row, but the added meaning around the undocumented comparison params earns above the baseline.

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

Purpose4/5

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

Names a specific verb+resource (Google Search Console performance) and enumerates the exact metrics returned (clicks, impressions, CTR, average position), grouping dimensions, and filter capability, which clearly implies a granular search-analytics tool rather than the sibling overview/opportunities tools. It stops short of explicitly naming which sibling to use instead, so it lands at 4 rather than 5.

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?

Provides useful context such as 'use it for year-over-year and seasonality', the default (last 28 days grouped by query), and the compare_start_date/compare_end_date pattern for period comparison. However, it never states when to prefer this over gsc_performance_overview or gsc_opportunities, nor any exclusions, so guidance is implied rather than explicit.

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

gsc_sitemapsSearch Console sitemapsB
Read-onlyIdempotent
Inspect

Sitemaps submitted in Search Console for a property: last submitted and downloaded, pending, errors and warnings, and URLs submitted per content type.

NameRequiredDescriptionDefault
siteNoProperty, like sc-domain:example.com or https://www.example.com/ (a bare domain also works). Optional when one property is picked.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds value by listing the returned data categories, but says nothing about how many sitemaps come back, whether results are paginated, or what the optional-property behaviour means when multiple properties exist.

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?

One compact sentence that front-loads the resource and then enumerates the reported fields; no filler or repetition. Slightly dense, but every clause carries information.

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?

With no output schema, the description carries the burden of describing what comes back, and it does so by naming the field categories. Combined with the annotations and the fully documented parameter, an agent has enough to invoke it correctly; only pagination and multi-property disambiguation are unaddressed.

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% and the single `site` parameter is fully documented in the schema, including the accepted formats and the fact it is optional when one property is selected. The description adds nothing about the parameter, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific resource (sitemaps submitted in Search Console for a property) and enumerates the data it reports (last submitted/downloaded, pending, errors/warnings, URLs by content type), which lets an agent separate it from siblings like bing_sitemaps, sitemap_check and gsc_properties. It never states an explicit verb such as 'retrieve', but the reporting intent is unmistakable.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as bing_sitemaps (for Bing) or sitemap_check (for validating a sitemap). The agent must infer that this tool is the GSC-side read and the others are different providers.

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

gsc_sitemap_submitSubmit a sitemap to GoogleAInspect

Submit or resubmit a sitemap to Google Search Console for a picked property, the same as Sitemaps > Add a new sitemap. Use it after publishing a new sitemap, moving it, or when gsc_sitemaps shows it is missing. It needs the extra "Submit sitemaps" permission on the connected Google account; without it the answer gives the user the link to grant it. Google has no API to request indexing of single pages (only the button in URL Inspection); indexnow_submit covers Bing and the others.

NameRequiredDescriptionDefault
siteNoProperty, like sc-domain:example.com or https://www.example.com/ (a bare domain also works). Optional when one property is picked.
sitemapYesFull address of the sitemap on the property, like https://www.example.com/sitemap.xml.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the required 'Submit sitemaps' permission and what happens on failure (the response gives the user a grant link). That is exactly the kind of auth/error-path context an agent needs before calling an openWorld mutation with idempotentHint=false.

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?

Front-loads what the tool does and the UI analogue, then triggers, then prerequisites, then the negative disambiguation. Four sentences, none redundant, no filler.

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?

A two-parameter mutation with no output schema, yet the description covers preconditions (permission), trigger conditions, failure behavior, and scope limits. Nothing material for correct invocation is missing.

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 both parameters are already documented with examples and the optional-when-one-property-picked rule. The description adds only the passing phrase 'for a picked property' and no format detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Submit or resubmit a sitemap to Google Search Console') and anchors it to the UI equivalent (Sitemaps > Add a new sitemap). It also distinguishes itself from the read-side sibling gsc_sitemaps and from indexnow_submit without the agent needing to open any schema.

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

Usage Guidelines5/5

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

Gives explicit triggers (after publishing a new sitemap, after moving it, or when gsc_sitemaps shows it missing) and names the alternative for other engines (indexnow_submit for Bing). It also rules out a plausible misuse (per-page indexing) by stating Google has no API for it.

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

health_reportServer health reportA
Read-onlyIdempotent
Inspect

Health of the server now: disk and inode use per filesystem, free memory, swap, load per CPU, failed services, SSL certificates and days left, pending security updates, whether a reboot is needed, backups (how old the newest is, the rhythm of the last runs, backup programs that are scheduled), programs the system killed for lack of memory in the last day, how often PHP-FPM ran out of workers, how close the database came to its connection limit, and per site its address and (Magento) minutes since cron last succeeded; on Pro and Agency also software with a known vulnerability (missing security patches, vulnerable modules, plugins and themes). AskYourStack runs this daily and emails the user about problems. On Pro and Agency the answer ends with known_vulnerabilities: what the public feeds (WPVulnerability for WordPress plugins, themes and core; OSV for composer packages) know about the installed versions, with severity, the fixed version and a link; the same opens alerts.

NameRequiredDescriptionDefault
serverNoServer name or id. Optional when the account has one server.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, and open-world behavior, so the bar is lower; the description goes well beyond them by disclosing the full report scope, the plan-tier gating (some fields only on Pro/Agency), the daily automated email behavior, and the known_vulnerabilities payload with severity, fixed version, and links.

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 body is one enormous run-on sentence chaining fifteen-plus comma-separated report items with no bullets or grouping, which is hard to scan even though 'Health of the server now' is correctly front-loaded. It is over-stuffed rather than appropriately sized for an agent to parse quickly.

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?

With no output schema, the description carries the full burden of describing return content, and it does so thoroughly, including tier-dependent fields and the trailing known_vulnerabilities block. Coverage is strong; only the relationship to sibling tools and the server defaulting behavior remain unstated.

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?

There is a single optional 'server' parameter with 100% schema description coverage, which already states it is a name or id and optional for single-server accounts. The description adds no syntax, defaulting, or lookup detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The opening 'Health of the server now' plus a detailed enumeration of the report's contents makes the verb (report on) and resource (server) unambiguous. It never differentiates itself from close siblings such as server_facts, logs, or overview, so an agent must infer the boundary from content alone.

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?

Usage is only implicit: the description notes AskYourStack runs this daily and emails about problems, which signals this is the canonical health-check tool, and it conditionally scopes extra data to Pro/Agency plans. There is no explicit when-to-use versus alternatives, no exclusions, and no prerequisites for calling it.

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

indexnow_submitTell Bing about changed pages (IndexNow)AInspect

Tell Bing and the other IndexNow search engines (Yandex, Seznam, Naver; not Google) that pages are new, changed or deleted, so they crawl them now. Pass up to 500 addresses of one site. The first time for a site it answers with a small key file to put at the site's root (write it with write_file into the folder the web server serves, see list_sites) and then call again. Use it after publishing or updating pages, fixing redirects or removing pages; do not resend pages that did not change.

NameRequiredDescriptionDefault
urlsYesFull addresses on one site, like https://www.example.com/new-page

TDQS

A4.7/5.0
Behavior4/5

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

Annotations declare openWorldHint=true, readOnlyHint=false, idempotentHint=false and destructiveHint=false, and the description adds real context beyond them: the 500-URL ceiling, single-site scoping, the first-call-returns-a-key-file handshake, and that omitting the key file makes the call incomplete. It stops short of describing response format or rate limiting, but the added operational detail is substantial.

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?

Three sentences, front-loaded with the action and engine scope, then the parameter constraint, then the workflow and triggers. Every clause carries information (engine list, exclusions, limits, setup steps) with no filler.

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 one-parameter, non-output-schema tool, the description covers the action, engine scope, URL limits, the two-step setup requirement with the sibling tools needed to satisfy it, and when to use it. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

With one parameter at 100% schema coverage, the baseline is 3, but the description adds two constraints the schema does not express: a maximum of 500 addresses and that all addresses must belong to one site. That materially narrows correct usage beyond the schema's example format.

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?

States a specific verb-and-resource pair ('Tell Bing ... that pages are new, changed or deleted') and explicitly delimits the audience of engines, including a notable exclusion ('not Google'). This lets an agent tell it apart from neighbouring tools like bing_submit or bing_sitemaps without opening either schema.

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?

Gives explicit triggers ('after publishing or updating pages, fixing redirects or removing pages') and an explicit exclusion ('do not resend pages that did not change'). It also spells out the multi-step first-run workflow (key file at site root via write_file, then call again), which is unusually complete guidance.

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

job_outputRead a job's outputA
Read-onlyIdempotent
Inspect

Status (running, finished, ended), exit code and output of a background job. Without offset you get the last 48 KB; pass next_offset from the previous answer to get only what is new.

NameRequiredDescriptionDefault
job_idYes
offsetNo
serverNoServer name or id. Optional when the account has one server.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld. Beyond that, the description adds the enumerated status values (running, finished, ended), the presence of an exit code, and the 48 KB tail-window behavior, all of which are genuine behavioral detail not present in the structured fields.

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 tightly written sentences, front-loaded with what is returned and followed by the offset semantics. Every clause carries information and there is no filler.

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?

With no output schema, the description correctly enumerates the return payload (status, exit code, output) and the pagination behavior. Coverage is strong for a read tool whose annotations already carry the safety profile; only the job_id parameter's expectations remain implicit.

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 only 33%, so the description must compensate. It usefully explains the offset windowing behavior, but job_id is left unexplained and the description refers to 'next_offset' while the actual parameter is named 'offset', creating a minor naming mismatch for the agent.

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

Purpose4/5

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

The description states a specific verb+resource pair ('Status ..., exit code and output of a background job'), clearly distinguishing this read tool from the write-oriented siblings start_job, stop_job, and list_jobs. It is clear what the tool returns, though it does not explicitly name those siblings as alternatives.

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?

It gives concrete conditional guidance for the main mode of use: without offset you get the last 48 KB, and you pass the offset from the previous answer to fetch only new data. This implies the incremental-polling workflow well, but there is no explicit statement of when to call this versus list_jobs or wait_for_approval.

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

keyword_ideasKeyword ideas with volume and difficultyA
Read-onlyIdempotent
Inspect

Keyword ideas around a seed keyword: up to 100 suggestions that contain it, each with monthly Google searches, cost per click, competition, keyword difficulty (0 to 100) and search intent. For a content plan, for finding what to target next to a page, or for checking a keyword's difficulty before writing. One lookup from the plan's allowance.

NameRequiredDescriptionDefault
limitNoDefault 50, at most 100.
keywordYes
languageNoTwo-letter language code, default en.
locationNoA country name, like United States (default), Germany, Portugal, United Kingdom.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open world). The description adds something the annotations cannot express: 'One lookup from the plan's allowance', which tells the agent this call consumes a metered quota — genuinely useful for cost-aware planning. It does not mention caching, rate limits or pagination behaviour, so not a 5.

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?

Front-loaded with the core purpose, then output fields, then use cases, then the quota note — a sensible priority order with no filler sentences. Slightly dense in the middle run-on enumeration of returned metrics, but every clause 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?

With no output schema, the description compensates well by listing the returned metrics and their ranges (difficulty 0-100), so an agent knows what comes back. Parameters and safety are covered by schema and annotations, leaving little an agent needs that is missing.

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 75% and documents limit, language and location including defaults, so the schema carries most of the load. The description's only parameter-relevant detail is 'up to 100 suggestions', which merely echoes the schema's limit maximum, adding no new syntax or constraint information.

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

Purpose4/5

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

States a specific verb+resource (keyword ideas around a seed keyword) and enumerates exactly what each result contains — volume, CPC, competition, difficulty 0-100, intent — plus the cap of 100 suggestions. The only gap is that it never distinguishes itself from close siblings like keyword_volume or domain_keywords, so an agent must infer the boundary.

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?

Gives three concrete use cases — building a content plan, finding what to target next to a page, and checking difficulty before writing — which is clear context for when to reach for it. It stops short of naming an alternative tool or an explicit when-not-to-use condition, so it sits below a 5.

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

keyword_volumeGoogle search volume for keywordsA
Read-onlyIdempotent
Inspect

Google search volume for up to 200 keywords in a country and language: monthly searches, the last 12 months, cost per click, advertiser competition, keyword difficulty (0 to 100) and search intent. One lookup from the plan's monthly keyword allowance whatever the count, so batch keywords into one call.

NameRequiredDescriptionDefault
keywordsYes1 to 200 keywords.
languageNoTwo-letter language code, default en.
locationNoA country name, like United States (default), Germany, Portugal, United Kingdom.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds quota behavior not present in structured data: a single call consumes one lookup from the monthly allowance regardless of keyword count, which is a real operational consequence. It does not mention rate limits or what happens when the allowance is exhausted.

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, both front-loaded with the most decision-relevant information: first the output metric set, then the cost/batching rule. With no output schema, the metric enumeration earns its space by telling the agent what comes back. No filler.

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?

Because there is no output schema, the description carries the return-value burden and does so by listing the metrics and history window. Together with annotations and a fully described schema, an agent has enough to call it correctly. Minor gap: behavior when the monthly allowance is exhausted is not stated.

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 the parameters are already documented with defaults and examples. The description restates the language/location scoping and the 200-cap and adds difficulty units (0 to 100), but contributes little syntax or format detail beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb+resource (Google search volume for keywords) and enumerates exactly what it returns: monthly searches, 12-month history, CPC, advertiser competition, keyword difficulty, and search intent. The 200-keyword cap and country/language scoping make it distinguishable from sibling keyword tools like keyword_ideas, bing_keywords, and domain_keywords.

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?

Gives clear operational guidance: 'One lookup from the plan's monthly keyword allowance whatever the count, so batch keywords into one call.' This tells the agent how to call it cost-effectively. It stops short of naming an alternative tool or stating when this is the wrong choice versus keyword_ideas or domain_keywords.

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

list_dumpsList the dumps kept on a serverA
Read-onlyIdempotent
Inspect

The database dumps kept on a server (in /var/lib/askyourstack/dumps, 7 days): those made with db_dump, the copies of tables AskYourStack took before an approved destructive statement (before-...), and the copies taken before a restore (before-restore-...). Each with its size and age. Use it to find what db_restore can load back.

NameRequiredDescriptionDefault
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds genuinely new context — storage location (/var/lib/askyourstack/dumps), a 7-day retention window, and the fact that each entry carries size and age. It doesn't say how entries are ordered or whether the listing can be long, but that's minor.

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?

One tightly packed passage that front-loads the resource and scope, then the categories, then the use case. The parenthetical category walk-through makes it slightly run-on but every clause carries information.

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?

With no output schema, the description usefully explains what a returned item contains (size and age) and which artifacts are retained and for how long. Only ordering and result-size behavior are left unspecified, which is low-risk for a short-lived listing.

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% and the schema already explains that 'server' is optional when the account has a single server. The description adds nothing about the parameter, so the baseline of 3 applies.

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 states a specific verb and resource (list database dumps kept on a server) and enumerates the three dump categories with their filename prefixes (db_dump output, before-..., before-restore-...). This clearly separates it from db_dump (which creates dumps) and db_restore (which consumes them).

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?

It gives explicit routing: "Use it to find what db_restore can load back," which names the downstream sibling and the condition that selects this tool. It does not distinguish itself from the adjacent list_snapshots or say when not to use it, so it stops short of full guidance.

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

list_jobsList background jobsB
Read-onlyIdempotent
Inspect

The 20 most recent background jobs on the server with their status.

NameRequiredDescriptionDefault
serverNoServer name or id. Optional when the account has one server.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld behavior, so the safety profile is covered. The description adds a useful behavioral constraint beyond annotations by stating the result is capped at 20 most recent jobs with status, but it omits ordering guarantees, pagination behavior, or what happens when multiple servers exist.

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 a single front-loaded sentence, leading with the most important scope ('20 most recent') and ending with the included attribute ('status'). It wastes no words and is appropriately sized for a simple list operation.

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?

With no output schema, the description should explain the return shape more than it does. It states that jobs and their status are returned, but does not clarify whether job identifiers, timestamps, or error details are included, which matters because job_output is a likely follow-up tool that would need an id.

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%, and the single optional server parameter is fully described in the schema, including that it is optional when the account has one server. The description's phrase 'on the server' adds minimal meaning beyond what the schema already supplies.

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

Purpose4/5

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

The description specifies the resource (background jobs), scope (20 most recent on the server), and included attribute (status), which clearly distinguishes it from siblings like job_output, start_job, and stop_job. However, it never explicitly names or differentiates against those alternatives, leaving the agent to infer the boundary.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of when to prefer this tool over job_output, start_job, or stop_job. The agent must infer appropriate usage entirely from the tool name and schema.

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

list_serversList serversB
Read-onlyIdempotent
Inspect

List the servers on this account: online or not, safety mode, paused or not.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only the set of attributes returned (online, safety mode, paused), which is useful output context but not additional behavioral disclosure such as auth needs or result shape.

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?

A single front-loaded sentence with the verb first and no filler. The trailing 'online or not, safety mode, paused or not' is slightly telegraphic, but every clause conveys content the agent would otherwise lack.

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?

With no output schema, the description should ideally characterize what a returned server entry contains; it names three status attributes but not the identity fields (id, name, host) or the collection format. Against full annotation coverage and zero params this is adequate but not complete.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. The description cannot and need not document parameter semantics, and it correctly implies an unfiltered account-wide listing.

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

Purpose4/5

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

States a specific verb and resource ('List the servers on this account') and even names the attributes reported (online status, safety mode, paused state). It does not distinguish itself from siblings like list_sites, list_snapshots, or server_facts, so an agent must infer the boundary rather than being told.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no alternatives named. The description neither excludes any case nor points to a sibling such as server_facts or list_sites, leaving the agent to infer that this is an unfiltered, list-everything call.

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

list_sitesList sitesA
Read-onlyIdempotent
Inspect

The sites on the server: Magento 2, OpenMage (Magento 1), WordPress and WooCommerce, PrestaShop, Shopware 6, Drupal, Joomla, OpenCart, Laravel and Ghost, wherever the hosting panel keeps them (found from the web server's own configuration too) and inside Docker containers when their files are mounted from the host. For each: kind, root folder, the folder the web server serves, domains, access logs, owner user, version, database name and table prefix (read from the site's own configuration; passwords are never shown), its command line tool if it has one (console, run with site_console), WooCommerce's version for a WordPress shop, and the container it runs in.

NameRequiredDescriptionDefault
serverNoServer name or id. Optional when the account has one server.

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses real behavior: sites are located wherever the panel keeps them, also derived from the web server's own configuration, and inside Docker containers when files are mounted from the host. It also carries a useful security guarantee ('passwords are never shown') and notes metadata is read from each site's own configuration. It stops short of stating auth requirements or cost/latency on hosts with many sites.

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

Conciseness3/5

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

The resource is front-loaded but the body is one very long run-on sentence that chains stack names, discovery mechanisms, and a long trailing list of returned fields. The content is substantive rather than filler, yet the nesting hurts scannability.

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?

With no output schema, the description takes on the job of describing the response and does enumerate the per-site fields (kind, root, docroot, domains, logs, owner, version, DB name and prefix, CLI tool, WooCommerce version, container). What is missing is behavior when multiple servers exist and any note on result size or pagination.

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?

There is a single optional `server` parameter with 100% schema description coverage, so the schema already explains that it accepts a name or id and is optional on single-server accounts. The description adds no syntax, default, or multi-server behavior beyond that, so the baseline 3 applies.

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

Purpose4/5

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

Names the resource ('the sites on the server') and enumerates the supported stacks (Magento, WordPress/WooCommerce, PrestaShop, Shopware, Drupal, Joomla, OpenCart, Laravel, Ghost) plus the discovery sources, so an agent knows exactly what is retrieved. It never names or contrasts a sibling such as list_servers or connected_sites, which is the only thing keeping it from a 5.

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?

Usage is only implied: an agent infers this is the way to inventory sites hosted on a server, and the mention that a site's console is 'run with site_console' routes one follow-up action. There is no explicit when-to-use statement, no exclusion of alternatives, and no stated prerequisite or permission requirement.

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

list_snapshotsList snapshotsB
Read-onlyIdempotent
Inspect

Snapshots on the server, newest first, with what each holds.

NameRequiredDescriptionDefault
serverNoServer name or id. Optional when the account has one server.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds useful behavior beyond that — result ordering (newest first) and that each entry carries its contents — but says nothing about volume, pagination, or retention limits, which matters for a listing tool.

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?

A single compact sentence with the ordering constraint and payload hint front-loaded and no filler. It is telegraphic to the point of being slightly clipped, which costs it the top score.

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?

For a simple read-only list with full schema coverage and no output schema, the description is adequate but thin: it does not say whether results are paginated, how many snapshots come back, or how this relates to the 'snapshot' and 'rollback' siblings that operate on the same objects.

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?

Only one parameter (server) with 100% schema description coverage, including the 'optional when the account has one server' nuance. The description's phrase 'on the server' loosely ties to that parameter but adds no format or default information beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

Names the resource (snapshots) and its scope (on the server) plus the ordering (newest first) and rough return content (what each holds). It is a noun phrase rather than a verb phrase, so the 'list' action comes from the title, and it does not distinguish itself from the singular sibling 'snapshot' (likely the create/rollback side).

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

Usage Guidelines2/5

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

No statement of when to list snapshots versus using 'snapshot', 'rollback', or 'list_servers'. The only usage-adjacent detail is in the schema ('Optional when the account has one server'), not in the description, so an agent gets no routing guidance.

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

llms_txtBuild an llms.txtA
Read-onlyIdempotent
Inspect

Build an llms.txt for a site (the llmstxt.org format AI assistants read: the site's name, a one-line summary and its key pages as links with descriptions, grouped by section). Pages come from the sitemap (one language, shallowest first) or the home page's links, each fetched for its title and description; noindex, non-200 and pages canonical to another address are left out. Pass urls to put the pages that matter most first (for example the top pages by clicks from gsc_performance_overview), name or summary to set them. Returns the file and whether the site already has one; it does not write anything.

NameRequiredDescriptionDefault
nameNo
siteYesAny URL on the site.
urlsNoPages to list first, up to 100.
summaryNo
languageNoLanguage prefix to use on a multi-language site, like it or pt-br. Default: the pages without a prefix.
max_pagesNoPages in the file, default 40, max 100.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces this with 'it does not write anything' and 'Returns the file and whether the site already has one'. It further discloses filtering rules (noindex, non-200, canonicals to another address excluded) and shallowest-first ordering, which go 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.

Conciseness4/5

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

Two dense sentences that front-load the artifact and format, then sourcing/filtering, then return behavior. No filler, though the parenthetical format explanation and sourcing clauses are packed tightly.

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 still states the return payload (the file plus whether one already exists) and covers sourcing, exclusion rules, ordering, and the no-write guarantee. An agent has everything needed to call it 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?

At 67% schema coverage the description compensates: it clarifies that `urls` sets priority order and is capped at 100, and that `name`/`summary` override the derived values. It also explains `language` behavior (one language, unprefixed default) and page limits, adding real meaning over the raw 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?

States a specific verb and artifact ('Build an llms.txt for a site') and immediately names the format standard (llmstxt.org) and its contents. No sibling tool produces this artifact, so it is unambiguous against the catalog.

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?

Explains where pages are sourced (sitemap or home page links) and recommends passing `urls` to prioritize, citing gsc_performance_overview as a concrete source. It stops short of stating when NOT to use it or naming an alternative tool, but the operational context is clear.

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

logsRead logsA
Read-onlyIdempotent
Inspect

Read a log by name for a time window, with repeated messages counted once: how many different errors there are, how often each happened, when first and last, a sample of each (with the top of its stack trace) and the latest lines. Suited to finding what went wrong in a long log. log is one of: web-error (nginx and Apache error logs, each site's own included), php (PHP and PHP-FPM, and error_log files next to the code), site (the site's own application log, whatever kind it is: Shopware and PrestaShop var/log, Laravel storage/logs, Joomla and OpenCart logs), magento (exception.log and system.log of the site, plus how many error pages visitors saw), wordpress (wp-content/debug.log), database (MySQL/MariaDB error log), system (warnings and errors in the journal), mail, auth (logins). Or give path for any other log file. match keeps only entries holding that text.

NameRequiredDescriptionDefault
logNo
pathNoAbsolute path of a log file, instead of log.
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
hoursNoHow far back. Default 24, up to 168.
matchNoOnly entries containing this text (not case-sensitive).
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description goes further by disclosing the aggregation behavior — repeated messages counted once, sample capped with the top of its stack trace, plus latest lines — which is meaningful behavioral detail beyond the annotations. It stops short of describing auth requirements or persistence.

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?

Front-loaded with the core purpose and output semantics before the long enum catalogue, and nearly every clause carries information. The enumeration paragraph is dense but justified given nine log sources; it reads as a long run-on but wastes little.

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?

No output schema exists, so the description appropriately spends effort describing the return shape (grouped/deduplicated entries, samples, latest lines). Combined with the parameter coverage and optional server/site fallbacks noted in the schema, an agent has enough to call it correctly; only auth/permission context is missing.

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?

With schema coverage at 83%, the schema already documents path/site/hours/match/server. The description nonetheless adds real value: it explains each `log` enum value individually (the one schema field lacking a description) and clarifies `path` as an alternative to `log` and `match` as a case-insensitive text filter.

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?

States a specific verb+resource ('Read a log by name for a time window') and then defines the output shape precisely (deduplicated error counts, first/last occurrence, sample with stack trace, latest lines). The enumeration of every `log` enum value with what each actually reads (nginx/Apache, PHP-FPM, Shopware/Laravel logs, etc.) makes it unmistakable against siblings.

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?

'Suited to finding what went wrong in a long log' gives a clear use context, and the log-type breakdown implicitly guides selection of which source to target. However, it never names an alternative tool (e.g. log_work) or states when not to use this, so the routing guidance stops short of explicit alternatives.

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

log_workLog finished workAInspect

Write down finished work, when a task that changed something is done: two or three plain lines (up to 800 characters) a non-technical owner understands. What you did, what changed, what is left for them. The user reads it on their Activity page and the next chat sees it in overview. No passwords or keys.

NameRequiredDescriptionDefault
serverNoServer name or id it is about. Leave out for something about the whole account, or when the account has one server.
summaryYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the write/safe/non-idempotent profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds genuine behavioral context beyond that: where the entry surfaces (Activity page, next chat overview), the 800-character cap, and the audience it is written for. It does not clarify dedup/repeat-call behavior.

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?

Three dense sentences, front-loaded with the action and trigger, followed by format/audience constraints and a short prohibition. No filler; every clause carries information.

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 2-param write tool with no output schema and annotations covering safety, the description supplies the content, audience, visibility, and limits an agent needs to call it correctly. Minor gaps remain around return behavior and duplicate handling.

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 50%: "server" is documented in the schema, but "summary" has no schema description. The description compensates well, defining the required content (what you did, what changed, what is left), length, and plain-language register for the undocumented required param.

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

Purpose4/5

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

States a specific verb and resource ("Write down finished work") and adds the trigger condition "when a task that changed something is done," so an agent can tell this is a work-progress log distinct from note-keeping siblings like save_note. It does not name a sibling explicitly, so it stops short of a 5.

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?

Gives an explicit trigger ("when a task that changed something is done") and a content exclusion ("No passwords or keys"). It never names an alternative tool or a when-not-to-use case, so no explicit routing guidance.

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

magentoRun bin/magentoA
Destructive
Inspect

Run bin/magento as the site's owner in its root, like args ["cache:flush"] or ["indexer:reindex", "catalogsearch_fulltext"]. Status commands run straight away; uninstalls, rollbacks, admin user changes and URL/head-script config need approval. Set background true for slow commands (setup:upgrade, setup:di:compile, setup:static-content:deploy, reindex) and follow with job_output.

NameRequiredDescriptionDefault
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
argsYes
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.
backgroundNo
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare destructive/openWorld/non-idempotent, and the description adds the value that annotations cannot: which command classes require user approval, which execute immediately, and which need background execution with a follow-up job_output call. That is real behavioral context beyond the structured hints.

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?

Three front-loaded sentences, each earning its place: invocation form, approval gating, then background/job_output handling. No filler and no repetition of the title.

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?

With no output schema, the description compensates by explaining the background + job_output flow and the approval_id follow-up pattern, so the async return path is covered. Minor gaps remain around error/permission behavior, but the agent has what it needs to call the tool 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 67%, and the description supplements the undocumented `args` (shape/examples) and `background` (which slow commands warrant it) parameters. It doesn't touch `why`, `site`, `server`, or `approval_id`, but those carry schema descriptions, so the added meaning over the schema is meaningful without being complete.

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

Purpose4/5

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

States a specific verb and resource (run bin/magento as the site's owner in its root) and backs it with two concrete argument examples, so an agent immediately knows this executes Magento's own CLI. It does not explicitly distinguish itself from the generic `run` or `wp` siblings, which keeps it short of a 5.

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?

Gives clear operational context: status commands run straight away, while uninstalls/rollbacks/admin user changes/URL-head-script config need approval, and it routes slow commands to `background` plus `job_output`. It stops short of telling the agent when to pick this over the generic `run` or `wp` tools.

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

malware_scanScan a site for malwareAInspect

Quick malware check of a site (most thorough for Magento and WordPress; for the other kinds list_sites shows it checks the files, upload folders, cron and processes, not the database): backdoor patterns in PHP, PHP in upload folders, disguised and hidden PHP, recently changed code, scripts injected into the database (Magento design/head/includes, CMS blocks; WordPress options and posts), recent admin users, suspicious cron entries and processes, WordPress checksums, and 130 maintained rules: signatures of known skimmers and backdoors in files and stored content, Magento security patches that are missing, modules with known vulnerabilities, leftover archives and database tools, programs and cron jobs posing as system services. It runs in the background (about a minute per 40,000 files) and returns a job_id: call job_output with offset 0 until status is finished; the output is the JSON report. Findings are leads to read, not proof. Read the files it names before concluding anything.

NameRequiredDescriptionDefault
daysNoHow far back counts as recently changed. Default 14.
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the asynchronous job model, a concrete throughput estimate ('about a minute per 40,000 files'), the polling protocol, that the output is a JSON report, and an important epistemic caveat that findings are leads requiring file inspection. This is exactly the operational context annotations cannot convey.

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

Conciseness3/5

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

Purpose is front-loaded, but the body is one enormous run-on sentence with nested parentheses and long comma lists, which is hard to parse at a glance. Most content is substantive, yet the Magento/WordPress coverage parenthetical is dense enough to obscure the operational instructions that follow.

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 fully carries the return-value burden: it explains the job_id indirection, how to poll job_output, that the payload is a JSON report, and how to treat findings. Combined with coverage of runtime and scanning scope, an agent has everything needed to invoke and interpret the tool correctly.

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 all three parameters are already documented in the schema (days, site, server, with optionality rules). The description adds only indirect meaning ('recently changed code' gestures at days) and does not clarify formats, defaults, or domain-vs-path resolution beyond what the schema states. Baseline 3 applies.

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?

States a specific verb and resource ('Quick malware check of a site') and then enumerates concretely what is inspected: backdoor patterns in PHP, PHP in upload folders, injected scripts in the database, admin users, cron entries, WordPress checksums, 130 rules including skimmer signatures and missing Magento patches. An agent can tell this apart from sibling tools like site_audit or health_report without opening any schema.

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?

Gives a clear operating context and an explicit follow-up workflow: it runs in the background and 'returns a job_id: call job_output with offset 0 until status is finished.' It also tells the agent how to interpret results ('findings are leads to read, not proof. Read the files it names before concluding anything') and points at list_sites for site discovery. It never explicitly says when to prefer this over site_audit/health_report, so it stops short of a 5.

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

merchant_accountsMerchant Center accountsA
Read-onlyIdempotent
Inspect

The Google Merchant Center accounts the user's connected Google account can see (sub-accounts of a multi-client account included), with their ids. Call this first for Shopping and free listing questions.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, openWorld and non-destructive, so the safety profile is handled. The description still adds value beyond them: it discloses the authorization scope (accounts the user's connected Google account can see) and that ids are part of the response, both of which matter for chaining. It does not discuss pagination or listing behavior for very large account sets.

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 tightly packed sentences with zero filler. The resource and its scope come first, and the usage directive is placed after, which lets the agent read the identity before the instruction.

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?

With no output schema, the description should carry the return-shape burden, and it does at a high level by noting the accounts come with their ids. It is complete enough for a zero-input discovery tool, though it omits whether a not-connected state is returned and how large result sets behave.

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 takes zero parameters and schema coverage is 100%, so no parameter documentation is needed. The description correctly does not invent inputs and instead uses the space to describe the scope of the result set. Baseline 4 applies for a parameterless tool.

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

Purpose4/5

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

The description names the specific resource (the Google Merchant Center accounts visible to the connected Google account) and adds scope detail, clarifying that sub-accounts of a multi-client account are included and that ids are returned. It is not a bare tautology of the title. It stops short of naming its Merchant siblings (merchant_products, merchant_issues) to differentiate explicitly, but the resource is 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?

"Call this first for Shopping and free listing questions" gives explicit sequencing guidance, implying this discovery call precedes the other Merchant tools that need account ids. It establishes context well but does not name the downstream tools or state any exclusions, so it lands just below the top tier.

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

merchant_issuesWhy products are not showing on Google ShoppingA
Read-onlyIdempotent
Inspect

Why products are not showing in Google Shopping ads and free listings: per destination and country the number of products active, pending, disapproved and expiring, the account's own issues (suspensions, missing settings, website claims), and the product issues grouped by kind with how many products each hits, how severe it is, Google's explanation and help link. Read only.

NameRequiredDescriptionDefault
accountNoMerchant Center account id or name. Optional when there is one.
countryNoOnly this country, two letters (US, GB, DE...).

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), and the description's 'Read only' merely restates that. What it does add is substantive: the exact categories of data returned (counts per destination/country, account issues such as suspensions/missing settings/website claims, product issues with severity, Google's explanation and help link). With no output schema, that disclosure is genuinely useful, though it says nothing about auth scopes, rate limits, or result size.

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?

It is a single dense sentence, but front-loaded with the core question and then a scannable enumeration of report contents; every clause maps to real output. Slightly run-on, with the 'Read only' tag tacked on redundantly after the annotations already say it.

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 read-only report with no output schema, the description effectively serves as the return-value contract by listing every category of data the agent will get. Combined with annotations covering the safety profile, an agent has what it needs to decide to call it and to interpret the result.

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% for both parameters, so the schema already explains 'account' (optional when there is one) and 'country' (two-letter code). The description echoes the dimensions ('per destination and country', 'the account's own issues') but adds no syntax, defaults, or format detail beyond the schema. Baseline 3 applies.

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 states a specific diagnostic resource (why products are not showing in Google Shopping) and enumerates exactly what it reports: per-destination/country counts of active, pending, disapproved and expiring products, account-level issues, and product issues grouped by kind with severity. This clearly separates it from siblings like merchant_products (product listing) and merchant_accounts (account listing) without needing to name them.

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?

Usage is implied by the framing question 'Why products are not showing in Google Shopping', so an agent can infer the right context. However there is no explicit when-to-use guidance, no statement of when to prefer merchant_products or merchant_accounts instead, and no prerequisites or exclusions.

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

merchant_productsMerchant Center products and their issuesA
Read-onlyIdempotent
Inspect

Products in Merchant Center with their issues: offer id, title, link, and each issue with severity, the attribute concerned, where it applies and Google's explanation. By default only products with issues; issue keeps those with that issue code (from merchant_issues); search matches title or offer id. Read only; fix the feed or the site, then Google rechecks.

NameRequiredDescriptionDefault
allNoAlso products without issues.
issueNoAn issue code from merchant_issues, like image_too_small or price_mismatch.
limitNoDefault 50, max 250.
searchNo
accountNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld. The description reinforces the safety profile ('Read only') and adds genuine behavioral context beyond the annotations: the tool diagnoses only, and remediation happens externally before Google rechecks. It does not describe pagination or rate behavior.

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?

A single dense paragraph front-loads the returned fields before the parameter behavior, which is the right ordering. It is tight with no filler, though the run-on enumeration of issue fields slightly taxes readability.

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?

There is no output schema, but the description enumerates the return shape (offer id, title, link, and per-issue severity, attribute, applicability, explanation), so an agent knows what comes back. Combined with parameter and workflow notes, it is nearly complete; only 'account' scoping is unaddressed.

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?

With 60% schema coverage, the description meaningfully compensates: it explains 'all' (include products without issues), 'issue' (filter to one issue code from merchant_issues), and 'search' (matches title or offer id). Only 'account' is left unexplained in both places, a minor gap.

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 precisely states the resource (Merchant Center products) and enumerates the returned fields (offer id, title, link, per-issue severity/attribute/scope/explanation), so an agent knows exactly what this tool surfaces. It also references the sibling merchant_issues as the source of issue codes, distinguishing itself from that tool.

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?

It clearly explains the default behavior ('by default only products with issues') and the effect of the issue and search parameters, plus the workflow ('fix the feed or the site, then Google rechecks'). It stops short of explicit when-not guidance or naming a direct alternative tool, so it is strong but not exhaustive.

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

overviewOverview of servers and problemsA
Read-onlyIdempotent
Inspect

Start here. One call shows where everything stands: the plan, every server (online or not, root or limited access, safety mode, paused, its sites), the open problems and warnings AskYourStack's own monitoring found (disk, memory, failed services, SSL certificates, a site not answering, a possible bot attack, a server offline, waiting updates), approvals waiting for the user, and the connected Google Search Console and Analytics properties. Call it at the start of a chat, and whenever the user asks what is wrong, what needs attention or how their servers are doing.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false). The description earns credit by adding value beyond them: it discloses the breadth of data surfaced, including that it pulls in AskYourStack's own monitoring findings and connected third-party properties. It doesn't state rate limits or auth needs, but for a read-only summary that is minor.

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?

'Start here.' is front-loaded and sets priority immediately, followed by a structured enumeration of returned content and usage triggers. The long parenthetical list of problem types is dense but each item adds informational value rather than padding, so it is appropriately sized for a broad overview tool.

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 and no parameters, the description carries the return-value burden and does so thoroughly: it enumerates the categories of data returned. Combined with annotations covering safety, 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.

Parameters4/5

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

The tool takes zero parameters, so there is nothing to document and the baseline is 4. No parameter guidance is needed or missing.

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?

States a specific purpose — a single-call status overview — and then enumerates exactly what it returns (plan, servers with access/mode/pause state, monitoring problems, pending approvals, connected GSC/Analytics properties). An agent can distinguish it from siblings like list_servers or health_report purely from the description.

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?

Gives explicit triggers: 'Call it at the start of a chat, and whenever the user asks what is wrong, what needs attention or how their servers are doing.' That is clear when-to-use guidance. It does not name alternatives or exclusions (e.g., when to prefer list_servers or health_report instead), so it stops short of a 5.

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

page_auditAudit pagesA
Read-onlyIdempotent
Inspect

On-page SEO audit of 1 to 10 URLs (any site, competitors too): status and redirect chain (hops, 302s, loops), response headers (X-Robots-Tag, cache, compression, CDN cache status), title and meta description with lengths, robots meta, canonical (self or elsewhere), hreflang, h1 and heading outline, Open Graph, image alt coverage, internal/external/nofollow link counts, main-content word count, structured data types, lang and viewport; plus a list of issues per page. check_variants also tests that http/https and www/non-www reach one address in one redirect. as_googlebot fetches with Googlebot's user agent (to catch cloaking or bot rules).

NameRequiredDescriptionDefault
urlNo
urlsNoUp to 10.
as_googlebotNo
check_variantsNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the safe-read profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description adds real operational context beyond them: the 1–10 URL cap, the fact that it fetches any site including competitors, variant/redirect-loop detection, and the Googlebot user-agent fetch that can reveal cloaking.

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?

Front-loaded with the core purpose, and the long enumeration of audited attributes is dense but each element is a distinct, useful check. It runs as one heavy run-on paragraph, so a modest structural cost, but there is little genuine filler.

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?

With no output schema, the description carries the burden of describing returns, and it does so by listing the per-page findings (issues list, redirect chains, headers, headings, links, structured data). Only the exact shape/format of the response is left unstated, which is a minor residual gap.

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 only 25% — only the urls array ("Up to 10.") is documented — yet the description compensates by explaining check_variants and as_googlebot in behavioral detail and stating the 1-to-10 URL bound that governs both url and urls. This substantially fills the gap left by the bare 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?

States a specific verb and resource ("On-page SEO audit of 1 to 10 URLs") and immediately scopes it (any site, competitors too), which cleanly separates it from site-wide siblings like site_audit. The enumeration of what it examines makes the tool's function unmistakable without opening the schema.

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?

Usage context is implied rather than stated: the description explains why check_variants (http/https, www/non-www) and as_googlebot (catches cloaking/bot rules) would be used, which reads as when-to-use guidance for those flags. However, it never names an alternative or says when NOT to use this tool versus gsc_inspect_url or site_audit, so routing is left to inference.

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

page_contentRead a page's contentA
Read-onlyIdempotent
Inspect

The main content of a page as clean text with markdown headings (navigation, header, footer, sidebars, cookie bars and scripts removed) and its word count. Use it to review or compare content (yours or a competitor's), check keyword use, or write an improved version.

NameRequiredDescriptionDefault
urlYes
max_charsNoDefault 20000, max 60000.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent and non-destructive behavior, so the safety profile is covered. The description adds genuine behavioral context beyond that: exactly what is removed during extraction (navigation, header, footer, sidebars, cookie bars, scripts), the markdown heading format, and the word-count output. It does not mention truncation behavior relative to max_chars.

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?

Two tight sentences: the first front-loads what the tool returns, the second covers when to use it. No filler, though the parenthetical list of stripped elements is slightly long.

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?

With no output schema, the description correctly carries the return-value burden by describing the cleaned text, markdown headings and word count. Annotations cover safety. The main remaining gap is that the url parameter and truncation behavior against max_chars are left to the 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 description coverage is only 50%: max_chars is documented ('Default 20000, max 60000') while url is undocumented. The description adds no parameter-level detail, offering nothing about URL format or truncation semantics, so it does not compensate for the coverage gap.

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

Purpose4/5

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

The description specifies the resource (a page's main content) and the precise output form (clean text with markdown headings, boilerplate stripped, plus a word count), which clearly separates it from link- or audit-style siblings like page_links or page_audit. It stops short of naming an alternative tool, so it is clear but not fully differentiated from siblings.

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?

It gives concrete when-to-use guidance: reviewing or comparing content (own or competitor's), checking keyword use, or drafting an improved version. There is no explicit when-not or named alternative, but the usage context is unambiguous.

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

propose_planAsk approval for a planAInspect

When a job has several risky steps (deleting folders, dropping tables, changing SSH or closing access in the firewall, a reboot), list the exact calls you mean to make and ask for the user's approval once, instead of stopping at each one. steps: [{tool, args, why}] with tool one of run, start_job, write_file, db_query, magento, wp, rollback and args exactly as you will pass them later; why is one plain sentence for the user. The answer says which steps need approval and gives one link for the user. After they approve, make each call exactly as written (an approved step runs once, within 2 hours); steps that need no approval just run. Nothing in a plan runs by itself, and a changed step needs a new approval.

NameRequiredDescriptionDefault
stepsYes
titleNoWhat the plan achieves, in a few words, like: Remove the old shop and its database.
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare non-readonly/non-idempotent/non-destructive, but the description adds rich behavior: nothing runs automatically, approved steps run once within a 2-hour window, non-approval steps just run, and a changed step requires re-approval. It also describes the response shape (which steps need approval plus one user link), well beyond what the structured fields convey.

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 trigger condition is front-loaded and each sentence carries real information about the approval lifecycle. It is dense but slightly long, with parameter semantics embedded mid-paragraph rather than cleanly separated, costing it a perfect score.

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 still explains what the answer returns (approval-needed steps and a link). For a tool that only proposes rather than executes, the lifecycle, timing window, and re-approval rules make it complete for correct invocation.

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 description explains the steps array structure ({tool, args, why}), clarifies that 'why' is one plain sentence for the user, and that args must match later invocations — meaningful semantics beyond the schema. However, it omits the 'title' and 'server' parameters, and its tool enum list drops 'site_console' which the schema includes, so coverage (67%) is not fully compensated.

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 states a specific action (list the exact calls and ask for approval once) and scope (jobs with several risky steps), with concrete examples of risky operations (deleting folders, dropping tables, firewall changes). An agent can distinguish this batching/approval tool from per-step execution siblings like run, start_job, and wait_for_approval.

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 trigger is given ('When a job has several risky steps... ask for the user's approval once, instead of stopping at each one'), which also names the alternative behavior (per-step approval). The post-approval workflow ('make each call exactly as written') is spelled out, leaving no inference about when to choose this path.

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

read_fileRead a fileB
Read-onlyIdempotent
Inspect

Read a file (up to 1 MB). Binary files come back base64.

NameRequiredDescriptionDefault
pathYes
serverNoServer name or id. Optional when the account has one server.

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new context: a 1 MB size cap and the fact that binary content is returned base64-encoded, which materially affects how an agent interprets the result.

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 tight clauses, front-loaded with the core action and immediately followed by the size limit instead of burying it. Zero wasted words.

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?

Adequate for a simple read tool whose annotations carry the safety story, and the size/encoding notes are helpful. But with no output schema and an undescribed required path parameter, the description leaves gaps around path resolution and failure behavior for missing or oversized files.

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

Parameters2/5

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

Schema coverage is only 50%, and the undescribed parameter is the required 'path'. The description adds nothing about path format (absolute vs. relative, sandbox root) or the optional 'server' selector, leaving half the parameters undocumented in both places.

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

Purpose4/5

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

States a specific verb and resource ("Read a file") with a concrete constraint. It doesn't differentiate itself from nearby siblings like content_get or page_content, so an agent must infer which read tool applies to which resource.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of alternatives such as content_get or page_content, and no prerequisites. The agent gets no signal about when reading a raw file is preferred over the content tools.

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

redirects_applyWrite redirectsA
Destructive
Inspect

Write redirects (from a path, to a path or full address, code 301 or 302) into the site's redirect store: Magento url_rewrite, or the WordPress Redirection or Rank Math plugin. With dry_run left at true (the default) it only shows what would be written. On a site without a redirect store it returns the nginx and Apache lines to place with write_file instead. Every redirect is one path to one address; no patterns. Answers with a batch id for redirects_undo.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
serverNoServer name or id. Optional when the account has one server.
changesYesFor apply.
dry_runNoFor apply. Default true: preview only.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false, openWorld=true and non-idempotent, so the safety profile is covered. The description adds genuinely new context: the dry-run default, the batch id returned for later undo, and the fallback behavior on hosts lacking a redirect store — but it doesn't say whether existing redirects are overwritten or how conflicts are handled.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the action and scope, then preview behavior, then the fallback case, then the return value. No filler or repetition of the schema.

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?

With no output schema, the description correctly discloses the return (batch id) and the alternate return (nginx/Apache lines) — the two things an agent must know to act on the result. For a destructive write tool it could still say more about permissions or overwrite semantics, but the essentials are present.

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 earns above that by adding semantics the schema lacks — 'no patterns' (one path to one address), the 301 default vs 302, and that 'to' may be a site path or a full address. It doesn't mention the required 'changes' array wrapper explicitly, but the field semantics are clear.

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?

States a specific verb+resource (write redirects) and immediately scopes it: from-path → to-path/address, code 301 or 302, into a named redirect store (Magento url_rewrite, WordPress Redirection/Rank Math). It is clearly separable from siblings like redirects_list, redirects_find, and redirects_undo.

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?

Gives concrete when-behavior (dry_run defaults to true and previews only) and routes the agent to an alternative path (returns nginx/Apache lines to use with write_file when no redirect store exists). It also points to redirects_undo for reversal, though it never explicitly says when to use redirects_find/list first to check for conflicts.

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

redirects_findFind gone pages that need a redirectA
Read-onlyIdempotent
Inspect

Find the paths of a site on the user's server that answer 404: from the crawler hits in its access logs (the last hours, default 168) and, when Search Console is connected, pages that had clicks in the last 90 days and are gone now. Each comes with its hits and a suggested target from the site's sitemap. Changes nothing.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
hoursNoFor find: how far back in the logs, 1 to 168 (default 168).
serverNoServer name or id. Optional when the account has one server.
min_hitsNoFor find: only paths with at least this many 404 hits in the logs (default 2).

TDQS

A4.1/5.0
Behavior4/5

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

Side-effect is summarized ('Changes nothing'). More importantly it discloses behavior the annotations cannot: the two discovery sources, the 90-day Search Console click window, the log-scoped hours window, and that each result carries hits plus a sitemap-derived suggested target.

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?

Front-loaded with the core purpose, then sources and constraints, ending on the no-mutation guarantee. Two dense sentences with no filler or repeated schema content.

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 and only four anonymous parameters, the description still explains what each result contains (hits and a suggested target), where data comes from, and the defaults. An agent has enough to call it correctly and interpret the response.

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 the schema already documents site, hours, server and min_hits. The description restates the hours default (168) and implies min_hits filtering but adds no syntax or semantics beyond the schema, so baseline 3 applies.

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?

Specific verb+resource+scope: 'Find the paths of a site on the user's server that answer 404'. It names its two data sources (crawler access logs and Search Console) and distinguishes itself from the redirects_apply/redirects_list siblings by being the discovery step that 'changes nothing'.

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?

Usage is implied rather than explicit: it's clearly the diagnostic step that precedes redirect creation, and 'Changes nothing' signals it is safe to run first. But no sibling (e.g. redirects_list, redirects_apply) is named as an alternative and no explicit when/when-not condition is stated.

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

redirects_historyRedirect batches writtenA
Read-onlyIdempotent
Inspect

The batches of redirects written on a site in the last 90 days, each with its redirects and whether it was undone. Changes nothing.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
serverNoServer name or id. Optional when the account has one server.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so 'Changes nothing' is largely redundant with the structured fields. However, the description adds the 90-day retention window and describes the returned content (batches plus their redirects and undo status), which the annotations do not cover and which matters given there is no output schema.

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?

A single well-formed sentence that front-loads the resource and time window, then the return shape, then the safety note. Every clause carries information and nothing is wasted.

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 listing tool with no output schema, the description covers scope, time window, and returned fields adequately. It stops short of noting pagination/result limits or explicitly tying the 'undone' status to the redirects_undo sibling, which would have made it fully complete.

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 both parameters (site, server) are already documented in the schema, including the 'optional when...' conditions. The description only implies site scoping via 'on a site' and adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific resource (batches of redirects written) with a clear scope (last 90 days) and content shape (each with its redirects and undo status). It distinguishes itself implicitly from redirects_list/redirects_find by being the historical view, though it never names a sibling explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance or routing to alternatives. With redirects_list, redirects_find, redirects_apply, and redirects_undo as siblings, the agent gets no signal about when this history view is preferable to, say, redirects_list. Usage is only implied by the word 'history'.

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

redirects_listList a site's redirectsA
Read-onlyIdempotent
Inspect

The custom redirects a site holds: Magento's url_rewrite table, or WordPress with the Redirection or Rank Math plugin. Changes nothing.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
serverNoServer name or id. Optional when the account has one server.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so "Changes nothing" largely restates structured data. The one piece of genuine added context is the source disclosure (Magento url_rewrite vs Redirection/Rank Math plugins), but nothing is said about permissions, pagination, or result shape.

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?

A single compact sentence with the resource and source qualifiers front-loaded and zero filler. It is appropriately sized, though the trailing "Changes nothing" is slightly redundant with the annotations.

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, zero-required-parameter list tool with full schema coverage and no output schema, the description supplies enough to call it correctly. Pagination and result formatting are unstated, but with no output schema that gap is minor.

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% for both the site and server parameters, including their optionality conditions, so the schema carries parameter meaning. The description adds no further semantics about these parameters, which is the expected baseline when coverage is complete.

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

Purpose4/5

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

The description identifies the resource (a site's custom redirects) and, unusually, the underlying data sources it reads from (Magento's url_rewrite table; WordPress Redirection or Rank Math plugins). That is a clear verb-implied resource statement, but it never explicitly names a sibling like redirects_find or redirects_history for differentiation.

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?

"Changes nothing" implies this is the safe read-only counterpart to redirects_apply/redirects_undo, which is useful implied guidance. However, there is no explicit statement of when to use this versus redirects_find or redirects_history, so the agent must infer the split.

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

redirects_undoRemove a batch of redirectsA
Destructive
Inspect

Remove the redirects one redirects_apply batch wrote. batch is the id from redirects_apply or redirects_history.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
batchYesFor undo: the batch id from apply or history.
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and non-idempotency, so the safety profile is carried. The description adds the valuable scoping detail that destruction is limited to the redirects one apply batch wrote, which is the key behavioral fact an agent needs before calling it. It stops short of saying what happens on a re-run of an already-undone batch or whether manually edited redirects in that batch are affected.

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 short sentences, zero filler, and the destructive action plus its scope is front-loaded before the parameter provenance. Every clause 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?

With no output schema and only three parameters, the definition covers the essentials: what is removed, its scope, and where the required id comes from. Residual gaps (post-undo state, error behavior on stale batch ids) are modest given the annotations already flag destructiveness.

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 the schema already documents site, batch, and server. The description only restates the batch parameter, though it sharpens 'apply or history' into the concrete tool names redirects_apply and redirects_history. That earns the baseline 3 rather than more.

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?

States a specific verb (remove), a precise resource (the redirects written by one redirects_apply batch) and the scope limitation that defines the operation. It names the sibling tools (redirects_apply, redirects_history) that the batch id comes from, so an agent can distinguish it from redirects_apply, redirects_history, and redirects_list without opening a schema.

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: use this to reverse a specific apply batch, and it explains exactly where the required batch id comes from (redirects_apply or redirects_history). It does not state exclusions or alternatives (e.g., how this differs from rollback or seo_fields_undo, or what to do if the batch was already undone), so it falls short of a full when/when-not treatment.

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

robots_checkCheck robots.txtA
Read-onlyIdempotent
Inspect

Fetch a site's robots.txt and test paths against it the way Google does (most specific user-agent group, longest rule wins, Allow wins a tie, * and $ wildcards), for Googlebot, Bingbot and AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) or the user agents you pass. Also reports the sitemaps it declares and what a missing or failing robots.txt means.

NameRequiredDescriptionDefault
siteYesAny URL on the site.
pathsNoPaths or URLs to test, up to 100.
user_agentsNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description goes further by disclosing the matching semantics (most specific UA group, longest rule wins, Allow wins ties, * and $ wildcards). It also notes that missing or failing robots.txt behavior is reported, adding real behavioral context 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.

Conciseness4/5

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

A single dense paragraph that front-loads the core action and matching semantics before covering inputs and secondary outputs. Every clause carries information, though the parenthetical agent list makes it slightly heavy for a one-sentence structure.

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?

With no output schema, the description correctly takes on the burden of describing return content: path test results, declared sitemaps, and missing/failing robots.txt interpretation. It is nearly complete for a read-only open-world tool, with only the exact result format left implicit.

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 schema documents 'site' and 'paths' but leaves 'user_agents' empty; the description compensates by enumerating the supported agents (Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, Google-Extended) and noting custom agents can be passed. This adds meaning the 67%-coverage schema does not carry.

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?

States a specific verb+resource ('Fetch a site's robots.txt and test paths against it') and immediately distinguishes itself from siblings like llms_txt or sitemap_check by naming the exact matching algorithm used. An agent knows exactly what this tool does without opening the schema.

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 explains what gets tested and which user agents are available, which implies the use case, but never states when to reach for this tool versus related siblings such as sitemap_check, llms_txt or page_audit. No explicit when-to-use or when-not-to-use guidance is provided.

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

rollbackRoll back to a snapshotA
Destructive
Inspect

Write a snapshot's files back (all of it, or only some paths). Saves the current state first, so a rollback can itself be undone. Files created after the snapshot are left alone; database dumps are not loaded (use run).

NameRequiredDescriptionDefault
idYes
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
pathsNo
serverNoServer name or id. Optional when the account has one server.
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag destructive/not-idempotent, and the description adds genuinely new behavior beyond them: current state is saved first so the rollback itself is reversible, files created after the snapshot are left untouched, and DB dumps are excluded. These are exactly the side-effect details an agent needs before invoking a destructive tool.

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?

Three short sentences, all load-bearing: the action, the reversibility guarantee, and the two exclusion rules. The scope statement is front-loaded and nothing is wasted.

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 destructive mutation with no output schema, the description covers reversibility, scope, and exclusion rules, which is most of what an agent needs. It leaves the multi-server 'server' parameter and the approval_id re-call flow to the schema, a minor gap rather than a blocking one.

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 60%, so the schema already documents 'why', 'server', and 'approval_id'. The description only adds meaning for 'paths' (partial selection) and hints at the approval flow; it says nothing about 'server' or 'approval_id' beyond what the schema provides. 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?

States a specific verb ('write ... back') on a specific resource (a snapshot's files) and scopes it ('all of it, or only some paths'). It is clearly distinguishable from the sibling 'snapshot' (create) and from 'run', which it explicitly names as the alternative for database dumps.

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?

Gives a concrete when-not rule with the alternative tool: 'database dumps are not loaded (use run)'. It also implies the partial-vs-full choice via the 'paths' param. It stops short of routing against the other undo-style siblings (cf_undo, content_undo, redirects_undo), so not a full 5.

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

runRun a commandA
Destructive
Inspect

Run a shell command (bash -c) as the user the agent runs as: root for a root agent, otherwise the site owner. No terminal, no stdin. Returns exit code, stdout and stderr (long output keeps the first 16 KB and last 48 KB). Destructive commands need the user's approval.

NameRequiredDescriptionDefault
cwdNoWorking directory, absolute.
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
serverNoServer name or id. Optional when the account has one server.
commandYes
timeout_sNoDefault 120, max 1800.
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructiveHint, openWorldHint and readOnlyHint=false, but the description adds facts the annotations cannot express: the privilege level the command runs under, the absence of a TTY and stdin, the exact return shape (exit code, stdout, stderr), and the truncation policy (first 16 KB and last 48 KB of long output). The approval requirement is consistent with, and elaborates on, destructiveHint.

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 short sentences, front-loaded with what the tool does and under whose identity, followed by I/O limits and the approval gate. No sentence is redundant and nothing is buried.

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?

With no output schema, the description correctly supplies the return contract (exit code, stdout, stderr, truncation). It does not cover what happens on timeout (timeout_s defaults to 120, max 1800) or how a call that hits the approval gate is retried, leaving a small but real gap for a high-risk execution 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 83%, with the required 'command' parameter being the one left undescribed. The description compensates by establishing that the command is passed to 'bash -c' with no stdin, which is real semantic information about how the input is interpreted and not repeated from 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 names a specific verb and resource ('Run a shell command (bash -c)') and pins the execution identity ('root for a root agent, otherwise the site owner'), which no sibling tool provides. An agent can distinguish this general shell escape from read_file/write_file/db_query without opening the schema.

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?

It states constraints ('No terminal, no stdin') and a gating rule ('Destructive commands need the user's approval'), which implies when the tool is usable. However, it never routes the agent away from itself toward more targeted siblings such as read_file, write_file, or db_query, so the choice of this tool over those is left to inference.

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

save_noteSave a noteA
Destructive
Inspect

Remember something for future chats about a server (or the whole account): what is special about it, how it is set up, what must not be touched, a decision the user made. overview shows the notes at the start of every chat, so keep each one short (up to 500 characters), factual and worth reading again; update an outdated note by passing its id as replaces instead of adding another. Never put a password, key or token in a note: say where it is kept instead.

NameRequiredDescriptionDefault
noteYes
serverNoServer name or id it is about. Leave out for something about the whole account, or when the account has one server.
replacesNoId of the note this one replaces (from overview).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds real behavioral context beyond that: notes are shown by overview at the start of every chat (so they are persistent and visible), a 500-character practical limit, and a security constraint forbidding secrets. It does not explicitly explain that replaces overwrites/destroys the prior note, which is why the destructive flag is set, so it stops short of a 5.

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?

Purpose and audience come first, then the side effect (shown by overview), then the update path and the security rule. It is dense but each clause carries information; the single long clause about short/factual notes is doing several jobs at once but is not filler.

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?

With no output schema and annotations covering the safety profile, the description needs to explain content rules, persistence, and the replace workflow, and it largely does. The main residual gap is not explaining what the tool returns (e.g. the new note id) and not pointing to forget_note for removal.

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 67%, with server and replaces already described in-schema. The description adds meaning the schema lacks: the note body's purpose, the 500-character limit, the security prohibition, and the workflow intent of replaces. Only the server parameter's 'leave out for whole account' nuance is left entirely to 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?

States a concrete verb+resource ('remember something... about a server') plus the exact kinds of content it holds (setup, constraints, decisions). The scope is bounded to notes surfaced by overview, and the update path ('pass its id as replaces instead of adding another') separates it from simply adding more notes, so an agent can distinguish it from siblings like forget_note or overview.

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?

It says what to record, when to update rather than add ('update an outdated note by passing its id as replaces instead of adding another'), and what never to record (credentials). It lacks an explicit routing statement to the forget_note sibling for deletion, so it falls short of full when/when-not/alternatives coverage.

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

seo_fields_applyChange SEO titles, descriptions and alt textsA
Destructive
Inspect

Set SEO titles, meta descriptions or image alt texts on a WordPress site or a Magento 2 shop, up to 30 fields a call, by the ids seo_fields_list gave. With dry_run left at true (the default) it only shows what would change; with dry_run false it writes them and answers with a batch id. The values it replaces are kept 90 days, and seo_fields_undo with that batch puts them back.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
typeNoWordPress, for list: post, page, product, attachment, or any other post type (default: posts, pages and products). Magento, for list and apply: product (default), category, page or image.
serverNoServer name or id. Optional when the account has one server.
changesYesFor apply.
dry_runNoFor apply. Default true: preview only.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint/readOnlyHint/idempotent, but the description adds materially new behavior: a 30-field-per-call batch limit, that dry_run=true is the default and only previews, that committed runs return a batch id, and that replaced values are retained 90 days and restorable via seo_fields_undo. That is exactly the extra context annotations cannot carry.

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, front-loaded with the action and object, then escalating to preview behavior, batch id, and undo window. No filler; every clause carries operational information.

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 still tells the agent what a write returns (a batch id) and how to reverse it (seo_fields_undo, 90-day window). Combined with the parameter coverage and destructive annotations, nothing needed to invoke this correctly is missing.

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 meaning the schema lacks: the provenance of the 'id' values (from seo_fields_list), the 30-item cap on 'changes', and the preview-vs-write semantics of 'dry_run'. It does not explain the 'site'/'server'/'type' interplay 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?

States a specific verb and resource ('Set SEO titles, meta descriptions or image alt texts') plus the two supported platforms (WordPress, Magento 2). It clearly separates itself from seo_fields_list (source of ids) and seo_fields_undo (revert), so an agent can pick the right tool without opening sibling schemas.

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?

It ties usage to the sibling workflow ('by the ids seo_fields_list gave') and names the recovery path (seo_fields_undo with the batch). It also spells out the dry_run default, which is the key decision point for previewing vs committing. It never states an explicit when-not condition, so it stops short of a 5.

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

seo_fields_historySEO field change historyA
Read-onlyIdempotent
Inspect

The batches of SEO title, description and alt text changes made on a site in the last 90 days, with what each changed and whether it was undone. Changes nothing.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
serverNoServer name or id. Optional when the account has one server.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and the description usefully reinforces this with 'Changes nothing'. It also adds non-annotation context: the 90-day retention window, batch grouping, and that undone status is included.

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?

One sentence plus a short safety clause; the 90-day window and batch scope are front-loaded and every clause 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?

With no output schema, the description partly shoulders the return-value burden by describing batches, per-change detail, and undo status, which is what an agent needs to decide relevance. It could go further by signaling the identifiers needed to feed seo_fields_undo, but it is otherwise adequate.

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%, and both parameters (site, server) are already documented in the schema, so the description carries no extra parameter burden. It adds no syntax or defaulting advice beyond the schema, which is the correct baseline for a fully-covered 2-param tool.

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

Purpose4/5

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

States a concrete resource (batches of SEO title/description/alt-text changes on a site) and the scope (last 90 days). It is clearly a read/history tool, distinct from seo_fields_apply or seo_fields_undo, though it never names those siblings explicitly.

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?

Usage is implied by the word 'history' and 'Changes nothing', but there is no explicit when-to-use guidance or routing against adjacent tools like seo_history, content_undo, or seo_fields_undo (which presumably consumes the batch ids returned here).

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

seo_fields_listList SEO titles, descriptions and alt textsA
Read-onlyIdempotent
Inspect

List the SEO titles, meta descriptions or image alt texts of a WordPress site (Yoast SEO, Rank Math, SEOPress or The SEO Framework) or a Magento 2 shop (products, categories, CMS pages and product images at the default store scope), with their current values. missing keeps only entries without that field. Changes nothing.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
typeNoWordPress, for list: post, page, product, attachment, or any other post type (default: posts, pages and products). Magento, for list and apply: product (default), category, page or image.
limitNoFor list. Default 50, max 200.
offsetNo
searchNoFor list: only entries whose title holds this text.
serverNoServer name or id. Optional when the account has one server.
missingNoFor list: only entries without this field.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description usefully reinforces this ('Changes nothing') and adds scope nuance (Magento defaults to the default store scope), but says nothing about auth requirements, result volume or pagination behavior beyond the schema's limit field.

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?

Two sentences, front-loaded with the core verb and resource, and free of filler. The parenthetical plugin and entity lists make the second sentence dense, but every clause carries real scoping information.

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 7-parameter, zero-required, read-only list tool with no output schema, the description covers platform support, entity coverage, the missing-filter behavior and the no-mutation guarantee. Pagination and search semantics live in the schema, which is acceptable here.

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 already 86%, which sets the baseline at 3. The description restates the meaning of 'missing' ('keeps only entries without that field') and clarifies the WordPress-vs-Magento list semantics, but adds little beyond what the schema's own parameter descriptions already provide.

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?

States a specific verb ('List') and resource ('SEO titles, meta descriptions or image alt texts'), then bounds the scope by platform (WordPress with four named SEO plugins, or Magento 2 with products/categories/CMS pages/images). An agent can immediately separate this read tool from the mutating siblings seo_fields_apply and seo_fields_undo.

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?

'Changes nothing' makes the read-only context explicit and the 'list' verb implies this is the inspection step before seo_fields_apply. It never explicitly names apply/history/undo as the alternatives, so it falls just short of the 5-level routing guidance.

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

seo_fields_undoUndo a batch of SEO field changesA
Destructive
Inspect

Put back the values a seo_fields_apply batch replaced (kept 90 days). batch is the id from seo_fields_apply or seo_fields_history.

NameRequiredDescriptionDefault
siteNoSite root folder or one of its domains. Optional when the server has one site.
batchYesFor undo: the batch id from apply or history.
serverNoServer name or id. Optional when the account has one server.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered structurally. The description adds real value on top: it specifies exactly what is restored (the values replaced by a batch) and the 90-day retention limit, which is the key constraint an agent must know before invoking. It does not say what happens when the window has passed or if the batch was already undone, so it is not a 5.

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 compact sentences with zero filler; the action and its scope lead, and the batch-id sourcing follows. Every clause 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 destructive mutation tool with no output schema, the description covers the essential facts: what is restored, that it derives from a prior batch, and the 90-day retention window. It leaves unaddressed edge behavior (expired or repeated undo, permissions, reversibility of the undo itself), which is a minor but real gap.

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 all three parameters including their optionality conditions are already documented in the schema. The description's note that batch comes from seo_fields_apply or seo_fields_history largely duplicates the schema's own batch description ('the batch id from apply or history') and adds nothing about site or server. 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?

States a specific verb (put back) and resource (values a seo_fields_apply batch replaced), and names the sibling tools that produce the values being reverted (seo_fields_apply, seo_fields_history). An agent can distinguish this from seo_fields_apply, seo_fields_history and seo_fields_list without opening any schema.

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 for use: it reverts a prior apply batch, and the parenthetical '(kept 90 days)' communicates an implicit expiry window. It also tells the agent where the required batch id comes from. It does not explicitly state when NOT to use it (e.g. expired batches, already-undone batches) or name alternative undo tools, so it falls short of the top band.

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

seo_historySEO history and alertsA
Read-onlyIdempotent
Inspect

What AskYourStack stored day by day for the user's sites, once they switched history on: Search Console clicks, impressions and position per day, Google Analytics sessions, organic sessions, key events and revenue per day (Pro and Agency), Core Web Vitals of real visitors, whether the pages bringing the most clicks are still in Google's index, and the SEO alerts that are open or closed in the last 30 days (clicks fell, a top page left the index, a vital turned poor). It covers only the days since history was switched on, and keeps them after they drop out of the 16 months Google keeps. Use it for trends and for "what changed and when"; use the gsc_ and ga4_ tools for detail by page or query.

NameRequiredDescriptionDefault
daysNoHow far back, 7 to 800. Default 90.
siteNoA Search Console property (a bare domain also works). Default: all picked properties.
groupNoDefault: day up to 60 days, week beyond.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this as a safe, read-only, idempotent operation. The description adds meaningful behavioral context beyond that: data is only available from the day history was switched on, it is kept beyond Google's 16-month retention, and alerts cover the last 30 days. It does not mention pagination or response format, but for a read-only aggregate history tool the added scope and retention details are substantive.

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 front-loaded with the resource and its contents, then moves to usage guidance and alternatives. The long enumerated list is dense but each item earns its place by specifying exactly what data is returned, and the final sentence cleanly closes with the alternative tools.

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 there is no output schema, the description fully carries the burden of explaining what the tool returns: a detailed list of metrics and alerts, plus temporal coverage constraints. Combined with the annotations and complete schema coverage, an agent has everything needed to call the tool correctly.

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 the parameters (days, site, group) are already fully documented in the input schema. The description does not add syntax, format, or default details beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific resource (day-by-day stored SEO data) and enumerates its content (clicks, impressions, position, sessions, key events, revenue, vitals, index status, alerts). It also explicitly distinguishes itself from the gsc_ and ga4_ tools, which provide detail by page or query, so an agent can route correctly without opening sibling schemas.

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 gives direct usage guidance: 'Use it for trends and for "what changed and when"; use the gsc_ and ga4_ tools for detail by page or query.' This names both the intended use and the alternative tools, leaving no ambiguity about when to select this tool over siblings.

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

serp_checkThe live Google results for a keywordA
Read-onlyIdempotent
Inspect

The live Google results for a keyword in a country (desktop or mobile): the top organic results with their position, domain, title and description, plus what else is on the page (AI overview, featured snippet, people also ask, shopping, video, local pack). Pass site to see where the user's site ranks and who is above it. One lookup from the plan's allowance; results are live, so do not call it repeatedly for the same keyword in one chat.

NameRequiredDescriptionDefault
siteNoThe user's domain, to mark its results.
depthNoResults to read, 10 to 50, default 20.
deviceNoDefault desktop.
keywordYes
languageNoTwo-letter language code, default en.
locationNoA country name, like United States (default), Germany, Portugal, United Kingdom.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safe read-only/idempotent/open-world profile, so the bar is lower, yet the description adds real operational context: each call consumes one lookup from the plan's allowance (quota cost) and results are live/fresh so repeated calls for the same keyword are wasteful. Note the idempotentHint refers to no side effects, not identical output, so 'live results' is not a contradiction.

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?

Two sentences that are front-loaded with the core purpose and return shape, followed by the site trick and the quota/repeat caveat. Efficient with no filler, though the second sentence is dense with multiple ideas packed together.

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, but the description fully describes the return payload (organic results fields plus additional page elements), the optional 'site' enrichment, and the quota/repeat constraint. Nothing essential for calling it correctly is missing.

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 83%, so the schema already documents most parameters (baseline 3). The description adds meaning beyond the schema: it ties 'site' to rank-marking ('where the user's site ranks and who is above it') and frames device/location as scope selectors for the SERP, which enriches the otherwise terse schema entries.

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?

States a specific verb+resource (live Google SERP for a keyword) scoped by country and device, and enumerates the exact return contents (organic results with position/domain/title/description plus AI overview, featured snippet, PAA, etc.). No sibling tool (bing_keywords, keyword_volume, gsc_*) does a live Google SERP pull, so the agent can distinguish it immediately.

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?

Gives actionable conditions: pass 'site' to see where the user's domain ranks and who is above it, and warns not to call repeatedly for the same keyword in one chat because results are live. It lacks an explicit named alternative tool to route to, but the when-to-use and when-not-to-call guidance is clear.

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

server_factsServer factsA
Read-onlyIdempotent
Inspect

Distro, kernel, CPU, memory, disk, package manager, running services, listening ports and any Magento or WordPress installs found. Call this first on a server.

NameRequiredDescriptionDefault
serverNoServer name or id. Optional when the account has one server.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare this read-only, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds value by effectively enumerating the return payload (a full host fact sheet), which matters because there is no output schema, and by asserting it should be the first call. It omits auth requirements and rate/performance notes, so this is not a 5.

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 with zero waste: the data enumeration is front-loaded so the agent sees scope first, and the actionable directive ('call this first') lands last. Nothing needs trimming.

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?

With no output schema, the description's list of returned facts is exactly the compensation needed. Safety is handled by annotations and the lone optional parameter is fully documented, so only minor workflow details (e.g., what to do with the results) are absent.

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% and the single `server` parameter is already documented as optional when the account has one server. The description adds no additional meaning about accepted server identifiers or fallback behavior, so baseline 3 applies.

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

Purpose4/5

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

The description enumerates the exact inventory returned (distro, kernel, CPU, memory, disk, package manager, services, listening ports, CMS installs), which is far more specific than the tautological title 'Server facts'. It is clearly distinguishable from siblings like list_servers, overview, or health_report because it names the specific host-level data it produces. The verb is implicit ('call this' implies report/return), which keeps it just short of a 5.

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 closing instruction 'Call this first on a server' gives explicit ordering guidance for the agent's workflow. No alternative tools are named or excluded, so it stops short of a 5, but the when-to-use condition is unambiguous.

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

site_auditCrawl and audit a whole siteAInspect

Crawl a whole site from the server it runs on, link by link from the start page as a search engine would (max_pages, default 500, up to 5000), and keep what every page answered: status, redirects, title, description, h1, canonical, noindex, word count, links, images without alt text, structured data, response time, clicks from the start page, and whether the sitemap lists it. It then names the issues: links to missing pages, server errors, redirect chains and links to redirects, missing or repeated titles and descriptions, the same text on several addresses, thin pages, slow pages, sitemap entries that redirect, fail or are noindex, pages only the sitemap knows, pages missing from the sitemap, pages robots.txt blocks. Pages are fetched straight from the server's own web server, so a CDN or firewall in front of the site does not block it, and only this site is fetched. It runs in the background and returns a job_id: call job_output until status is finished (the last lines are the summary), then site_audit_report for the pages behind each issue. Give site (see list_sites) or url, the address to start from. Addresses with parameters are sampled (50) unless query_urls says all or none.

NameRequiredDescriptionDefault
urlNoAddress to start from, like https://www.example.com/. Default: the site's own address.
viaNoauto (default): from the server's own web server when it serves the site, else over the internet. public: always as a visitor, through any CDN.
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.
max_pagesNoPages to fetch, default 500, at most 5000. About 3 to 10 pages a second.
query_urlsNoAddresses with ?parameters: fetch 50 as a sample (default), all, or none.
concurrencyNoPages fetched at the same time, 1 to 8, default 3. Lower it on a small or busy server.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that pages are fetched directly from the server's own web server so a CDN/firewall will not block the crawl, that only the target site is fetched, that query URLs are sampled, and that the job runs in the background returning a job_id. The readOnlyHint=false, openWorldHint=true, idempotentHint=false annotations are consistent with a background crawl-and-store job.

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?

Front-loaded with purpose and organized as purpose -> what is collected -> issues found -> mechanics -> workflow -> inputs. It is dense and long, with some enumerations that border on exhaustive, but nearly every clause carries information.

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 exists, and the description compensates by explaining the returned job_id, the polling loop, and that site_audit_report holds the per-issue pages. Combined with the issue taxonomy and parameter guidance, an agent has everything needed to invoke and follow up.

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 real meaning on top of the schema: the query_urls sampling behaviour (50 unless all/none), the up-to-5000 cap on max_pages, and pointers to list_sites for the site parameter. It largely restates rather than extends for the rest.

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?

Opens with a specific verb+resource ('Crawl a whole site ... from the server it runs on') and enumerates exactly what data is retained and which issues are named. This is clearly distinguishable from per-page siblings like page_audit, crawl_report and bing_crawl.

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?

Gives concrete operating context: supply either site (see list_sites) or url, and describes the async workflow (call job_output until finished, then site_audit_report). It does not, however, state when to prefer this over page_audit, crawl_report, or bing_crawl.

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

site_audit_reportRead a site auditA
Read-onlyIdempotent
Inspect

Read a site audit that site_audit made. Without more arguments: the summary of the latest run (pages by status and by clicks from the start page, every issue with its count, why it matters and three examples, and what changed since the run before). issue: the pages behind one issue with the detail for each (50 a call, continue with offset). page: everything known about one address, including which pages link to it. match (part of an address) or status (like 404 or 3xx): list pages. The server keeps the last 5 runs per site; run picks an earlier one.

NameRequiredDescriptionDefault
runNoAn earlier run, as listed under runs_kept.
urlNoThe site, by address or domain, when the server holds audits of several.
pageNoOne address to look up.
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
issueNoAn issue id from the summary, like broken_pages or duplicate_title.
limitNoDefault 50, at most 200.
matchNo
offsetNo
serverNoServer name or id. Optional when the account has one server.
statusNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond them: only the last 5 runs are kept per site, issue results are capped at 50 per call and continue via offset, and the summary includes deltas since the previous run.

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?

Dense but front-loaded: the default no-argument behavior comes first, then each mode in turn, then the run-retention caveat. It is a single run-on paragraph, which costs a little scannability, but every clause carries information.

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?

With 10 optional parameters and no output schema, the description carries the burden well by describing what each mode returns (pages by status and clicks, issues with counts/importance/examples, changes since last run) and how to page through results. Missing only the meaning of the remaining bare parameters and any authentication/rate context.

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 70%, and the description compensates where the schema is bare: match is "part of an address", status is "like 404 or 3xx", issue is an id from the summary, page is a single address, and run refers to entries under runs_kept. It also documents the 50-per-call limit tied to limit/offset, though it does not explain the 200 cap.

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?

States a specific verb and resource ("Read a site audit that site_audit made") and immediately signals the producer/consumer split with the sibling site_audit. The four invocation modes (summary, issue, page, match/status) make it unmistakable what the tool returns in each case.

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?

Gives explicit conditional routing: no extra arguments returns the latest-run summary, issue returns the pages behind one issue, page returns everything about one address, match/status lists pages, and run selects an earlier run. It does not compare itself against neighboring read tools (page_audit, crawl_report, health_report), so it stops short of full alternative guidance.

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

site_consoleRun a site's consoleA
Destructive
Inspect

Run a site's own command line tool as the site's owner, in the site's folder: bin/console for Shopware 6 and PrestaShop, artisan for Laravel, drush for Drupal, cli/joomla.php for Joomla, ghost (ghost-cli) for Ghost (list_sites shows each site's console; Magento 2 has the magento tool and WordPress the wp tool). Pass the command and its options as args, like ["cache:clear"] or ["plugin:list", "--json"]. For a site in a Docker container it runs inside the container. Listing and status commands run straight away; uninstalling or deleting, anything that drops or resets the database, generating new keys, an admin login link and commands that run arbitrary PHP (tinker, php:eval) need approval. Symfony's console and artisan are run with --no-interaction; drush asks nothing only when you pass -y. Set background true for slow commands.

NameRequiredDescriptionDefault
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
argsYes
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.
backgroundNo
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the destructiveHint/openWorldHint annotations, it discloses precisely which commands need approval (uninstall/delete, DB drops or resets, new keys, admin login link, tinker/php:eval), the interaction behavior per toolchain (--no-interaction for Symfony/artisan, -y required for drush), and the background-execution trait. This is substantive behavioral context the annotations cannot express.

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?

A single dense paragraph that front-loads the core action before branching into per-CMS binaries, approval rules and flags. Every sentence carries information, but the parenthetical CMS list and flag details make it heavier than it needs to be for a first read.

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 high-variance, multi-framework shell-execution tool with no output schema, the description covers the critical unknowns: which binary runs, Docker behavior, approval gating, non-interactive flags and long-running handling. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

The schema documents site, server, why and approval_id, but leaves args and background bare; the description compensates with concrete examples (["cache:clear"], ["plugin:list", "--json"]) and states that background should be true for slow commands. That adds real meaning over the 67%-covered schema, though it doesn't cover every edge (e.g. arg quoting/escaping rules).

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 names a specific verb and resource ('Run a site's own command line tool as the site's owner, in the site's folder') and enumerates the exact binary per CMS (bin/console, artisan, drush, cli/joomla.php, ghost), which separates it from siblings like magento, wp, run and db_query. An agent can identify the tool without opening any schema.

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 routes the agent explicitly to alternatives ('Magento 2 has the magento tool and WordPress the wp tool'), tells the agent to consult list_sites for each site's console, and gives clear conditions for approval-required commands versus ones that run straight away. The Docker case ('runs inside the container') is a concrete usage condition rather than a generic statement.

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

sitemap_checkCheck sitemapsA
Read-onlyIdempotent
Inspect

Find and audit a site's XML sitemaps (from robots.txt, or /sitemap.xml; sitemap indexes and .gz followed, up to 60 files): status, URL counts, the 50,000-URL and 50 MB limits, URLs on other hosts, lastmod coverage, and a random sample of URLs fetched as Googlebot that should answer 200, not redirect, not be noindex and be their own canonical. contains checks whether given URLs are in the sitemaps.

NameRequiredDescriptionDefault
siteNoAny URL on the site, or pass sitemap.
sampleNoURLs to fetch and check, default 20, max 50 (0 to skip).
sitemapNo
containsNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds meaningful behavior beyond that: following sitemap indexes and .gz up to 60 files, the 50,000-URL/50 MB limits, cross-host URL detection, and fetching sampled URLs as Googlebot expecting 200/non-redirect/non-noindex/self-canonical.

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 purpose and scope are front-loaded in the first sentence, and the second sentence cleanly handles the 'contains' parameter. The first sentence is dense with a long checklist, but every item enumerated is a distinct audit output and 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?

With no output schema, the description effectively enumerates what is audited and reported, and annotations cover safety. It is nearly complete, losing only a bit for not clarifying the 'sitemap' parameter or the shape of the response.

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 covers only 50% of params, and the description compensates partially by explaining that 'contains checks whether given URLs are in the sitemaps' and describing the sampled Googlebot fetch behavior tied to 'sample'. But the 'sitemap' parameter has no description in either the schema or the text, leaving one parameter opaque.

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

Purpose4/5

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

States a specific verb+resource ('Find and audit a site's XML sitemaps') and details the discovery mechanism (robots.txt, /sitemap.xml, indexes, .gz) plus what is checked. It is clearly distinguishable from the API-backed gsc_sitemaps/bing_sitemaps siblings by being a live crawl, though it never names those siblings.

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 implies usage through the enumerated checks (status, URL counts, limits, lastmod, sampled Googlebot fetches), which tells an agent what it is for. However, there is no explicit when-to-use vs when-not guidance and no routing to gsc_sitemaps or bing_sitemaps for API-level sitemap data, so selection is left to inference.

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

snapshotTake a snapshotAInspect

Save folders (and optionally MySQL/MariaDB databases, dumped with mysqldump) on the server so they can be restored with rollback. Refuses when it would use more than half the free disk. /etc is also saved automatically before changes, at most every 30 minutes.

NameRequiredDescriptionDefault
labelNoShort name, like before-magento-upgrade.
pathsNoAbsolute folders or files.
serverNoServer name or id. Optional when the account has one server.
databasesNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the generic mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds real behavioral disclosure beyond that: a disk-space refusal threshold, mysqldump as the dump mechanism, and an automatic /etc snapshot before changes capped at once per 30 minutes.

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?

Three tight sentences: what gets saved, the safety refusal, then the automatic /etc behavior. Nothing is redundant and the operational constraint is front-loaded rather than buried.

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 4-param, no-output-schema mutation tool the description is nearly complete: it covers scope, safety limits, and side effects. It omits what the call returns (e.g., an identifier needed later by rollback) and whether the operation is synchronous, which is a minor but real gap.

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 75%, and the description covers the gap for 'databases' by explaining they are MySQL/MariaDB dumps taken with mysqldump, which the empty schema description omits. It adds meaning for 'paths' by framing them as folders saved for rollback, though it adds nothing for 'label' or 'server' beyond the schema 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?

States a precise verb and resource: save folders and optionally MySQL/MariaDB databases on a server, explicitly tied to restoration via rollback. It is clearly distinguishable from siblings like list_snapshots, db_dump, and rollback without opening any schema.

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 names the pairing partner ('restored with rollback'), which tells the agent when the snapshot is consumed, and gives a hard precondition (refuses past half of free disk). It does not explicitly say 'use before applying risky changes' or contrast against db_dump/transfer for database-only needs, so it stops short of full when-vs-alternatives guidance.

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

start_jobStart a background jobA
Destructive
Inspect

Start a long command (installs, composer, compiles, imports, backups) in the background as the user the agent runs as, in its own systemd unit, so it keeps running after this call returns and through agent updates. Returns a job_id; read progress with job_output. Destructive commands need the user's approval, like run.

NameRequiredDescriptionDefault
cwdNoWorking directory, absolute.
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
nameNoShort label, like magento-install.
serverNoServer name or id. Optional when the account has one server.
commandYes
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavior: the job is a persistent systemd unit that outlives the call and agent updates, it returns a job_id, and destructive invocations go through a user approval gate. It does not mention that repeating the call creates a second job or that the job may need stopping, but the added context is substantial.

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?

Three tight sentences, front-loaded with what the tool does and the fact that the job persists, then the return value and the follow-up tool, then the approval caveat. No filler and nothing redundant.

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?

With no output schema, the description correctly supplies the return value (job_id) and names the tool for reading results, and it covers the approval workflow implied by the destructive annotation. Minor gaps remain: no mention of `stop_job`/`list_jobs` for lifecycle management or of what happens when a job fails.

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 83%, so the schema already explains cwd, why, name, server and approval_id; the description adds no syntax, format or default detail for any of them. The baseline 3 applies since the schema carries the parameter burden and the description only implies the approval flow that the `why` and `approval_id` fields serve.

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 states a specific verb and resource ('Start a long command ... in the background') and adds crucial scope: it runs as the invoking user, in its own systemd unit, and survives the call returning and agent updates. That distinguishes it from foreground `run`, from `job_output` (reading progress), and from `list_jobs`/`stop_job` without needing the schemas.

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?

It gives a clear usage context via concrete examples (installs, composer, compiles, imports, backups) and routes the agent forward to `job_output` for progress. It also flags the approval requirement for destructive commands 'like run', implicitly contrasting with `run`. It never explicitly says when NOT to use it (e.g., short commands should use `run`), so the routing is strong but not complete.

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

stop_jobStop a background jobB
Destructive
Inspect

Stop a running background job and everything it started.

NameRequiredDescriptionDefault
job_idYes
serverNoServer name or id. Optional when the account has one server.

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description usefully adds that child work started by the job is also stopped, but says nothing about graceful vs forced termination, retention of partial output, or the error behavior implied by non-idempotency.

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?

One sentence, zero waste, and the scope-expanding clause is placed where it is most informative.

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?

Acceptable for a mutation tool whose annotations carry the safety profile and which has no output schema. But the 50% parameter coverage gap and missing guidance on job_id acquisition and post-stop behavior leave real holes.

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

Parameters2/5

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

Schema coverage is 50% — the required job_id has no description, while server does. The description adds no meaning for job_id (no format, no source for obtaining it), so the undocumented half of the parameters is unaddressed.

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

Purpose4/5

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

States a specific verb (stop) and resource (running background job) and adds scope detail — 'and everything it started.' An agent can distinguish it from start_job/list_jobs, though no sibling is named explicitly and the correlation with job_output is left implicit.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, no alternatives. Nothing tells the agent whether this is for active jobs only, what happens if the job already finished, or how it relates to list_jobs/wait_for_approval.

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

transferCopy a folder between serversA
Destructive
Inspect

Copy a folder from one of the user's servers to another, directly between them, for migrations (rsync over SSH with a temporary key that only allows reading that folder; nothing goes through AskYourStack). Needs rsync on both servers and the source's SSH port reachable from the target. Runs on the target as a background job and returns a job_id: follow it with job_output on the target. Call it again with the same arguments for a quick catch-up copy of what changed (the link stays open 24 hours), and call transfer_close when the migration is done. mirror also deletes files in the target folder that are not on the source (needs approval). Use excludes for caches, like var/cache, var/page_cache, generated.

NameRequiredDescriptionDefault
toYesTarget server name or id.
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
fromYesSource server name or id.
pathYesFolder on the source, like /var/www/shop.
mirrorNoDelete files on the target that are not on the source. Default false.
excludesNorsync exclude patterns, relative to the folder.
dest_pathNoFolder on the target. Default: the same path.
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructive=true and readOnly=false, but the description adds substantial context: a temporary read-only SSH key, no data through AskYourStack, rsync required on both servers, source port reachability, background execution returning a job_id, a 24-hour open link, and the approval requirement for mirror deletes. This exceeds the annotation bar considerably, though it omits failure/timeout behavior.

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?

Front-loaded with the core action and mechanism, and every clause is informative rather than filler. It is delivered as one dense paragraph, which slightly hurts scannability but keeps the definition compact.

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 still explains the return (a job_id), how to follow the job (job_output on the target), the lifecycle end (transfer_close), and prerequisites. For an 8-parameter migration tool this leaves an agent with what it needs to call it 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 the baseline is 3, but the description adds real meaning beyond the schema: mirror's destructive deletion and approval requirement, and concrete excludes examples (var/cache, var/page_cache, generated) that guide correct use.

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?

States a specific verb+resource ('Copy a folder from one of the user's servers to another, directly between them, for migrations') and names its mechanism (rsync over SSH). It clearly distinguishes itself from siblings like transfer_close and job_output, which it explicitly routes to.

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?

Gives explicit when-to-use (migrations), a repeat-use pattern (call again with the same arguments for a catch-up copy), and names the companion tools (job_output to follow the job, transfer_close when done). It also flags when mirror deletes files and that this needs approval.

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

transfer_closeClose copy linksA
Destructive
Inspect

Close the copy links between servers (removes the temporary keys). Call it when a migration is done. Without from/to, closes every open link.

NameRequiredDescriptionDefault
toNo
fromNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so safety is covered. The description adds real value beyond them: it discloses what is destroyed (temporary keys) and the broad blast radius when from/to are omitted (closes every open link), which is exactly the kind of scope detail an agent needs before an irreversible call.

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?

Three tight sentences, front-loaded with the action and its effect, then the timing trigger, then the default scope. No filler; every clause 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 two-param destructive tool with no output schema, the description covers purpose, timing, side effect and default scope adequately, and annotations carry the safety profile. The remaining gap is the meaning/format of from and to, which nothing else documents.

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 0%, so the description must compensate. It tells the agent that from/to select the link and that omitting them widens scope to all links, but it never says what the values actually are (server identifiers/names) or the accepted format, leaving the core semantics of the two params under-specified.

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

Purpose4/5

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

States a specific verb+resource ('Close the copy links between servers') and clarifies what that means operationally ('removes the temporary keys'). An agent can distinguish it from the sibling 'transfer', but that sibling is never named to make the pairing explicit.

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?

Gives a clear when-to-use trigger ('Call it when a migration is done') and a fallback behavior ('Without from/to, closes every open link'). It stops short of naming the counterpart tool (transfer) or any when-not condition, so routing is still partly inferential.

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

umami_journeysPaths visitors take, from UmamiA
Read-onlyIdempotent
Inspect

The paths visitors take through a website, from Umami: the most common sequences of pages (and custom events in [brackets], such as [sign_up] or [outbound_link]) from where a visit starts to where it ends, with how many visits took each. Pass start_page to see where people go from a page (for example from /pricing), or end_page to see how they reach one (for example /signup). Also lists the entry and exit pages and, when the site sends outbound_link events, where people left to. Use it to find where visitors drop off and which paths lead to a signup.

NameRequiredDescriptionDefault
daysNoThe last N days up to now, default 28, at most 730.
limitNoPaths to list, default 25, at most 200.
stepsNoPages per path, 3 to 7, default 5.
filtersNoOptional, as in umami_report. Keys: path, referrer, title, query, os, browser, device, country, region, city, hostname, language, event, tag, utmSource, utmMedium, utmCampaign, utmContent, utmTerm.
websiteNoThe website's name, domain or id in Umami. Optional when Umami has one website.
end_dateNoLike 2026-09-30, inclusive.
end_pageNoOnly paths that end at this page (or event).
start_dateNoLike 2026-09-01 (UTC day). With end_date instead of days.
start_pageNoOnly paths that start at this page (or event).

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds content semantics (bracket notation for events, conditional outbound_link reporting) but discloses no additional behavioral traits such as auth, limits, or pagination.

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?

It is a single dense paragraph, but it is front-loaded with the core concept and nearly every clause adds usable information (notation, examples, use case). Slightly long, though little is truly redundant.

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 9-parameter, nested-filter tool with no output schema but zero required params, the description covers semantics, notation, filtering behavior, and a use case well. The main gap is not distinguishing itself from sibling umami_report/umami_overview tools.

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 goes beyond it: it explains bracket notation for events like [sign_up], and gives concrete examples for start_page (/pricing) and end_page (/signup) that clarify intent not present in 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 states a specific verb+resource ('The paths visitors take through a website') and elaborates on what a path is: common page/event sequences with visit counts, entry/exit pages, and outbound exits. It is clearly distinct from a general purpose report like umami_report.

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?

It gives concrete usage context ('find where visitors drop off and which paths lead to a signup') and explains how start_page/end_page select subsets. It references umami_report for the filters format but does not explicitly route the agent between umami_journeys, umami_report, and umami_overview, so no true when-not guidance is present.

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

umami_overviewUmami traffic overviewA
Read-onlyIdempotent
Inspect

Traffic at a glance from Umami for one website: visitors, visits, page views, bounce rate, average visit time and views per visit against the period before, the daily (or monthly) trend, and the top pages, entry pages (where visits start), exit pages (where they end), referrers, channels, countries, devices and custom events (signups, outbound_link clicks and the like), plus visitors on the site right now. Start here when the user asks how a site with Umami is doing or how many people really visited.

NameRequiredDescriptionDefault
daysNoThe last N days up to now, default 28, at most 730.
limitNoRows per list, default 10, at most 50.
websiteNoThe website's name, domain or id in Umami. Optional when Umami has one website.
end_dateNoLike 2026-09-30, inclusive.
start_dateNoLike 2026-09-01 (UTC day). With end_date instead of days.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real behavioral value beyond that: it discloses the comparative framing ('against the period before'), the trend granularity (daily or monthly), and the full inventory of returned breakdowns — useful context given there is no output schema. It says nothing about auth requirements, rate limits, or default period.

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?

Purpose is front-loaded and the single enumerated sentence, though long, earns its length by substituting for an absent output schema. The closing 'start here' sentence is short and actionable. No filler.

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?

With no output schema, the description usefully compensates by describing the returned metric set and comparison window, and annotations handle the safety profile. The remaining gap is sibling routing: with umami_report, umami_realtime and umami_journeys in the namespace, it never says which one to prefer for a narrower or live-only question.

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 every parameter individually documented (days default 28/max 730, limit default 10/max 50, optional website, start/end date format). The description mentions none of these, so it adds no meaning beyond the schema — the baseline 3 applies.

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

Purpose4/5

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

States a clear verb+resource — 'Traffic at a glance from Umami for one website' — and enumerates the exact metrics and breakdowns returned (bounce rate, top pages, referrers, countries, devices, custom events, realtime visitors). It distinguishes itself from generic siblings through breadth, though it never explicitly contrasts with umami_report, umami_realtime, or umami_journeys.

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?

'Start here when the user asks how a site with Umami is doing or how many people really visited' gives a clear entry-point cue, but names no alternatives and no exclusions. This matters because umami_realtime appears to overlap with the 'visitors on the site right now' capability claimed here, and umami_report is never positioned relative to this tool.

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

umami_realtimeUmami right nowA
Read-onlyIdempotent
Inspect

Who is on a website right now according to Umami: active visitors, and for the last 30 minutes the pages, referrers, countries and the latest events. Use it to check that tracking works after a change or to watch a launch.

NameRequiredDescriptionDefault
websiteNoThe website's name, domain or id in Umami. Optional when Umami has one website.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds useful behavioral detail beyond that: the exact data dimensions returned and the 30-minute lookback window, which an agent needs to interpret freshness.

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 filler: the first front-loads what is returned and the time window, the second gives the use cases. Nothing redundant with the title or schema.

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?

With no output schema, the description carries the return-value burden and does so by enumerating the returned dimensions and window. For a read-only, single-optional-param tool that is nearly complete; only minor items like empty-result behavior are unstated.

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 the single optional 'website' parameter (name/domain/id, optional when only one site exists) is fully documented in the schema. The description adds no parameter syntax or default-behavior detail, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific resource set (active visitors, plus pages, referrers, countries and latest events) and pins the temporal scope to 'right now' / 'last 30 minutes', which is what separates it from umami_report. It does not name a sibling explicitly, so it stops short of a 5.

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?

It gives two concrete when-to-use scenarios: verifying tracking after a change and watching a launch. There are no explicit exclusions or named alternatives (e.g. umami_report for historical data), so it is clear context without routing.

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

umami_reportUmami breakdown reportA
Read-onlyIdempotent
Inspect

Any Umami breakdown for one website: by path, entry, exit, title, query, referrer, channel, domain, hostname, country, region, city, device, browser, os, language, screen, event, tag, utmSource, utmMedium, utmCampaign, utmContent, utmTerm; with filters (all must match) such as {"path": "/pricing"}, {"country": "PT"}, {"event": "sign_up"}, {"utmSource": "newsletter"}, {"referrer": "google.com"}. Also returns the totals under the same filters, and with daily: true the day-by-day visits and views under them. Examples: where signups came from = type referrer or channel with filters {"event": "sign_up"}; which pages people land on from Google = type entry with filters {"referrer": "google.com"}.

NameRequiredDescriptionDefault
daysNoThe last N days up to now, default 28, at most 730.
typeNoWhat to break the traffic down by. Default path.
dailyNoAlso the day-by-day series under the filters.
limitNoRows, default 50, at most 500.
filtersNoOptional. Keys: path, referrer, title, query, os, browser, device, country, region, city, hostname, language, event, tag, utmSource, utmMedium, utmCampaign, utmContent, utmTerm.
websiteNoThe website's name, domain or id in Umami. Optional when Umami has one website.
end_dateNoLike 2026-09-30, inclusive.
start_dateNoLike 2026-09-01 (UTC day). With end_date instead of days.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: filters are conjunctive ('all must match'), totals are returned under the same filters, and daily: true produces a day-by-day series. It does not describe output shape or how limit interacts with the data, keeping it from a 5.

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

Conciseness3/5

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

The description is one dense run-on sentence with a 24-item enumeration that duplicates the schema's type enum, followed by filter examples and then the usage examples. It is information-rich and front-loaded with the core purpose, but the type list and duplicated filter-key list inflate it without adding much beyond the schema.

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 an 8-parameter, zero-required, read-only tool with no output schema, the description covers the essential calling semantics: what can be broken down, how filters combine, that totals accompany the breakdown, and that daily toggles a time series. It leaves the return structure (rows, totals shape) and limit/pagination behavior implicit, but annotations carry the safety profile and the schema carries parameter details.

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 and the schema already documents every parameter's format and defaults. The description adds genuine value on top: it clarifies that filters combine with AND semantics and gives concrete filter objects ({"path": "/pricing"}, {"utmSource": "newsletter"}) showing accepted key/value shape. The large type enumeration is largely redundant with the schema enum.

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

Purpose4/5

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

States a specific verb and resource ('Any Umami breakdown for one website') and enumerates the full set of breakdown dimensions, so an agent immediately knows this is the flexible breakdown tool rather than the fixed-summary umami_overview or the live umami_realtime. It does not explicitly name those siblings, but the 'breakdown by X' framing is distinctive enough to differentiate.

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 two concrete scenario examples ('where signups came from = type referrer or channel with filters {"event": "sign_up"}'; 'which pages people land on from Google = type entry with filters {"referrer": "google.com"}'), which is strong when-to-use guidance. It stops short of stating when NOT to use it versus umami_overview/umami_realtime, so it is not a full 5.

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

umami_websitesUmami websitesA
Read-onlyIdempotent
Inspect

The websites in the user's Umami analytics (self-hosted or Umami Cloud), with their ids and domains. Start here before the other umami_ tools. Changes nothing.

NameRequiredDescriptionDefault

No parameters

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, idempotentHint=true and destructiveHint=false, so 'Changes nothing' largely restates structured data. What the description does add is genuinely needed since there is no output schema: it names the returned fields (ids and domains), telling the agent what shape the response takes and that the ids feed downstream umami_ calls.

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?

Three short sentences, front-loaded with what the tool returns, then ordering guidance, then the safety note. No filler and no restating of the title.

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 parameters and no output schema, the description carries the output burden and does so by naming the returned fields, plus it tells the agent to call this before other umami_ tools. Nothing an agent needs in order to invoke it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies a full, unfiltered listing with no arguments to supply.

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

Purpose4/5

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

Identifies the specific resource (the websites in the user's Umami analytics) and even the return payload (ids and domains), which cleanly separates it from ga4_properties, gsc_properties and other property-listing siblings. The verb is only implicit ('The websites in...') rather than stated as 'list', which keeps it just short of a 5.

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?

'Start here before the other umami_ tools' gives explicit sequencing guidance that an agent can act on, and the '(self-hosted or Umami Cloud)' parenthetical clarifies which deployments it covers. There is no when-not-to-use clause or statement about what happens if no websites exist, so it stops at clear context rather than full routing.

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

validate_schemaValidate structured dataA
Read-onlyIdempotent
Inspect

Check a page's structured data (JSON-LD and microdata, @graph and @id references followed). Reports two things apart: schema.org validity (real types, real property names on the right type, with "did you mean" for typos) and Google rich-result eligibility (required and recommended fields for Product, Offer, Review, Breadcrumb, Article, FAQ, Recipe, Event, Video, JobPosting, LocalBusiness, Organization and more). Pass url to fetch the live page as the server sends it (no JavaScript rendering), or html with markup you are about to publish or fetched on the user's server (staging sites).

NameRequiredDescriptionDefault
urlNo
htmlNoRaw HTML or just the <script type="application/ld+json"> blocks.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds materially different context: the url fetch is server-rendered only with no JavaScript execution, @graph and @id references are followed, and validity is reported separately from rich-result eligibility. These are behavioral traits an agent could not infer from the schema.

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?

Front-loaded with the verb and resource, then output shape, then input-mode guidance. Every sentence earns its place, though the final sentence is dense with stacked parentheticals and could be split for faster scanning.

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?

With no output schema, the description carries the burden of describing returns and does so by naming the two report categories and the covered rich-result types. Combined with fetch semantics and parameter guidance, an agent has enough to call it correctly; only error behavior on unreachable URLs or malformed markup is unaddressed.

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 50% (url carries no schema description), and the description compensates by explaining both parameters: url fetches the live page as the server sends it, html accepts raw HTML or just the ld+json script blocks, including markup from staging servers. This adds real semantics beyond the schema, though it does not cover edge cases such as both being supplied.

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?

Names a specific verb and resource (validate structured data) and immediately scopes it to JSON-LD and microdata with @graph/@id resolution. It further splits the output into two named reports (schema.org validity vs Google rich-result eligibility), so an agent knows exactly what this returns without opening anything else.

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?

Gives explicit conditional guidance for the two input modes: pass url to fetch the live page as served, or html for markup about to be published or fetched from a staging server. There is no explicit 'when not to use this' or pointer to a sibling, but no sibling overlaps, so the mode selection is the guidance that matters.

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

wait_for_approvalWait for the user to approveA
Read-onlyIdempotent
Inspect

Wait for the user to decide, so they do not have to come back to the chat and tell you. Right after you give the user an approval link (approval_id), a plan link (plan_id), the link to open changes on a server (server) or a setup link while nothing is connected yet (setup), write that link in your reply and then call this in the same turn: it returns as soon as they approve, deny or open changes, and says what to do next. It waits about 50 seconds at a time; if it answers that they have not decided yet, call it again, and after about 10 minutes of waiting stop and ask the user to tell you when they have.

NameRequiredDescriptionDefault
setupNoWhile nothing is connected yet (overview says so): after giving the user the setup link, wait until they have connected Google, a server or a site.
serverNoWait for changes to be opened on this server (the /app/window link).
plan_idNoThe id from a plan link (/app/approvals/plan/<id>).
approval_idNoThe id from an approval link (/app/approvals/<id>).

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds the crucial runtime traits: it blocks ~50 seconds per call, returns on approve/deny/open-changes, and repeats until timeout. This is exactly the behavioral context annotations cannot convey.

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?

Purpose and the call-immediately instruction are front-loaded, and every clause carries actionable information. The long run-on sentence with several parentheticals could be split, but nothing is filler.

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 still explains the response ('returns as soon as they approve, deny or open changes, and says what to do next') plus the timeout loop, so an agent knows both the return behavior and the calling pattern. Complete for this polling tool.

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 each parameter is already documented in the schema, including the enum for setup. The description maps parameters to workflow moments (link type) but adds little syntactic or format detail beyond what the schema states.

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

Purpose4/5

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

States a specific verb ('wait') and resource (user decision/approval), and enumerates the triggers (approval_id, plan_id, server, setup) that make it distinct from any sibling. It is clear what the tool does, though the opening sentence leads with motivation rather than the operation itself.

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 prescribes when to call it (immediately after giving the user a link, in the same turn), what to do on a not-yet-decided response (call again), and when to stop (~10 minutes, then ask the user). No alternatives or conditions are left to inference.

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

whizzy_callRun a WhizzyCommerce shop capabilityA
Destructive
Inspect

Run one capability of a connected WhizzyCommerce shop, by the name whizzy_tools gave, with its arguments. Reads answer straight away. Most changes are not made by this call: WhizzyCommerce answers with a preview of what would change and a link; give the user that link and stop; they confirm it in their own WhizzyCommerce dashboard, and only then does it happen. Afterwards the shop's changes_status capability, with the change_id from the answer, says whether it was confirmed, declined or expired. Use the shop's propose_plan capability to put several changes in one confirmation. Exceptions: set_theme_tokens and set_theme_settings (colours, fonts, theme settings) apply to the live shop at once, with an Undo in the shop's change log, so ask the user first; page layouts and own themes are drafts the merchant publishes.

NameRequiredDescriptionDefault
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
toolYesThe capability's name, exactly as whizzy_tools lists it.
argumentsNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description explains exactly why: most calls produce a preview plus confirmation link rather than mutating, while the theme-setting exceptions mutate the live shop and carry an Undo. It further explains the lifecycle (confirmed/declined/expired via changes_status) and the draft-publish behavior for page layouts and themes, adding substantial context 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.

Conciseness4/5

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

Front-loaded with the core action and dense with useful routing detail; nearly every sentence earns its place. It runs slightly long with several semicolon-chained clauses, but no filler is present.

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?

Despite no output schema, the description explains what the answer contains (a preview of changes, a link, a change_id), how to verify outcomes, and how to batch or except behavior. For a generic dispatcher this is complete enough for correct invocation.

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 67%, with clear descriptions for site and tool but a bare, undocumented 'arguments' object. The description only says 'with its arguments,' adding no syntax, shape, or per-capability guidance for the nested object, so it does not compensate for the gap.

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?

States a specific verb and resource ('Run one capability of a connected WhizzyCommerce shop') and pins the naming source ('by the name whizzy_tools gave'), which lets an agent distinguish it from whizzy_tools itself and from concrete action tools like propose_plan. It is clearly a generic dispatch wrapper rather than a single-purpose tool.

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?

Gives explicit routing: reads answer immediately, most changes are only previews so give the user the link and stop, use changes_status afterward with change_id, and use propose_plan to batch changes. It also carves out named exceptions (set_theme_tokens, set_theme_settings) that apply live and require asking the user first.

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

whizzy_toolsWhat a WhizzyCommerce shop offersA
Read-onlyIdempotent
Inspect

For a connected WhizzyCommerce shop (see connected_sites): what the shop lets an AI do right now, as its own list of capabilities with their arguments: orders and shipping, products, categories and imports, prices, sales, coupons and gift cards, customers, languages and translations, menu, redirects and SEO, delivery, tax, currencies, policies and other settings, routines, reports, and design (page sections, colours and fonts, themes of the merchant's own). By default everything is open; the merchant can narrow it in their WhizzyCommerce dashboard under Agents. Pass search to narrow the list or, with a capability's exact name, to read it in full.

NameRequiredDescriptionDefault
siteNoThe connected site, by its name or address (see connected_sites). Optional when one site is connected.
searchNoPart of a capability's name or description.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds important context beyond those hints: the capability list is dynamic and merchant-configurable, and the default is fully open unless the merchant narrows it. It also explains that passing an exact capability name returns full details. This is useful behavioral context not derivable from annotations. It does not, however, mention any rate limits, pagination, or whether the list can be empty.

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 front-loaded with the core purpose and then details the categories and search behavior. It is a single, dense paragraph but well-structured. One could argue a small amount of repetition (e.g., 'see connected_sites' appears twice), but overall it is efficient and focused.

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 discovery tool with no output schema, the description adequately explains what the tool returns (a list of capabilities with arguments) and how to interact with it (search). It mentions the dynamic nature and merchant control. It does not specify the return format in detail, but since there is no output schema, more detail could be helpful; still, the description covers the essentials for correct invocation.

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 both parameters (site and search) are fully documented in the schema. The description adds meaning for search by explaining that it can narrow the list or, with an exact capability name, read that capability in full. This is a useful semantic addition but not a replacement for schema documentation, which already covers the parameters. Baseline 3 is appropriate given full schema coverage.

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 states a specific purpose: it enumerates what a connected WhizzyCommerce shop lets an AI do right now, as a list of capabilities with their arguments. It explicitly distinguishes itself from whizzy_call by being a discovery/catalog tool rather than an invocation tool, and from connected_sites by referencing that tool for site context. No sibling does the same job.

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 usage context: default behavior is everything open, the merchant can narrow it, and a search term can narrow the list or read a single capability in full. However, it does not explicitly state when to use this tool instead of alternatives (e.g., when to use this vs. whizzy_call, or whether this is a prerequisite step). It implies usage but lacks an explicit 'use this when...' routing statement.

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

wpRun wp-cliA
Destructive
Inspect

Run wp-cli as the site's owner with --path set, like args ["plugin", "list"]. Listing and checksum commands run straight away; deleting plugins or users, db reset/import, search-replace without --dry-run and eval need approval. Set background true for slow commands.

NameRequiredDescriptionDefault
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
argsYes
siteNoSite root folder, like /var/www/shop, or one of the site's domains. Optional when the server has one site (see list_sites).
serverNoServer name or id. Optional when the account has one server.
backgroundNo
approval_idNoOnly when repeating a call the user approved.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already flag destructive, open-world, non-idempotent behavior, yet the description goes further by enumerating exactly which command categories trigger an approval gate and how to route slow work via `background`. This is precisely the extra context (approval friction, execution mode) that annotations cannot express.

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?

Three tight sentences, front-loaded with what the tool does, then approval behavior, then the background hint. No filler and no repetition of the schema.

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 CLI wrapper with no output schema and covered safety annotations, the description delivers what an agent needs to invoke it correctly: execution context, approval triggers, and backgrounding. It omits any hint about output/error surfacing, which is a minor remaining gap.

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 67%, with `background` carrying no schema description at all; the description compensates by explaining when to set it true. The `args` example illustrates the expected array shape, though `why`/`site`/`server`/`approval_id` are left entirely to the schema.

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

Purpose4/5

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

States a specific verb and resource: 'Run wp-cli as the site's owner with --path set', with a concrete argument example (['plugin', 'list']). This clearly separates it from the generic `run` and the `magento` sibling, though it doesn't explicitly say when to prefer this over `run` or `db_query`.

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?

Gives real routing guidance: listing and checksum commands run immediately, while deletes, db reset/import, non-dry-run search-replace and eval require approval, and slow commands should set background=true. That tells the agent what to expect and how to invoke per command class, but it never names an alternative tool to use instead.

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

write_fileWrite a fileA
Destructive
Inspect

Create or replace a file. Keeps owner and mode of an existing file and saves its previous version under /var/lib/askyourstack/backups. Parent folders are created. Give the text as content, or a file from this conversation (an image generated here or one the user attached, up to 15 MB) as file, for example a picture into a shop's pub/media or wp-content/uploads folder; make it readable by the web server's user afterwards if the folder needs that.

NameRequiredDescriptionDefault
whyNoOne plain sentence for the user, shown on the approval page if this call needs their approval: what it does and why it is needed.
fileNoA file from this conversation, written as it is (its bytes, not text).
modeNoOctal, like 0644. Default: keep existing, or 0644.
pathYes
serverNoServer name or id. Optional when the account has one server.
contentNoThe file's text, or its bytes in base64 with encoding base64. Leave out when file is given.
encodingNo
approval_idNoOnly when repeating a call the user approved.

TDQS

A4/5.0
Behavior4/5

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

Rich disclosure beyond the annotations: backup path for the previous version, owner/mode preservation, automatic parent folder creation, a 15 MB cap on conversation files, and a nudge to fix readability for the web server user. It doesn't describe failure behavior or what the call returns, but for a destructive write this is well above the bar set by destructiveHint=true.

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?

Effectively three sentences, front-loaded with the action and its main consequences, then the input choice, then the caveat. Slightly overloaded with semicolon-joined clauses in the last sentence, but no filler.

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?

Covers the destructive-write semantics, backup and permission behavior, and the content/file split, which is most of what an agent needs. With 8 params, a nested object, an approval flow and no output schema, it still omits how the approval_id/why round trip works and what happens on failure.

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?

At 75% schema coverage and 8 params, the description still adds real meaning: content is text (or base64 via encoding), file is a binary from the conversation with a size limit not stated in the schema, and mode relates to who can read the result. Parameters like why, approval_id and server are left entirely to 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?

States a specific verb and resource — 'Create or replace a file' — in the very first sentence, and immediately clarifies that replacement preserves owner/mode and backs up the prior version. This clearly separates it from read_file and from content-writing siblings like content_save.

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?

It explains the content-vs-file choice with a concrete example ('a picture into a shop's pub/media or wp-content/uploads folder'), which is useful guidance, but usage is only implied. No sibling alternative is named (read_file, content_upload, content_save) and there is no when-not guidance.

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.

  1. 2 tool updates
    • Changedcontent_upload7 fields changed
      • addedInput schema / properties / alt_text / description
        Added value: +"Alt text for every image of the call, unless alt_texts gives one each."
      • addedInput schema / properties / alt_texts
        Added value: +{
        +  "description": "One alt text per image, in the order of images.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / data_base64
        Added value: +{
        +  "description": "One image's bytes in base64, only when files cannot be passed.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filename / description
        Added value: +"A name for the url or base64 image, like lavender-candle.png."
      • addedInput schema / properties / images
        Added value: +{
        +  "description": "Images from this conversation, as files.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "download_url": {
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 10,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / properties / url / description
        Previous value: -"Public address of the image."New value: +"Public address of one image."
      • removedInput schema / required
        Removed value: -[
        -  "url"
        -]
    • Changedwrite_file3 fields changed
      • addedInput schema / properties / content / description
        Added value: +"The file's text, or its bytes in base64 with encoding base64. Leave out when file is given."
      • addedInput schema / properties / file
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "A file from this conversation, written as it is (its bytes, not text).",
        +  "properties": {
        +    "download_url": {
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "path",
        -  "content"
        -]New value: +[
        +  "path"
        +]
  2. 5 tool updates
    • Addedgh_actions_cancel
    • Addedgh_actions_dispatch
    • Addedgh_actions_rerun
    • Addedgh_actions_rerun_failed
    • Removedgh_actions_run
  3. 1 tool update
    • Addedgsc_sitemap_submit
  4. 23 tool updates
    • Addedgh_accounts
    • Addedgh_actions
    • Addedgh_actions_run
    • Addedgh_branch
    • Addedgh_collaborator
    • Addedgh_commit
    • Addedgh_commits
    • Addedgh_create_repo
    • Addedgh_issue_create
    • Addedgh_issue_update
    • Addedgh_issues
    • Addedgh_pull_create
    • Addedgh_pull_merge
    • Addedgh_pulls
    • Addedgh_read
    • Addedgh_repo
    • Addedgh_repo_settings
    • Addedgh_repos
    • Addedgh_secret
    • Addedgit_deploy
    • Addedgit_link
    • Addedgit_push
    • Addedgit_status
  5. 1 tool update
    • Addedumami_journeys
  6. 4 tool updates
    • Addedumami_overview
    • Addedumami_realtime
    • Addedumami_report
    • Addedumami_websites
  7. 105 tool updates
    • First observedbing_backlinks
    • First observedbing_crawl
    • First observedbing_keywords
    • First observedbing_performance
    • First observedbing_sitemaps
    • First observedbing_sites
    • First observedbing_submit
    • First observedcf_analytics
    • First observedcf_dns_add
    • First observedcf_dns_change
    • First observedcf_dns_list
    • First observedcf_dns_remove
    • First observedcf_firewall_add
    • First observedcf_firewall_list
    • First observedcf_firewall_remove
    • First observedcf_purge_cache
    • First observedcf_settings
    • First observedcf_undo
    • First observedcf_zones
    • First observedconnected_sites
    • First observedcontent_get
    • First observedcontent_list
    • First observedcontent_save
    • First observedcontent_trash
    • First observedcontent_undo
    • First observedcontent_upload
    • First observedconvert_images
    • First observedcore_web_vitals
    • First observedcrawl_report
    • First observeddb_dump
    • First observeddb_query
    • First observeddb_restore
    • First observeddisavow_file
    • First observeddomain_keywords
    • First observedforget_note
    • First observedga4_ai_traffic
    • First observedga4_landing_pages
    • First observedga4_overview
    • First observedga4_properties
    • First observedga4_realtime
    • First observedga4_report
    • First observedget_playbook
    • First observedgoogle_updates
    • First observedgsc_cannibalization
    • First observedgsc_inspect_url
    • First observedgsc_opportunities
    • First observedgsc_performance_overview
    • First observedgsc_properties
    • First observedgsc_search_analytics
    • First observedgsc_sitemaps
    • First observedhealth_report
    • First observedindexnow_submit
    • First observedjob_output
    • First observedkeyword_ideas
    • First observedkeyword_volume
    • First observedlist_dumps
    • First observedlist_jobs
    • First observedlist_servers
    • First observedlist_sites
    • First observedlist_snapshots
    • First observedllms_txt
    • First observedlog_work
    • First observedlogs
    • First observedmagento
    • First observedmalware_scan
    • First observedmerchant_accounts
    • First observedmerchant_issues
    • First observedmerchant_products
    • First observedoverview
    • First observedpage_audit
    • First observedpage_content
    • First observedpage_links
    • First observedpropose_plan
    • First observedread_file
    • First observedredirects_apply
    • First observedredirects_find
    • First observedredirects_history
    • First observedredirects_list
    • First observedredirects_undo
    • First observedrobots_check
    • First observedrollback
    • First observedrun
    • First observedsave_note
    • First observedseo_fields_apply
    • First observedseo_fields_history
    • First observedseo_fields_list
    • First observedseo_fields_undo
    • First observedseo_history
    • First observedserp_check
    • First observedserver_facts
    • First observedsite_audit
    • First observedsite_audit_report
    • First observedsite_console
    • First observedsitemap_check
    • First observedsnapshot
    • First observedstart_job
    • First observedstop_job
    • First observedtransfer
    • First observedtransfer_close
    • First observedvalidate_schema
    • First observedwait_for_approval
    • First observedwhizzy_call
    • First observedwhizzy_tools
    • First observedwp
    • First observedwrite_file

Publisher details

Operator
Whizzy Digital Solutions Lda
Vendor relationship
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    23 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources