Skip to main content
Glama

Server Details

Manage your Squish domains, DNS, hosting, backups and site files from your AI assistant.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 42 tools

Disambiguation3/5

Several tool families genuinely overlap: six price/catalog tools (get_public_pricing vs get_email_catalog, get_hosting_catalog, get_addon_catalog, get_hosting_addons_catalog, get_billing_terms) return largely the same data, and the diagnostics cluster (check_uptime, get_my_site_health, get_my_site_runtime, diagnose_my_server, lookup_ip_hosting, detect_web_host) requires careful reading to separate. The descriptions do a lot of explicit routing work ("for X use Y instead"), which saves it, but an agent must parse long prose to pick correctly rather than relying on clearly distinct purposes.

Naming Consistency4/5

Verb prefixes form a meaningful, mostly predictable system: check_* for external diagnostics, get_my_*/list_my_* for the customer's own resources, lookup_*/detect_*/scan_*/trace_* for public probes, and get_*_catalog for pricing. Deviations are minor but real: get_dns_records is customer-scoped yet lacks the get_my_ prefix used by siblings, and read_site_file (singular) pairs with the absent write_site_files (plural).

Tool Count2/5

42 tools is well past the heavy threshold for what is fundamentally a hosting/domain/email account surface, and the count is inflated by redundancy (six catalog/pricing tools, four overlapping site-diagnostic tools). The breadth is real domain breadth, but the set would be far more usable consolidated to roughly 20-25 tools.

Completeness3/5

Coverage across domains, DNS, hosting, email migration, billing, backups, cases, file browsing and security diagnostics is broad and would cover most read workflows. However, several tools referenced in descriptions are absent from the surface — write_site_files, restore_my_site_backup, start_email_migration, prepare_domain_transfers, and any cart/checkout or ticket-creation tool — leaving agents with dead ends after list_my_backups, get_migration_status, and the file-read flow.

Available Tools

42 tools
check_ai_visibilityCheck ai visibilityA
Read-onlyIdempotent
Inspect

Check how legible and citable a business website is to AI answer engines (ChatGPT, Perplexity, Google AI answers) and get an A-F grade with plain-English findings. Checks whether an AI crawler can read the site at all (the JS/SPA-render problem), whether it has business structured data (schema), whether it has Q&A-style content, and whether answer-engine crawlers are allowed. Returns { domain, grade, score, headline, summary, readability, structure, legibility, posture, findings, remediation }. Call this when someone asks whether AI/ChatGPT can find or read their business, about "AI SEO" / answer-engine optimization, or wants their AI visibility graded. HONESTY: this measures whether AI can SEE and UNDERSTAND the business — never promise an engine will recommend or cite them; that is influence, not a guarantee. Works on any public website — no login required.

NameRequiredDescriptionDefault
domainYesThe website to check (e.g. "example.com"). Do not include a protocol or path.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only, open-world, idempotent, non-destructive, but the description adds what those can't: the exact returned payload shape, the no-login/public-site constraint, and an explicit honesty boundary that the grade measures visibility, not recommendation likelihood. That is genuine behavioral context beyond 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-loads the purpose, then the sub-checks, then the trigger conditions, then the caveat — a sensible order. It is on the long side, and the enumerated return-field list and honesty paragraph make it dense, but each part serves a distinct decision the agent must make.

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, yet the description lists the returned keys (domain, grade, score, headline, readability, structure, legibility, posture, findings, remediation), so an agent knows what comes back. Combined with single-parameter input and clear trigger guidance, nothing needed 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?

Schema coverage is 100% and already documents the domain format (no protocol or path). The description contributes the additional constraint that it must be a public website requiring no login, which meaningfully bounds which values are valid 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 (check) and a precisely scoped resource: how legible and citable a business website is to AI answer engines, with an A-F grade. It enumerates the four sub-checks (crawler readability/JS rendering, structured data, Q&A content, crawler permissions), which clearly separates it from siblings like get_my_ai_visibility_coverage and plan_ai_visibility_fixes.

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 trigger conditions: someone asks whether AI/ChatGPT can find or read their business, mentions 'AI SEO'/answer-engine optimization, or wants a grade. Also states eligibility ('any public website — no login required'). It stops short of naming the sibling tools it supersedes or excludes (e.g. the coverage/plan tools), so it is clear context without full alternative routing.

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

check_blacklistCheck blacklistA
Read-onlyIdempotent
Inspect

Check whether a domain or its IP address appears on major spam and malware blacklists (Spamhaus ZEN, SORBS, SpamCop, Barracuda, Spamhaus DBL, URIBL, SURBL). Returns { domain, ip, blacklisted, listedOn[], cleanOn[], checkedLists, note? }. When the domain has no A record, ip is null and only the domain-based lists are checked (note explains the partial result). Call this when someone asks about email deliverability problems, whether their domain is blacklisted, why their emails land in spam, or if their IP has a bad reputation. No login required.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g. "example.com").

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the bar is lower, but the description still adds substantial value: the exact return shape, the partial-result edge case when no A record exists (ip null, domain-only lists, note field), and the fact that no login is required. These are behavior facts 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.

Conciseness5/5

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

Purpose is front-loaded in sentence one, return shape and the edge case follow, and the usage triggers close. No redundant restatement of the tool name or title; every sentence carries a distinct payload.

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

Completeness5/5

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

With no output schema, the description compensates by enumerating the response fields, and it covers the one meaningful failure mode (missing A record). For a single-parameter read tool, an agent has everything needed to call it and 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 coverage is 100% with a single required `domain` parameter already documented with an example, so the schema does the heavy lifting. The description clarifies that IP-based lookups derive from the domain's A record rather than being a separate input, which is mild but real added meaning; 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?

Opens with a specific verb+resource ("Check whether a domain or its IP address appears on ... blacklists") and enumerates the actual blocklists consulted, so the agent knows exactly what is and isn't covered. This clearly separates it from siblings like check_email_auth or lookup_dns, which touch adjacent email/DNS territory.

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 four concrete triggering situations (deliverability problems, blacklist status, spam folder complaints, IP reputation), which is strong when-to-use guidance. It stops short of explicitly excluding or naming the nearest sibling (check_email_auth) for overlapping email-deliverability questions, 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.

check_email_authCheck email authA
Read-onlyIdempotent
Inspect

Check a domain's email authentication posture — SPF, DKIM, and DMARC — and get an A-F grade with plain-English findings. Returns { domain, grade, provider, spf, dkim, dmarc, findings, migration }. Call this when a customer asks about email deliverability, DMARC policy, SPF records, DKIM setup, or why their email is landing in spam. Works on any public domain — no login required.

NameRequiredDescriptionDefault
domainYesThe domain to inspect (e.g. "example.com"). Do not include a protocol or path.

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 description's added value is auth/side-effect context: 'Works on any public domain — no login required' and the enumerated return keys. It does not mention rate limits or how partial/missing records are reported, keeping it below 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?

Three tight sentences: capability and output first, then when-to-call triggers, then the access precondition. No filler and the most decision-relevant 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?

There is no output schema, but the description enumerates the returned fields (domain, grade, provider, spf, dkim, dmarc, findings, migration), and it covers the sole parameter's constraint and access model. An agent has everything needed to call and interpret results.

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 with 100% schema description coverage, and the schema already says not to include protocol or path. The description's 'any public domain — no login required' adds marginal context but no new syntax or format guidance 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 ('Check a domain's email authentication posture') plus the exact protocols covered (SPF, DKIM, DMARC) and the output form (A-F grade). This clearly separates it from siblings like detect_email_provider, check_blacklist, and get_dns_records.

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 invocation triggers: deliverability questions, DMARC policy, SPF records, DKIM setup, spam complaints. It does not explicitly exclude or name alternatives (e.g. 'use get_dns_records for raw records only'), 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.

check_security_headersCheck security headersA
Read-onlyIdempotent
Inspect

Check a website's HTTP security headers and get an A-F grade. Tests for HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy. Returns { domain, grade, score, checks[], server }. Call this when someone asks about website security, why their site got a bad security score, how to improve their security headers, or what headers they're missing. No login required.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g. "example.com").

TDQS

A4.2/5.0
Behavior4/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 covered. The description adds value beyond them by disclosing the return payload keys and that 'No login required,' which tells the agent it can call this unauthenticated. Minor gap: no latency or rate-limit context for an open-world network call.

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 contents, return shape, and triggers — every sentence carries information. Slight inefficiency in placing the use-case sentence after the return-shape sentence, which buries the routing signal, and the header list is long but justified.

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 naming the returned fields ({ domain, grade, score, checks[], server }). Combined with the tested-header list, auth note, and trigger cases, an agent has everything needed to select and invoke this 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?

With a single parameter at 100% schema description coverage, the schema already fully documents 'domain' with an example. The description adds only the framing 'a website's... headers', confirming the domain is the target, but supplies no format details (protocol, subdomain, path handling). 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 ('Check a website's HTTP security headers'), names the output artifact (A-F grade), and enumerates the exact headers tested. That enumeration distinguishes it from siblings like check_ssl or check_blacklist without needing to reference them by name.

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 trigger conditions: 'when someone asks about website security, why their site got a bad security score, how to improve their security headers, or what headers they're missing.' This covers the initiating intents well, though it does not state when to prefer a sibling (e.g. check_ssl for certificate questions) or any excluded case.

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

check_sslCheck sslA
Read-onlyIdempotent
Inspect

Check the SSL/TLS certificate for a domain. Returns validity, issuer, subject, expiry date, days remaining, SANs, and TLS protocol version. Call this when a customer asks about HTTPS, SSL errors, certificate warnings, or when a certificate is expiring. Works on any public domain — no login required.

NameRequiredDescriptionDefault
domainYesThe domain to check (e.g. "example.com" — do not include https://).

TDQS

A4.5/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 bar is low. The description still adds real value: it states no login is required and that it works on public domains only, and it lists the return fields (validity, issuer, subject, expiry, days remaining, SANs, TLS version) in the absence of an 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?

Three short sentences, front-loaded with purpose, then triggers, then scope/access constraint. Every sentence carries information; nothing is restated.

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-parameter read-only lookup with no output schema, this covers purpose, invocation triggers, expected return data, and the no-auth/public-domain scope. 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?

Schema coverage is 100% and the schema already documents the single 'domain' parameter with a format example. The description adds a semantic constraint the schema lacks — the value must be a public domain and no authentication is needed — which meaningfully bounds what to pass.

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 ('Check the SSL/TLS certificate for a domain') and enumerates what it returns, which cleanly separates it from siblings like check_security_headers, check_uptime, or check_blacklist. An agent can route to it 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 concrete triggering conditions: customer asks about HTTPS, SSL errors, certificate warnings, or an expiring certificate. It stops short of naming alternatives (e.g. use check_security_headers for HSTS/CSP), so there is no explicit exclusion guidance, but usage context is clear.

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

check_uptimeCheck uptimeA
Read-onlyIdempotent
Inspect

Check whether a website is up and reachable right now. Tests both HTTPS and HTTP, reports HTTP status code, response time in milliseconds, and whether the server redirects. Returns { domain, online, primaryStatus, https, http }. Call this when someone asks "is my site down?", "why is my website not loading?", or any question about site availability. No login required.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g. "example.com").

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 both HTTPS and HTTP are tested, that the response includes timing and redirect detection, the exact return shape, and that no login is required — useful auth context not in the structured fields. It doesn't mention timeout behavior or what happens for non-resolving domains, 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.

Conciseness5/5

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

Four tight sentences, front-loaded with what is tested, followed by the return shape and then the trigger scenarios. Every sentence carries information an agent would otherwise have to infer.

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

Completeness5/5

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

With no output schema, the description compensates by enumerating the returned fields, and it also covers the input meaning, usage triggers, and auth requirement. For a one-parameter read-only probe, nothing essential to 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 coverage is 100% and the single 'domain' parameter already carries an example format, so the schema does the heavy lifting. The description adds no constraint (e.g., scheme-less vs. full URL handling) beyond what the schema states — baseline 3.

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?

Specific verb+resource: 'Check whether a website is up and reachable right now,' with the probe scope (HTTPS and HTTP, status code, response time, redirects) spelled out. It is implicitly distinguishable from neighbors like check_ssl or trace_redirects, but never names a sibling to draw that boundary explicitly.

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 trigger phrasing — 'is my site down?', 'why is my website not loading?', 'any question about site availability' — so the agent knows when to reach for it. It offers no when-not guidance or named alternative (e.g., when to prefer diagnose_my_server or get_my_site_health instead).

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

detect_email_providerDetect email providerA
Read-onlyIdempotent
Inspect

Inspect a customer's email domain via Microsoft's public getuserrealm.srf endpoint to figure out whether their Microsoft 365 is bought direct from Microsoft or resold through GoDaddy. Use this IMMEDIATELY after the customer gives you their email domain in a migration conversation, BEFORE asking "is it Microsoft Direct or GoDaddy?" — the answer should come from this tool, not from the customer.

Returns { likelyProvider: "microsoft-direct" | "godaddy", confidence: "high" | "medium" | "low", ... }. Pass likelyProvider straight to start_email_migration as the source argument. You do NOT need to mention the detection step to the customer — just proceed. The source field only affects post-migration UX (which URL we point the customer to for cancelling their old subscription), so a wrong guess is easily corrected mid-flow. NEVER respond to a "you tell me?" question with "I can't tell" — call this tool instead.

Idempotent + side-effect-free (just an outbound HTTP GET to login.microsoftonline.com); safe to call multiple times.

NameRequiredDescriptionDefault
domainYesThe customer's email domain (e.g. "acme.com").

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real context beyond them: the concrete endpoint called, that a wrong guess only affects post-migration UX and is easily corrected, and how to consume the result downstream. Some phrasing ('idempotent + side-effect-free, safe to call multiple times') merely restates the annotation hints, which keeps it out of 5 territory.

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 trigger timing, then return shape and downstream usage. It runs long and includes some conversational coaching with heavy capitalization, but nearly every sentence carries operational value rather than 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 does the work of describing the return shape ({likelyProvider, confidence, ...}) and how to use it, plus a note on the consequence of an incorrect result. Only a slight gap remains on error/failure behavior when the endpoint cannot classify a domain.

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% and the single parameter is self-evident, so the baseline is 3; the description earns above baseline by explaining the value chain — take likelyProvider and pass it to start_email_migration as `source` — which is semantics the schema cannot express.

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 (inspect a customer's email domain via getuserrealm.srf) and a precise decision outcome (Microsoft direct vs. GoDaddy resale). An agent can distinguish it from every sibling check_* 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 Guidelines5/5

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

Explicit timing ('IMMEDIATELY after the customer gives you their email domain'), explicit precondition ('BEFORE asking is it Microsoft Direct or GoDaddy'), and an explicit anti-pattern ('NEVER respond to a you tell me? question with I can't tell'). This is textbook when-to-use guidance.

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

detect_technologyDetect technologyA
Read-onlyIdempotent
Inspect

Detect the technologies powering a website — CMS (WordPress, Shopify, Drupal, etc.), CDN (Cloudflare, Fastly, CloudFront, etc.), web server, frontend framework (Next.js, Gatsby, Nuxt, etc.), and analytics platforms. Returns { domain, cms, cdn, server, framework, metaGenerator, analytics[] }. Call this when someone asks what platform a site runs on, what CMS a competitor uses, what CDN a site is behind, or what stack powers a website. No login required.

NameRequiredDescriptionDefault
domainYesDomain to inspect (e.g. "example.com").

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: 'No login required' (an auth prerequisite the agent couldn't otherwise know) and the concrete return shape. It doesn't mention rate limits, caching, or what an empty result means for an unreachable site.

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 sentences, front-loaded with the capability and followed by return shape then usage triggers; each sentence carries distinct information. The vendor example lists ('WordPress, Shopify, Drupal, etc.') add mild bulk but are functional for intent matching.

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 fully by spelling out the returned object ({ domain, cms, cdn, server, framework, metaGenerator, analytics[] }). Combined with the auth note, an agent has everything needed to call this correctly on the first attempt.

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 parameter with 100% schema description coverage, and the schema already provides the format example ('example.com'). The description adds no detail on domain normalization, subdomains, or URL-vs-domain input, so it does not exceed the baseline the schema already earns.

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 (detect) and resource (technologies of a website) and then enumerates exactly what it covers: CMS, CDN, web server, frontend framework, analytics, with concrete vendor examples. An agent can distinguish this from lookup_whois or check_ssl 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 four explicit user-intent triggers ('what platform a site runs on', 'what CMS a competitor uses', 'what CDN a site is behind', 'what stack powers a website'), which is strong positive routing. It stops short of naming a sibling like detect_web_host or lookup_ip_hosting to say when this tool is the wrong choice, so no exclusions are specified.

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

detect_web_hostDetect web hostA
Read-onlyIdempotent
Inspect

Find out WHO HOSTS a website — the hosting company behind a domain, plus the CDN in front of it, the DNS provider, and the email provider. Returns { domain, host: { name, kind, confidence, evidence[] }, originHidden, proxy, ip, dns, email, platform, migration }. host.kind is one of platform | managed-wordpress | shared | cloud | edge | squish. IMPORTANT: when originHidden is true the site sits behind a CDN (usually Cloudflare) and the real host could NOT be identified — say so plainly instead of naming the CDN as the host. Call this when someone asks who hosts a site, who a competitor hosts with, where a site they inherited is running, or what they would be migrating away from. For the CMS/stack running on top, use detect_technology instead. No login required.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g. "example.com").

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say read-only/idempotent/open-world; the description adds the critical interpretive constraint that originHidden=true means the real host is unknown and the CDN must not be reported as the host. It also discloses no-login availability and describes the result shape (confidence, evidence, host.kind enum). This is disclosure beyond what structured fields 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?

Purpose and scope are front-loaded in the first clause, followed by return shape, then the caveat, then usage. The inline enumeration of return fields and the host.kind values is dense but useful for a schemaless return; only minor trimming would help.

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 carries the return contract itself — it names every top-level field and the host.kind vocabulary, plus the originHidden interpretation rule. An agent can both call this correctly and report its result honestly without further context.

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 and schema coverage is 100%, so the schema already fully documents 'domain' including an example. The description adds nothing about domain format, subdomain handling, or normalization rules, 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 and resource ('Find out WHO HOSTS a website') and enumerates exactly what is resolved: hosting company, CDN, DNS provider, email provider. It explicitly distinguishes itself from the similarly-named detect_technology sibling, which removes the main ambiguity an agent would face.

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 concrete triggering questions ('who hosts a site', 'who a competitor hosts with', 'where a site they inherited is running') and an explicit alternative with its condition ('For the CMS/stack running on top, use detect_technology instead'). This is the when-to-use / when-to-use-something-else pattern at full strength.

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

diagnose_my_serverDiagnose my serverA
Read-onlyIdempotent
Inspect

Diagnoses performance on the customer's own VPS from the server's telemetry — CPU load relative to their plan's vCPU count, memory pressure, and disk fullness — and explains in plain language what is wrong. Use for "why is my site slow?", "is my server struggling?", "do I need a bigger plan?", "is my disk full?". This is server-side and VPS-only. For shared hosting it returns not_applicable — say so rather than guessing. For whether a site is REACHABLE use check_uptime; for uptime HISTORY use get_my_site_health. IMPORTANT: lead with summary, then the individual findings detail lines. If agentReporting is false, the server is NOT confirmed healthy — we simply cannot see it; say that plainly. Only raise upgrading when upgradeSuggested is true; when it is false and the box is healthy, say the bottleneck is above the server (application, plugins, queries) rather than selling a bigger plan.

NameRequiredDescriptionDefault
domainNoWhich of the customer's own sites to diagnose. Optional when they have exactly one.

TDQS

A4.6/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, closed-world), and the description adds substantial behavior beyond them: the not_applicable shared-hosting outcome, the meaning of agentReporting=false (server not confirmed healthy, just unobservable), and the rule to only mention upgrading when upgradeSuggested is true. That is exactly the kind of interpretation guidance 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 scope are front-loaded in the first sentence, followed by usage triggers, alternatives, and output-handling rules in a logical order with no filler. It is on the long side because of the output narration instructions, but each sentence carries actionable content rather than padding.

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, so the description correctly compensates by naming the key return fields (`summary`, `findings`, `agentReporting`, `upgradeSuggested`) and prescribing how to present them. Combined with the plan-scoped diagnostics and hosting-type caveat, an agent has everything needed to call and 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?

There is a single optional parameter at 100% schema description coverage, so the schema already explains `domain` as the site to diagnose. The description adds only the mild constraint that it is optional when the customer has exactly one site, which is essentially a restatement. 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 and resource (diagnoses performance of the customer's own VPS) plus the exact signal domains it covers: CPU load vs. plan vCPU count, memory pressure, disk fullness. It explicitly distinguishes itself from check_uptime (reachability) and get_my_site_health (history), so an agent can route 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 concrete trigger phrasings ("why is my site slow?", "do I need a bigger plan?") and explicit exclusions with named alternatives for reachability and uptime history. It also states the shared-hosting case returns not_applicable and instructs the agent to say so rather than guess.

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

get_account_infoGet account infoA
Read-onlyIdempotent
Inspect

Returns the customer's profile on file — name, email, phone, billing address, company, and account number. Use when the user asks "what's my address on file?", "what's my account number?", or wants to verify what we have. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 clear. The description adds the returned field list and repeats that the operation is read-only, but does not discuss PII sensitivity, permissions, or any limits. With annotations covering the safety behavior, this is adequate but modest.

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: field list, usage examples, and read-only note. The content is front-loaded and every sentence contributes useful selection or behavior 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 zero-parameter, read-only profile lookup with no output schema, the description provides enough content by listing the exact fields returned and giving usage examples. It does not need to explain inputs or return structure beyond the field enumeration, though it could mention sensitivity or freshness of the on-file data.

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 parameter semantics are not applicable and the baseline is high. The schema is empty and fully described by virtue of having no inputs, and the description correctly does not invent parameter behavior.

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 verb and resource — returning the customer's profile — and enumerates the exact fields returned (name, email, phone, billing address, company, account number). This clearly separates it from sibling catalog, DNS, and diagnostic tools, though it does not explicitly name an alternative.

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 user-intent examples such as “what's my address on file?” and “what's my account number?”, which tells the agent when this tool is appropriate. It lacks explicit when-not conditions or named alternative tools, so it is clear but not fully prescriptive.

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

get_addon_catalogGet addon catalogA
Read-onlyIdempotent
Inspect

Fetch the canonical Squish email add-on catalog with up-to-date pricing. YOU MUST CALL THIS BEFORE QUOTING ANY ADD-ON PRICE — Copilot, Teams Phone, Entra ID P1, Power BI, Project Plan 3, Exchange Online Archiving. Do not guess from memory. Same doctrine as get_email_catalog.

Returns an object keyed by canonical Squish add-on SKU. Each entry has:

  • label: Squish-facing display name

  • msProductName: Microsoft's current product name. USE THIS in customer prose; NEVER the SKU part number.

  • category: AI | Voice | Security | Productivity | Storage

  • monthly / annual: Squish per-user/mo retail. annualOnly:true means monthly is null (Power BI Pro).

  • msDirectAnnual / msDirectMonthly: Microsoft direct retail — honest comparison. Squish sits at parity to a few $/mo over MS direct (the managed-service / relationship premium, not a markup play); never claim cheaper than direct unless the catalog entry actually shows it.

  • requiresBaseTier: customer must have at least this base email tier before they can buy the add-on (Microsoft requires a base license).

  • bundledFreeIn: tiers that include this add-on at no extra charge (e.g., addon-entra-id is free in email-business-prem).

  • selfServe: false today = catalog-only display; cannot actually be purchased yet. Tell the customer "we'll have this purchasable soon — in the meantime, our team can set it up manually" rather than offering checkout.

Read-only, no side effects, safe to call freely.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description explains the catalog shape, SKU-keyed entries, field meanings, pricing comparison caveats, base-tier requirements, bundled-free cases, and how to handle selfServe=false items. It also clarifies that unlisted discounts or cheaper-than-direct claims should not be made unless the catalog shows them.

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 purpose and the mandatory call-before-quoting rule, then uses bullets to structure return fields and handling instructions. It is longer than a simple catalog tool might need, but the detail earns its place because no output schema exists and the pricing semantics are nuanced.

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 supplies the return structure, field meanings, pricing interpretation, base-tier constraints, free-bundling behavior, and purchasing caveats. Combined with annotations covering read-only safety, this is complete enough for correct invocation and downstream use.

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 no parameter semantics to explain; the schema is empty and fully covered. The description correctly focuses on return data and usage rather than inventing parameter guidance.

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: fetch the canonical Squish email add-on catalog with current pricing. It also names representative products and distinguishes this from get_email_catalog, so an agent can identify its scope 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 gives a strong imperative usage rule: call this before quoting any add-on price, and do not guess from memory. It references get_email_catalog as related doctrine, but does not explicitly state when to use that sibling instead, so it falls short of full when/when-not guidance.

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

get_billing_termsGet billing termsA
Read-onlyIdempotent
Inspect

Fetch the canonical Squish billing-term catalog. CALL THIS before quoting ANY multi-year rate (2-year, 3-year hosting; 2-10 year domain registration). Returns per-category (hosting / domain / email) term options, the rate factor multiplier for each term, customer-facing label, and the framing language to use when describing it. CRITICAL: never quote a rate factor or percentage from memory — the catalog is the contract, and Squish changes the strategy from time to time. Also CRITICAL: respect the framing field. Squish is NOT a discount company; never use the words "discount", "save", "sale", "deal", or "% off" in the customer-facing response. Use the framing language verbatim or close to it.

Shape: { hosting: { termsMonths: [12,24,36], rateFactor: {12:1.0, 24:0.95, 36:0.90}, label: {12:"1 year", ...}, framing: "..." }, domain: {...}, email: {...} }.

Math: effectiveMonthly = stickerMonthly × rateFactor[termMonths]. total = effectiveMonthly × termMonths. Domain rateFactor is ALWAYS 1.0 (pass-through — customer value is locking in TLD pricing, not a rate change). Email is 12-only today (multi-year coming when Squish becomes direct CSP — never promise multi-year email to a customer).

Read-only, no side effects, safe to call freely.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/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), and the description goes well beyond them: the catalog is authoritative and changes over time, domain rate factors are always pass-through 1.0, email is 12-month-only with no multi-year promise, and there are hard constraints on framing vocabulary.

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 the trigger, followed by shape and math sections that earn their place. It is dense but slightly redundant with two 'CRITICAL' blocks and a repeated framing warning, which costs it a point.

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 supplies the return shape, the per-category structure, the rate-factor math, and the domain/email exceptions. That is exactly what an agent needs to call it and use the result 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 input parameters, so there is nothing to document on the input side and the baseline of 4 applies. The description usefully redirects that space into describing the return shape and math instead.

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: 'Fetch the canonical Squish billing-term catalog.' It immediately distinguishes itself from catalog siblings (get_hosting_catalog, get_public_pricing) by declaring this is the rate-factor/term source of truth.

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: 'CALL THIS before quoting ANY multi-year rate (2-year, 3-year hosting; 2-10 year domain registration).' It also names the prohibited alternative ('never quote a rate factor or percentage from memory') and constrains email to 12-month quotes only.

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

get_dns_recordsGet dns recordsA
Read-onlyIdempotent
Inspect

Returns the DNS records currently set on a domain the customer owns (A, AAAA, CNAME, MX, TXT, NS, etc.) — same data as the registrar's DNS panel. Use when the user asks "what's my A record on x.com?", "show me my MX records", "what does my DNS look like?". Pre-checks that the domain is on the customer's account; returns a clear error if not. Read-only.

NameRequiredDescriptionDefault
domainYesThe domain to look up DNS for (e.g. "example.com"). Must be a domain the customer owns.

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/openWorld=false, so the safety profile is covered. The description adds real value beyond that: it pre-checks domain ownership and returns a clear error if the domain isn't on the account, which an agent needs to interpret failures correctly.

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 behavior, then examples, then pre-check behavior — good ordering with no filler. The three example queries are slightly redundant with each other but each illustrates a distinct lookup style, so the cost is small.

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 return-value burden and does reasonably: it names the record types returned and the error case. It omits response shape/ordering details and doesn't clarify how results differ from lookup_dns, leaving minor gaps for an otherwise simple 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?

Only one parameter with 100% schema coverage, so the baseline is 4. The description reinforces the ownership constraint ('a domain the customer owns'), matching the schema description without adding contradicting detail.

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 ('Returns the DNS records currently set on a domain') and enumerates record types (A, AAAA, CNAME, MX, TXT, NS) with a concrete analogy ('same data as the registrar's DNS panel'). It doesn't differentiate from the sibling lookup_dns, which is the main gap.

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 trigger examples ('what's my A record on x.com?', 'show me my MX records'), which directly maps user intent to this tool. It stops short of naming alternatives like lookup_dns or list_my_domains, so the agent must still infer which DNS-related sibling to pick.

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

get_email_catalogGet email catalogA
Read-onlyIdempotent
Inspect

Fetch the canonical Squish email product catalog with up-to-date pricing. YOU MUST CALL THIS BEFORE QUOTING ANY EMAIL TIER PRICE TO A CUSTOMER. Do not guess prices from memory. Do not paraphrase "around $5/mo" — call this tool and quote the exact catalog value.

Returns an object keyed by canonical Squish SKU. Each entry has:

  • label: Squish tier name ("Essentials", "Professional", "Pro Plus", "Business Premium")

  • msProductName: Microsoft's current product name ("Microsoft 365 Business Basic"). USE THIS in customer prose, NEVER the SKU part number ("O365_BUSINESS_ESSENTIALS") and NEVER confuse Microsoft's legacy "Business Essentials" name with Squish's "Essentials" tier — they are different products at different prices.

  • monthly: Squish per-user/mo on month-to-month billing

  • annual: Squish per-user/mo equivalent on annual billing

  • msDirectAnnual / msDirectMonthly: what Microsoft charges direct, for honest comparison. Squish is typically $1-3/mo MORE than Microsoft direct per tier (the reseller markup) — never claim we're cheaper than Microsoft if msDirectAnnual < annual. The value prop is consolidated billing + Squish support, not raw price.

  • selfServe: whether the migration card surfaces this tier (false = E3/E5 sales-led)

Read-only, no side effects, safe to call freely.

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, and the closing 'Read-only, no side effects, safe to call freely' merely restates them. What the description adds beyond annotations is genuinely valuable: the semantic trap between Squish 'Essentials' and Microsoft's legacy 'Business Essentials', and the reseller-markup rule ('never claim we're cheaper than Microsoft if msDirectAnnual < annual') that governs downstream claims.

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 imperative call directive is front-loaded, followed by a clean field-by-field breakdown, so scanning works well. It is on the long side and includes some redundancy (the read-only sentence duplicates annotations, and the 'around $5/mo' illustration could be trimmed), but essentially every block carries operational value.

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 document the return shape — and it does, field by field (label, msProductName, monthly, annual, msDirectAnnual/msDirectMonthly, selfServe) including the meaning of selfServe=false as E3/E5 sales-led. Nothing material is left for the agent to discover at call time.

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 for the description to supplement — baseline 4 applies. The description instead spends its space on return-field semantics, which is the right allocation for a no-arg tool.

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 — 'Fetch the canonical Squish email product catalog with up-to-date pricing' — and scopes it to email tiers, which separates it from the hosting/addon/public-pricing siblings without needing to name them. An agent knows exactly what corpus of data 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 Guidelines5/5

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

It gives an explicit, non-negotiable trigger ('YOU MUST CALL THIS BEFORE QUOTING ANY EMAIL TIER PRICE') plus explicit exclusions ('Do not guess prices from memory', 'Do not paraphrase'). The anti-patterns it forbids are concrete, which is better routing guidance than most catalog tools get.

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

get_hosting_addons_catalogGet hosting addons catalogA
Read-onlyIdempotent
Inspect

Fetch the canonical Squish hosting ADD-ON catalog. CALL THIS for any question about control panels, managed backups, monitoring, the Faber Token Pack, or any "what comes with" / "can I add" question about hosting.

Returns add-ons grouped into two families:

  • "panel" family: control panel install — choose ONE (or none) per VPS. Free option, with paid upgrades available. Specific products in catalog.

  • "functional" family: cross-tier features — choose ZERO OR MANY per order. managed-backups-plus ($9/mo), managed-monitoring ($9/mo), faber-tokenpack ($10 one-time), plus the AI Visibility lines

Each entry has:

  • family: "panel" | "functional"

  • label, desc, priceDisplay (quote VERBATIM)

  • monthly: recurring per-month numeric (null/0 for free/one-time)

  • oneTime: one-time charge numeric (null for recurring add-ons; the Faber Token Pack is the one-time one)

  • grantsEdits: on the Faber Token Pack only — AI edits credited per pack

  • selfServe: cart-buyable today vs awaiting orchestrator build

  • appliesToCategories: which compute tiers this add-on attaches to

  • provisionerKey: internal cloud-init switch identifier (devops detail)

WHEN TO MENTION ADD-ONS:

  • For VPS purchases, mention a control panel ships free with paid upgrades available — only name specific panels (Plesk) if the customer asks about a specific one. If a customer asks for cPanel specifically: we don't offer cPanel — the panel we include covers the same jobs, and the team can help move an existing cPanel site over (offer a callback). Default phrasing: "ships with a free control panel, with paid upgrades available if you want them".

  • When a customer mentions WordPress + "fast" / "easy" / "build it for me", the answer is the FABER BY SQUISH PLAN (sku hosting-faber, $20/mo, in get_hosting_catalog) — a plan, not an add-on; nothing in this catalog builds a site.

  • Mention Backups Plus whenever customer asks about data safety / disaster recovery.

  • FABER TOKEN PACK (hosting-addon-faber-tokenpack): a one-time top-up of AI edits for a Faber by Squish subscriber who has used the month's included allowance. Stackable, never expires. When its selfServe is true it is bought in ONE place: a one-click button the Faber builder page shows the moment they hit the wall — send them to /faber; NEVER add it to a cart from chat. If they have not hit the wall, do not pitch it: the plan already includes the edits. When selfServe is false, do not mention it exists.

  • DO NOT proactively pitch Site Patrol — it is a standalone WordPress plugin, NOT a hosting add-on. Only mention it if the customer specifically asks about WordPress security or about that plugin by name.

SELF-SERVE GUARD (hard rule): NEVER present, quote, or attempt to add an add-on with selfServe:false as something the customer can buy or add to a cart right now. These are sales-led / awaiting orchestrator build. You may describe that they exist if asked by name, but route any purchase intent to the inquiry/sales flow. The server refuses to provision or bill selfServe:false add-ons regardless, so claiming otherwise would mislead the customer.

Read-only, no side effects, safe to call freely.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Although annotations already declare readOnly, idempotent, and non-destructive behavior, the description adds substantial operational context beyond them. It discloses the catalog grouping, per-entry fields, the hard self-serve guard, and the server-side refusal to provision or bill selfServe:false add-ons. It also clarifies sales behavior around the Faber Token Pack and Site Patrol, which is exactly the kind of contextual behavior an agent needs.

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

Conciseness4/5

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

The description is front-loaded with purpose and catalog structure, then uses clear headings for when to mention add-ons and the self-serve guard. It is longer than a typical catalog-fetch description, but most sentences carry actionable policy or routing information; there is little repetition.

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

Completeness5/5

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

Given the tool's complexity around sales policy, self-serve restrictions, and catalog entry semantics, the description is complete enough for an agent to call it correctly and use the result correctly. No output schema exists, but the description explains the returned fields and the key guardrails in sufficient detail.

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 schema semantics are not a concern and the baseline is 4. The description instead documents return-entry fields such as family, priceDisplay, monthly, oneTime, grantsEdits, selfServe, and appliesToCategories, which is useful context but belongs more to output semantics than 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?

The description states a specific verb and resource: fetch the canonical Squish hosting add-on catalog. It clearly distinguishes this catalog from sibling catalogs by naming what it contains (control panels, backups, monitoring, Faber Token Pack) and by explicitly routing Faber plan questions to get_hosting_catalog. An agent can identify the right 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 Guidelines5/5

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

It gives explicit when-to-use triggers, such as any question about control panels, managed backups, monitoring, or 'can I add' hosting questions. It also names alternatives and exclusions: use get_hosting_catalog for the Faber plan, do not proactively pitch Site Patrol, and route selfServe:false add-ons to sales rather than presenting them as purchasable.

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

get_hosting_catalogGet hosting catalogA
Read-onlyIdempotent
Inspect

Fetch the canonical Squish hosting product catalog with up-to-date pricing. YOU MUST CALL THIS BEFORE QUOTING ANY HOSTING PRICE TO A CUSTOMER. Do not guess prices from memory. Same doctrine as get_email_catalog.

Returns COMPUTE TIERS keyed by canonical Squish SKU. Tiers are mutually exclusive — customer picks one. For VPS add-ons (panels, backups, monitoring, etc.) call get_hosting_addons_catalog instead.

Each entry has:

  • label: customer-facing display name (Web Hosting, Faber by Squish, Cloud Essentials, Cloud Business, Cloud Scale, Cloud Power, Cloud Custom, Managed AWS)

  • category: "shared" | "vps" | "enterprise" for grouping

  • desc: one-line marketing description

  • priceDisplay: rendered price string ("$49/mo", "From $5,000/mo") — quote VERBATIM

  • monthly: numeric per-month price (null for sales-led)

  • selfServe: true = buyable via cart; false = sales-led, route to inquiry form

  • defaultPanel: default panel for VPS Setup Options modal ("cyberpanel"|"plesk"|null)

  • panelChoices: which panel add-ons can attach to this tier (null for shared/enterprise)

POSITIONING RULES:

  • VPS tiers ship BARE UBUNTU by default with optional control panel via add-on. DO NOT say "Plesk is included" for Cloud Essentials/Business/Scale/Power — Plesk is a $25/mo add-on. CyberPanel (free) is the typical default.

  • When customer asks about memory-optimised / GPU / storage-optimised / bare-metal workloads, route to Cloud Custom (sales-led quote, any DO size or partner hardware).

  • When customer asks "what is your Starter tier" — there is no Starter tier anymore. Cloud Essentials at $49/mo is the entry VPS tier as of 2026-05-27.

  • AI-BUILT WORDPRESS IS A PLAN, NOT AN ADD-ON. When a customer wants a site built for them ("I need a website", WordPress + "fast"/"easy"/"I don't want to build it myself"), the product is FABER BY SQUISH — sku hosting-faber, a $20/mo shared plan that includes the hosting. There is NO setup fee (removed 2026-06-09). Quote its priceDisplay from this catalog verbatim.

Read-only, no side effects, safe to call freely.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare this as read-only, idempotent, non-destructive, and closed-world, but the description adds substantial behavioral context. It explains verbatim price quoting, self-serve versus sales-led routing, panel add-on rules, and specific positioning constraints that affect how an agent should act on the returned 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?

The description is long but well structured with front-loaded mandatory instructions, headings, and bullet lists. Some details are repetitive, such as repeated emphasis on quoting verbatim and not guessing, but the length is largely justified by the complexity of pricing rules and product positioning.

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 carries the burden of explaining return values, and it does so thoroughly by documenting each catalog entry field. It also covers alternatives, routing rules, and important product constraints, making the definition complete for an agent to call and use 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?

The tool has zero input parameters, so there is no parameter semantics burden; the baseline for zero-parameter tools is 4. The description instead explains return-entry fields, which is useful but not relevant to input parameter interpretation.

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: fetch the canonical Squish hosting product catalog with up-to-date pricing. It explicitly distinguishes this tool from get_hosting_addons_catalog and get_email_catalog, so an agent can identify its role without inspecting 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 explicit usage rules: call before quoting any hosting price, do not guess, and use get_hosting_addons_catalog for VPS add-ons. It also provides positioning rules for common customer asks, including Cloud Custom, the obsolete Starter tier, and Faber by Squish.

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

get_hosting_upgrade_optionsGet hosting upgrade optionsA
Read-onlyIdempotent
Inspect

Which higher plan tiers one of the customer's hosting sites can move up to, with each tier's monthly sticker and whether it is eligible (and why not). The exact amount due today (prorated against what they already paid) is shown in the dashboard before they confirm; the upgrade charges the card on file, so it is confirmed THERE, never by a tool. Use when they ask "can I get a bigger server?", "what would it cost to upgrade?". Read-only.

NameRequiredDescriptionDefault
domainYesThe hosting site's domain.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses the downstream consequence of an upgrade (card on file is charged), where confirmation happens (dashboard only), and that proration is computed there. It also enumerates the returned dimensions: tier, monthly sticker, eligibility and reason. This is the kind of 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.

Conciseness4/5

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

Front-loaded with the core answer (what the tool returns) before the caveats, with no filler. The sentences are dense and clause-heavy, which costs a little readability, but every sentence carries information an agent needs.

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, so the description must convey the return shape, and it does: tiers, monthly prices, eligibility and denial reasons, plus the note that the exact amount due is not returned here. Combined with the readOnly annotation and single documented parameter, 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.

Parameters3/5

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

Only one parameter, and the schema documents it fully (100% coverage: 'The hosting site's domain'). The description reinforces the per-site scope ('one of the customer's hosting sites') but adds no syntax, format, or accepted-value 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.

Purpose4/5

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

States a specific resource and scope: the higher plan tiers a single customer-owned hosting site can move to, including price and eligibility with reasons. This is functionally distinct from catalog/pricing siblings, but no sibling is named, so an agent must infer the split from wording alone.

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 trigger phrasing ('can I get a bigger server?', 'what would it cost to upgrade?') and an explicit boundary: the exact prorated amount due is shown only in the dashboard, and the charge is confirmed there, never by a tool. That tells the agent both when to call this and what it must not attempt.

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

get_migration_statusGet migration statusA
Read-onlyIdempotent
Inspect

Get the full state of a single email migration: current stage, the tenant ID we discovered, the SKU mapping the orchestrator proposed (sourceSkus / targetSkus), the scheduled cutoverAt if any, the consent URL the customer needs to click (when in CONSENT_PENDING), and any failure info. Use when the user asks "how is my migration going?", "what stage am I in?", "give me the consent link", or before driving the next stage. Read-only.

NameRequiredDescriptionDefault
migrationIdYesThe migration ID (returned from start_email_migration or list_my_migrations).

TDQS

A4.2/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's closing 'Read-only.' reinforces rather than contradicts them. Beyond that it discloses what the response contains and the CONSENT_PENDING case, which annotations cannot express; it doesn't cover error behavior for an unknown migrationId.

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 outcome, then usage triggers, then the safety note. The middle clause is a long comma-separated enumeration, but every listed field 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 output schema, the description carries the return-value burden and does so thoroughly, including stage state and the consent URL condition. Combined with 100% parameter coverage and a full annotation set, 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.

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 migrationId parameter is already documented as coming from start_email_migration or list_my_migrations. The description adds no further semantics such as format or validity expectations, 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 and resource ('Get the full state of a single email migration') and then enumerates exactly what state is returned (stage, tenant ID, SKU mapping, cutoverAt, consent URL, failure info). The word 'single' plus the required migrationId distinguishes it cleanly from the sibling list_my_migrations, which returns many.

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 trigger phrasings ('how is my migration going?', 'give me the consent link') and a positional cue ('before driving the next stage'), so an agent knows when to reach for it. It stops short of saying when NOT to use it or naming list_my_migrations as the alternative for discovering IDs.

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

get_my_ai_visibility_coverageGet my ai visibility coverageA
Read-onlyIdempotent
Inspect

Which domains a customer's AI Visibility plan watches: the plan's own site plus the extra domains they have added, each with how it was verified and its latest grade (null grade = not scanned yet, say "pending", never "passing"). Also how many of the slots are used. Refused when AI Visibility is not on the plan. Read-only.

NameRequiredDescriptionDefault
domainYesThe hosting plan's domain.

TDQS

A3.9/5.0
Behavior5/5

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

Annotations declare read-only/idempotent, and the description adds genuinely new behavior: the call is refused when AI Visibility is absent from the plan, and a null grade means unscanned, which must be reported as "pending", never "passing". That last instruction actively prevents a plausible hallucination, which is high-value disclosure 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?

Dense and front-loaded: the resource is stated first, then the contents, then the refusal rule. It is a single long sentence with parenthetical asides, but nearly every clause carries operational meaning; only "Read-only" is 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?

With no output schema, the description does the necessary work of describing the returned fields (domains, verification, grade, slot counts) and the refusal case. It stops short of explaining how slot usage is represented or what verification values look like, which leaves a small gap for a tool whose return shape is undocumented elsewhere.

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 a single documented parameter ("The hosting plan's domain"). The description only obliquely reinforces this via "the plan's own site", adding no format, validation, or matching 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?

Opening clause names the specific resource: the domains an AI Visibility plan watches, plus their verification method, latest grade, and slot usage. It is clearly a read of plan coverage rather than a scan, but it never names the sibling check_ai_visibility that an agent might confuse it with.

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?

'Refused when AI Visibility is not on the plan' gives the agent one useful precondition for calling it. However, there is no statement of when to prefer this over check_ai_visibility or plan_ai_visibility_fixes, so the agent must infer the distinction from the name alone.

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

get_my_cdn_statsGet my cdn statsA
Read-onlyIdempotent
Inspect

Returns whether the CDN (edge cache) is on for one of the customer's hosting sites and, for a Managed Cloud server, the last 30 days of edge traffic across the sites on that server: requests, bandwidth, cache hit rate. On shared hosting the edge zone is shared with other customers, so per-site traffic figures do not exist: the answer is on/off only (stats: null, perSite: false). Use for "is my CDN on?", "how much traffic is my site getting?", "is the cache working?". Read-only.

NameRequiredDescriptionDefault
domainYesThe hosted site's domain.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely non-obvious behavior: results are plan-dependent, and on shared hosting per-site traffic does not exist (stats: null, perSite: false). That is exactly the kind of surprise an agent needs pre-warned.

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 answer is front-loaded in the first sentence, then qualified by plan tier, then examples. It is dense but every clause carries signal; the parenthetical restatement '(stats: null, perSite: false)' is slightly redundant with the preceding 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?

There is no output schema, and the description compensates by explaining the two possible response shapes and why they differ. A single-parameter read tool needs nothing further to be called 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% and the single 'domain' parameter is documented there, so the baseline applies. The phrase 'one of the customer's hosting sites' mildly constrains what domain means (a hosted site, not arbitrary domain), but there is no format or error guidance added.

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 and resource ('Returns whether the CDN (edge cache) is on...') and enumerates the returned metrics (requests, bandwidth, cache hit rate). An agent can distinguish this from get_my_site_health or get_my_site_runtime 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 concrete user phrasings that should route here ('is my CDN on?', 'how much traffic is my site getting?', 'is the cache working?'), which anchors usage well. It does not name a sibling alternative or state when NOT to use it, 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.

get_my_domain_transfersGet my domain transfersA
Read-onlyIdempotent
Inspect

Where the customer's inbound domain transfers stand, one row per domain, with counts: awaiting_code (paid, the customer still has to enter the transfer code in their dashboard), queued (code in, being submitted), refused (the registrar rejected it — the reason says what to fix before entering the code again), needs_attention (we are checking it with the registrar), pending_registry (submitted, usually done in about 5 days), completed, cancelled. Pass cartId to see one checkout's batch. Use after prepare_domain_transfers, or when they ask "did my transfers go through?". Codes are entered in the dashboard, never here. Read-only.

NameRequiredDescriptionDefault
cartIdNoOptional: the cartId prepare_domain_transfers returned, to see only that batch.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, yet the description still adds real behavioral context: what each status means operationally, that refused includes the reason to fix, and that pending_registry usually completes in about five days. The 'never here' note reinforces the read-only contract with an actionable constraint.

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, and the trailing sentences each carry a distinct payload (cartId scoping, when to use, the dashboard-only constraint). The status parenthetical is dense but each definition is load-bearing for interpreting results, so little could be cut without losing meaning.

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?

One optional parameter, no output schema, annotations covering safety — the description fills the remaining gap by explaining what the returned status values mean. Nothing an agent needs to call or interpret this tool 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 coverage is 100% and the single cartId parameter is already documented as the value returned by prepare_domain_transfers. The description's 'Pass cartId to see one checkout's batch' adds only the framing of a batch view, so the baseline 3 for a fully documented single parameter 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-plus-resource ('where the customer's inbound domain transfers stand, one row per domain, with counts') and enumerates the exact status buckets returned. That distinguishes it cleanly from list_my_domains (all domains) and get_migration_status (site moves) without the agent needing to open 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 trigger conditions: 'Use after prepare_domain_transfers, or when they ask "did my transfers go through?"'. It also draws a hard boundary — 'Codes are entered in the dashboard, never here' — preventing the agent from attempting a mutation this tool cannot do.

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

get_my_site_healthGet my site healthA
Read-onlyIdempotent
Inspect

Returns MEASURED uptime history for the customer's own hosted sites — how the site has BEEN over a trailing window, from our SLA monitoring record. Use for "how has my site been?", "has my site gone down?", "what's my uptime?", "did you have an outage last week?". This is different from check_uptime, which probes a URL live right now — use that for "is my site up?" and this for anything historical. Optionally scope to one domain (which also returns the recent outage list for it). Read-only. IMPORTANT: each site carries a disclosure sentence — lead with it rather than quoting a bare percentage. When measurementHealthy is false, relay measurementNote: our monitoring was behind, so the numbers are provisional and you must say so. When coverage is "none", do NOT invent or estimate a figure — say it is not measured yet.

NameRequiredDescriptionDefault
daysNoTrailing window in days (default 30, max 90).
domainNoOptional — one of the customer's own hosted domains, to scope the answer and include its recent outages. Omit to summarise every site they have.

TDQS

A4.7/5.0
Behavior5/5

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

Although annotations already declare read-only, idempotent, non-destructive behavior, the description adds substantial operational guidance: lead with each site's `disclosure`, relay `measurementNote` when `measurementHealthy` is false, and never invent figures when `coverage` is 'none'. These are behavioral constraints beyond the structured fields and are essential for correct use.

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 front-loaded with the core purpose, then immediately routes to the alternative tool, then states critical response-handling rules. Despite its length, each sentence serves a distinct selection or usage purpose, with only minor redundancy in the trailing 'Read-only.'

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 monitoring tool with no output schema, the description supplies the missing behavioral context: historical vs live scope, optional domain behavior, and how to handle `disclosure`, `measurementHealthy`, `measurementNote`, and `coverage`. That is enough for an agent to call 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 both `days` and `domain` are already documented in the schema. The description mentions domain scoping and notes that scoping returns recent outages, but this largely duplicates schema wording and does not add new syntax or interpretation beyond 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?

The description uses a specific verb and resource: 'Returns MEASURED uptime history for the customer's own hosted sites' over a trailing window from SLA monitoring. It explicitly distinguishes itself from the sibling check_uptime, so an agent can tell which tool to pick 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?

It gives explicit when-to-use examples ('how has my site been?', 'has my site gone down?', 'did you have an outage last week?') and a direct when-not rule contrasting with check_uptime for live 'is my site up?' checks. The optional domain scoping behavior is also described.

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

get_my_site_runtimeGet my site runtimeA
Read-onlyIdempotent
Inspect

Returns what one of the customer's SHARED hosting sites actually runs, read from the server: the PHP version the site uses down to the patch level (e.g. 8.4.27), its handler (FPM / FastCGI), when that PHP build was last updated on the server, every PHP build installed, and the control panel and OS. CALL THIS for "what PHP version am I on", "am I patched for ", "is my server up to date": compare the exact version with the fixed release and say so; the updatedAt date is when Squish applied the build. Squish patches shared servers; the customer does not install PHP updates themselves. A Managed Cloud server is not covered here. Read-only.

NameRequiredDescriptionDefault
domainYesThe hosting site's domain.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only/idempotent/closed-world, so the bar is lower, but the description still adds real context: data is read from the server, updatedAt means when Squish applied the build, and Squish (not the customer) patches shared servers. It stops short of describing failure behavior for a non-shared or unknown domain.

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 when to call, then exclusions. Dense and largely waste-free, though the quoted-query sentence and the patching-responsibility aside make it longer than strictly needed.

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 naming the returned fields and their granularity. Coverage is nearly complete; the only gap is what the tool does or returns when the domain isn't a shared hosting site.

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?

Single required parameter with 100% schema description coverage, so the schema already carries the definition. The description adds only a mild constraint that the domain belongs to the customer's SHARED hosting site, with no format or normalization guidance.

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 ('Returns what one of the customer's SHARED hosting sites actually runs, read from the server') and enumerates the exact fields returned (PHP version to patch level, handler, build update date, installed builds, control panel, OS). This clearly separates it from siblings like detect_technology, get_my_site_health and diagnose_my_server.

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 invocation with 'CALL THIS for "what PHP version am I on", "am I patched for <CVE>", "is my server up to date"' and gives an explicit exclusion ('A Managed Cloud server is not covered here'). It also explains the domain/ownership model, so the agent knows who owns patching.

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

get_public_pricingGet public pricingA
Read-onlyIdempotent
Inspect

Fetch the live public Squish pricing catalogs. Sections: hosting (all hosting tiers + self-serve flags), email (Microsoft 365 tiers, monthly vs annual), domains (first-year floor AND renewal prices for the headline endings only), billing_terms (multi-year term rates + the self-serve checkout ceiling), addons (email add-ons), hosting_addons (hosting add-ons). CALL THIS whenever you are about to state an exact price, renewal, spec, or term rate that you cannot see in the Squish Services block — never quote catalog numbers from memory. For any OTHER domain ending (.house, .xyz, .shop, .co.uk and hundreds more), pass tld and the result carries that ending's live first-year, renewal AND transfer-in price. No login required.

NameRequiredDescriptionDefault
tldNoA domain ending to price live, e.g. ".house". Use it whenever the customer asks what an ending costs, renews at or costs to transfer in (for ANY ending, catalog or not).
sectionNoWhich catalog to fetch. Default: all (or domains when `tld` is given).

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, openWorldHint and destructiveHint=false, so safety is covered; the description adds real value on top by noting 'live' data (not a stale snapshot) and 'No login required', which is a genuine auth precondition an agent would otherwise have to discover. It stops short of disclosing rate limits or response shape, but with no output schema and full annotation coverage a 4 is fair.

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 the section inventory, then the imperative call guidance, then the edge case, then the auth note — a sensible priority order. The parenthetical section glosses are dense but each one carries decision-relevant detail (e.g. 'first-year floor AND renewal prices for the headline endings only'), so 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?

There is no output schema, so the description must carry the return contract itself, and it does — naming all six catalog sections and summarizing what each contains, plus what a `tld` query returns. Combined with the usage trigger and auth note, an agent has everything needed to call this correctly on the first try.

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 earns above baseline: it explains that `tld` works for ANY ending including ones not in the catalog, that the domains section covers only 'headline endings' while `tld` covers the long tail, and that tld results include first-year, renewal AND transfer-in prices. That is behavioral meaning the enum/param descriptions do not fully carry.

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 (fetch) and resource (live public Squish pricing catalogs) and enumerates exactly what each section returns, so an agent knows the payload shape before calling. The one gap is sibling differentiation: get_hosting_catalog, get_email_catalog, get_addon_catalog and get_billing_terms overlap almost one-for-one with this tool's sections, and the description never explains that this is the public/live counterpart to those account-scoped catalogs.

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 trigger ('CALL THIS whenever you are about to state an exact price, renewal, spec, or term rate that you cannot see in the Squish Services block') and an explicit prohibition ('never quote catalog numbers from memory'). It also routes the edge case: for any non-headline domain ending, pass `tld` and the result carries first-year, renewal and transfer-in prices.

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

get_site_import_statusGet site import statusA
Read-onlyIdempotent
Inspect

Where a "Move a site here" import stands for one of the customer's hosting sites: whether an import can start, the current run (kind, phase, progress) or the preview waiting to go live, and whether a WordPress connection exists. Use when they ask "is my site move done?", "what is happening with my import?". Starting, going live with or discarding an import is done in the dashboard (Hosting → the site → Move a site here). Read-only.

NameRequiredDescriptionDefault
domainYesThe hosting site's domain.

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so the bar is lower; the description reinforces read-only and adds real value by describing exactly which state fields come back (kind, phase, progress, preview, connection existence) and by routing mutating actions to the dashboard. It does not cover auth requirements or behavior when no import exists for the domain, which keeps it 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?

It is front-loaded with the resource and the returned state, then usage cues, then the out-of-scope actions and a one-word read-only confirmation. The first sentence's dense parenthetical enumeration costs some readability, but every sentence contributes.

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 convey what comes back and it does: can-start status, run kind/phase/progress, preview awaiting go-live, and WordPress connection presence. Combined with the dashboard pointer for mutations and the read-only annotation, an agent has enough to call this correctly for a simple one-parameter read.

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 required parameter with 100% schema description coverage, so the schema already carries the weight and baseline is 3. The description only indirectly adds meaning by clarifying that the domain identifies 'one of the customer's hosting sites' (i.e., a hosting site, not an arbitrary or external domain), which is a marginal supplement.

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: the status of a 'Move a site here' import for one hosting site, and it enumerates what the response covers (whether an import can start, current run kind/phase/progress, pending preview, WordPress connection). This is far more specific than the name alone, though it never names the adjacent siblings get_migration_status or list_my_migrations, so an agent must infer which one to pick when a user says 'migration'.

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 trigger phrases ('is my site move done?', 'what is happening with my import?') and an explicit when-not: starting, going live with, or discarding an import is done in the dashboard, not here. It stops short of pointing at the sibling tools that cover list-level or migration-level views, so alternative selection is only partially resolved.

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

list_capabilitiesList capabilitiesA
Read-onlyIdempotent
Inspect

Lists everything a Squish connection or the Squish assistant can do, grouped by area (account, domains, DNS, purchases, hosting, AI Visibility, email, diagnostics, catalogs), with each tool's name, a one-line summary, whether it reads or writes, the key scope it needs, and whether it is available to THIS session. CALL THIS when the user asks what you can do, what the connection can do, what a read-write key adds, or whether something is possible over MCP. Relay the areas in plain words; name the tool only when they ask. No login required.

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 readOnlyHint, idempotentHint, non-destructive behavior, and openWorldHint. The description adds useful behavioral context beyond annotations: no login is required, output is grouped by area, each entry includes read/write status, required scope, and availability to the current session. It does not need pagination or mutation details for a zero-parameter read-only tool.

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

Conciseness5/5

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

It is front-loaded with what the tool returns, immediately followed by explicit call conditions and relay guidance. Despite being information-dense, every sentence serves a distinct purpose: output scope, triggers, presentation style, and authentication requirement.

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 input parameters, no output schema, and read-only annotations, the description supplies everything an agent needs: what it returns, the grouping and metadata per tool, when to call it, how to relay results, and that no login is required.

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?

There are zero parameters, so parameter semantics are not a meaningful source of ambiguity and the baseline is high. The description correctly avoids discussing parameters and instead clarifies the structure of the capability listing.

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 and resource: lists everything a Squish connection or assistant can do, grouped by areas and annotated with tool metadata. It is unmistakably distinct from all operational sibling tools like check_ssl or list_my_domains because it is explicitly a capability inventory.

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 names exact triggering questions: what you can do, what the connection can do, what a read-write key adds, or whether something is possible over MCP. It also gives a behavioral instruction to relay areas in plain words and name tools only on request.

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

list_my_backupsList my backupsA
Read-onlyIdempotent
Inspect

Lists the restore points (daily backups) held for one of the customer's SHARED hosting sites — id, when it was taken, size. Use for "what backups do I have?", "can I roll my site back?", and ALWAYS before restore_my_site_backup so the backupId is a real one. A VPS is not covered here (its snapshots live in its own panel). Read-only.

NameRequiredDescriptionDefault
domainYesThe hosted site's domain, e.g. "example.com". Must be on the customer's account.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so the 'Read-only' restatement adds little. The description does add real behavioral context beyond the annotations: the shared-hosting-only coverage boundary and the three fields returned (id, timestamp, size).

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 action and its scope, then the ordering constraint, then the exclusion. The quoted user-phrasings earn their place by matching likely utterances; no filler sentences.

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

Completeness5/5

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

With no output schema, the description compensates by naming the returned fields and confirming read-only behavior. For a one-parameter list tool, everything an agent needs to select and call it correctly is present.

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 `domain` parameter is fully documented there with an example and account constraint. The description only reinforces the shared-site constraint implicitly, which is minor added meaning, 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 and resource ('Lists the restore points (daily backups)') plus scope ('one of the customer's SHARED hosting sites') and even the returned fields. It explicitly excludes VPS snapshots, so an agent can distinguish it from adjacent hosting tools 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 Guidelines5/5

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

Gives explicit triggers ('what backups do I have?', 'can I roll my site back?') and a hard ordering rule ('ALWAYS before restore_my_site_backup so the backupId is a real one'), plus a when-not ('A VPS is not covered here'). 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.

list_my_casesList my casesA
Read-onlyIdempotent
Inspect

Returns the customer's support tickets (Salesforce Cases) — ticket number, subject, status, priority, and when it was opened. Use whenever the user asks about a support ticket or case: "check on my open support ticket", "what's the status of my ticket?", "did my case get resolved?", "do I have any open tickets?". Cases are ordered newest-first; set openOnly:true to return only tickets that are still open (not Closed). Read-only.

NameRequiredDescriptionDefault
limitNoMaximum number of tickets to return (default 10, max 25).
openOnlyNoWhen true, return only tickets whose status is not Closed. Default false (all tickets).

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, so the bar is lower, and the description adds real value beyond them: newest-first ordering and the exact meaning of openOnly ('still open (not Closed)'). The trailing 'Read-only' merely restates the annotation and the description says nothing about truncation or result-count behavior beyond 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 purpose and return fields, then usage triggers, then the behavioral note — a sensible order with no wasted sentences. The four example queries are slightly padded but justified as routing aids for a conversational trigger like 'check on my open support ticket'.

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 compensates by listing the returned fields (number, subject, status, priority, opened date) and the ordering. It is nearly complete for a two-optional-param read tool; only the behavior when limit is omitted versus capped is unspecified, which the schema covers anyway.

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 the default 10/max 25 and the openOnly definition. The description restates the openOnly semantics without adding syntax or format detail beyond what the schema already provides, 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+resource ('Returns the customer's support tickets (Salesforce Cases)') and enumerates the returned fields, so an agent knows exactly what it gets. No sibling tool touches support cases, so there is no ambiguity with the hosting/DNS/lookup tools in the 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?

Gives an explicit trigger condition ('Use whenever the user asks about a support ticket or case') backed by four realistic user utterances, which is strong routing guidance. It stops short of naming exclusions or alternatives, though none of the sibling tools plausibly overlap.

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

list_my_domainsList my domainsA
Read-onlyIdempotent
Inspect

Returns the list of domains the customer owns through Squish, with status, order number, and purchase date. Use when the user asks "what domains do I have?", "which domains am I paying for?", or similar. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=true, so the trailing "Read-only" adds nothing. The useful addition is the ownership scope ("domains the customer owns through Squish") and the field list, but nothing about ordering, pagination, or 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.

Conciseness5/5

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

Three short sentences, front-loaded with what is returned, followed by usage triggers and safety note. Nothing is redundant or padded.

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 parameters and no output schema, the description does the work of sketching the return shape (status, order number, purchase date), which is important here. It could say more about ordering or whether inactive/expired domains are included, but it is sufficient 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The schema itself is an empty object, so no semantics are lost.

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 - returns domains the customer owns through Squish - and enumerates the fields returned (status, order number, purchase date). This clearly separates it from search_domains or lookup_whois, 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 Guidelines4/5

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

Gives concrete trigger phrasing ("what domains do I have?", "which domains am I paying for?") that maps user intent to this tool. It stops short of stating when NOT to use it or naming alternatives like search_domains for acquisition-style lookups.

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

list_my_hostingList my hostingA
Read-onlyIdempotent
Inspect

Returns the list of hosting sites the customer has provisioned, with the panel URL, setup type (general / WordPress / AI Quick Start), and Plesk login. Use when the user asks "what sites do I have?", "where do I log in to my hosting?", "what's my hosting panel URL?". Read-only.

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/idempotent/non-destructive, and the description adds real value by enumerating the returned fields and setup-type values, which is the only source of return-shape info since there is no output schema. Minor gap: no mention of pagination or behavior for accounts with zero provisioned sites, but the trailing 'Read-only' confirms rather than contradicts 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?

Three sentences with strict front-loading: payload first, invocation triggers second, safety note last. The quoted user phrasings are compact and each directly earns its place as a routing cue.

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 list tool with no output schema, the description supplies purpose, returned fields, and trigger contexts — everything an agent needs to select and call it. The annotations carry the safety profile, so 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?

The tool takes no parameters (empty object schema), so there is nothing for the description to disambiguate. Baseline 4 applies; nothing is gained or lost here.

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 ('Returns the list of hosting sites the customer has provisioned') plus the exact payload fields (panel URL, setup type, Plesk login). This clearly separates it from nearby siblings like list_my_domains, get_hosting_catalog, or get_my_site_runtime.

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 trigger phrasing ('what sites do I have?', 'where do I log in to my hosting?', 'what's my hosting panel URL?'), which is strong routing signal. It stops short of naming alternatives or exclusions (e.g., when to prefer get_hosting_catalog for purchasable plans), so it lands at clear-context-but-no-exclusions.

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

list_my_migrationsList my migrationsA
Read-onlyIdempotent
Inspect

List the customer's email migrations across all states (in-progress, scheduled, complete, cancelled). Use when the user asks "what migrations do I have?", "is my migration done?", "what's the status of my email move?", or when you need to find the migrationId for a follow-up action like cancel. Read-only.

NameRequiredDescriptionDefault
limitNoMaximum number of migrations to return (default 10, max 25).

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, destructiveHint=false and openWorldHint=false, so the trailing "Read-only" sentence is largely redundant. The one genuinely additive behavioral fact is that results include every state rather than only active or only completed ones. Nothing is said about ordering, truncation, or cursor/paging behavior beyond the limit cap that the schema already documents.

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 state scope come first, followed by usage triggers, so it is well front-loaded. The closing "Read-only." fragment is dead weight given the annotations, keeping it just short of a 5.

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 enough by listing the state values an agent can expect and by flagging that migrationId is retrievable from results. It stops short of describing the returned fields or what happens when there are more migrations than the limit, which an agent composing a follow-up call would want.

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 limit parameter already carries its default (10) and maximum (25) in the schema. The description adds no meaning about how limit interacts with the listed states, so it neither helps nor misleads — 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 ("List the customer's email migrations") plus the scope "across all states" with those states enumerated. This distinguishes it from get_migration_status, which is clearly keyed to a single migration, and from the other list_my_* siblings by naming the resource as email migrations.

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 triggers, including three verbatim user phrasings and the secondary purpose of resolving a migrationId for a follow-up action like cancel. It never explicitly names get_migration_status as the alternative when the ID is already known, so the routing signal is clear but not fully closed.

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

list_my_recent_ordersList my recent ordersA
Read-onlyIdempotent
Inspect

Returns recent orders on the customer's account, with order number, total, status, and effective date. Use when the user asks "what did I buy recently?", "show me my last order", "what was my last invoice for?". Read-only.

NameRequiredDescriptionDefault
limitNoMaximum number of orders to return (default 5, max 25).

TDQS

A3.9/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 trailing "Read-only." mostly restates structured data. The description does add the return-field set, which is genuine context, but it says nothing about default/max result counts or ordering recency semantics beyond 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?

The return contents are front-loaded in the first sentence, followed by usage examples, then a short safety note. Efficient overall, though the closing "Read-only." is largely duplicative of the readOnlyHint annotation and could be dropped.

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 zero-required-parameter list tool with no output schema, the description covers what is returned, when to call it, and its safety profile. Only minor gaps remain (result ordering, pagination beyond `limit`), and none would cause a misinvocation.

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 `limit` parameter already documents default 5 and max 25, so the schema carries the semantic load. The description adds no additional meaning about the parameter, which is acceptable at baseline for full-coverage schemas.

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

Purpose5/5

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

States a specific verb and resource ("Returns recent orders on the customer's account") and enumerates the returned fields, so the agent knows exactly what it gets. It is clearly distinguishable from the other list_my_* siblings (cases, domains, hosting, backups) which cover different resources.

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 three concrete example user phrasings ("what did I buy recently?", "show me my last order", "what was my last invoice for?"), which is strong positive routing guidance. It does not name an alternative tool or state when NOT to use it, but no sibling provides overlapping order data, so the gap is minor.

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

list_site_filesList site filesA
Read-onlyIdempotent
Inspect

Lists one folder of a customer's SHARED hosting site's web root (the files the site serves): name, type (file / dir / symlink), size. Start at the root (no path) and go down one folder at a time. Use before read_site_file / write_site_files so paths are real. Hidden files and anything outside the web root are never shown. Read-only.

NameRequiredDescriptionDefault
pathNoFolder path relative to the web root, e.g. "assets". Empty for the root.
domainYesThe hosted site's domain.

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, and destructiveHint=false, so safety is covered. The description adds useful behavioral constraints beyond annotations: it lists only one folder at a time, only shows files within the web root, and excludes hidden files. It does not discuss errors or pagination, but those are minor gaps for this read-only 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.

Conciseness5/5

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

The description is compact and front-loaded: it states what is returned, how to navigate, and why to use it before related tools. Every sentence contributes useful selection or invocation context, with only the final 'Read-only' being mildly redundant with annotations.

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 two-parameter read-only listing tool with no output schema, the description is complete enough: it explains the return fields, root/path navigation, scope limits, and relationship to read/write file tools. An agent has what it needs to call and interpret this 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 both parameters are already documented in the schema. The description reinforces root behavior and one-folder-at-a-time navigation but adds little parameter syntax or semantics 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 and resource: lists one folder of a shared hosting site's web root, and even names the returned fields (name, type, size). It is clearly distinguishable from related file tools by noting it is for listing folders before using read_site_file or write_site_files.

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 operational guidance: start at the root with no path, descend one folder at a time, and use this before read_site_file / write_site_files so paths are real. It also sets clear boundaries by saying hidden files and anything outside the web root are never shown.

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

lookup_dnsLookup dnsA
Read-onlyIdempotent
Inspect

Look up DNS records for any domain — A, AAAA, MX, TXT, NS, and CNAME. Returns { domain, records: { A, AAAA, MX, TXT, NS, CNAME } }. Call this when a customer asks about DNS configuration, nameservers, mail routing, or wants to verify a specific record on any domain (not just domains they own). No login required.

NameRequiredDescriptionDefault
domainYesThe domain to look up (e.g. "example.com").

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds useful context beyond annotations by stating 'No login required' and emphasizing that lookups work on any domain, not just owned domains. It does not mention rate limits, caching, or failure behavior, but the core behavioral profile is well covered.

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 purpose and supported record types, then gives return shape and usage context. It is efficient overall, though the record types are listed twice—once as supported lookups and again in the returned object—which is slightly redundant.

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 lookup with one required parameter and rich annotations, the description covers purpose, scope, use cases, authentication ('No login required'), and return shape. No output schema exists, but the description supplies the expected response structure, so an agent has enough to call 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 single 'domain' parameter is already documented with an example. The description reinforces that any domain is acceptable, but it does not add format, normalization, or validation details beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource ('Look up DNS records') and enumerates the supported record types (A, AAAA, MX, TXT, NS, CNAME). It also distinguishes scope by saying it works for 'any domain (not just domains they own)', which helps separate it from tools like get_dns_records that likely operate on owned domains.

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 clear use cases: customer questions about DNS configuration, nameservers, mail routing, or verifying a specific record. It also clarifies the any-domain/not-owned condition. However, it does not explicitly name an alternative sibling tool or state 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.

lookup_ip_hostingLookup ip hostingA
Read-onlyIdempotent
Inspect

Look up the IP address(es) for a domain and identify which network announces them — ASN, AS name, BGP prefix, registry, and the registry country for the allocation. Returns { domain, ipv4[], ipv6[], primaryIp, hosting: { asn, asName, prefix, countryCode, registry } }. Call this when someone asks what IP a domain resolves to or which network owns that IP. asName is a registry handle with the operator appended ("CLOUDFLARENET - Cloudflare, Inc., US"), and countryCode is where the block was allocated, NOT where the server is — this is BGP data, not geolocation, and there is no city. IMPORTANT: the network announcing an IP is not the web host — for a site behind a CDN it IS the CDN (godaddy.com announces from Cloudflare). For "who hosts this site?" use detect_web_host instead. No login required.

NameRequiredDescriptionDefault
domainYesDomain to look up (e.g. "example.com").

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already establish read-only, open-world, idempotent, non-destructive behavior, and the description adds substantial context: exact return shape, meaning of asName, countryCode as allocation country rather than server location, BGP-not-geolocation caveat, no city data, CDN nuance, and no login required.

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

Conciseness5/5

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

The description is dense but front-loaded, first stating the core lookup and return shape, then usage guidance, then important caveats. Every sentence contributes operational meaning without repetition.

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

Completeness5/5

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

With no output schema, the description compensates by describing the return object structure and field semantics. It also covers the main interpretive pitfall: BGP network ownership versus actual web hosting/geolocation.

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 only one parameter, and schema description coverage is 100%, so the schema already documents the domain argument. The description adds no additional parameter syntax or constraints beyond what the schema provides, making 3 the appropriate baseline.

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: look up IP addresses for a domain and identify the announcing network via ASN, AS name, BGP prefix, registry, and country. It clearly distinguishes itself from detect_web_host by explaining that BGP network ownership is not the same as web hosting.

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 to call this when asked what IP a domain resolves to or which network owns that IP, and explicitly redirects "who hosts this site?" questions to detect_web_host. This gives both when-to-use and when-not-to-use guidance with a named alternative.

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

lookup_whoisLookup whoisA
Read-onlyIdempotent
Inspect

Look up WHOIS / RDAP registration info for any domain. Returns registrar, registration date, expiry date, nameservers, and status codes. Note: registrant contact details are privacy-redacted by registries (post-GDPR). Call this when a customer asks who owns a domain, when it expires, what registrar it's on, or whether it's available. No login required.

NameRequiredDescriptionDefault
domainYesThe domain to look up (e.g. "example.com").

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/non-destructive, so the safety profile is covered; the description adds genuinely non-obvious context — which fields come back, that registrant contacts are privacy-redacted post-GDPR, and that no login is required. The redaction note in particular prevents an agent from misreading an empty contact block as a failed lookup. Missing only rate-limit/quotient 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?

Four short sentences, each doing distinct work: what it does, what it returns, a caveat about redaction, when to call it, and auth posture. Front-loaded and free of 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?

No output schema exists, so enumerating registrar, dates, nameservers and status codes is exactly the missing information an agent needs to plan around the response. The GDPR caveat closes the one plausible gap for a WHOIS 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?

Single parameter with 100% schema description coverage, so the schema fully carries the semantics; baseline is 4. The description confirms scope ("any domain") but adds no format detail beyond the schema's example.

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 ("Look up WHOIS / RDAP registration info") and enumerates the returned fields, making the tool's output recognizable at a glance. The phrase "for any domain" quietly scopes it away from the own-account siblings list_my_domains/get_my_domain_transfers, 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 Guidelines4/5

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

Gives four concrete triggering questions (who owns it, when it expires, what registrar, whether it's available) that map directly to caller intents. It stops short of pointing at alternatives such as search_domains for bulk availability checks, so routing between the two still requires inference.

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

plan_ai_visibility_fixesPlan ai visibility fixesA
Read-onlyIdempotent
Inspect

For a website, scan it AND return a reviewable PLAN of proposed fixes to make it more legible to AI answer engines — generated business structured data (schema), a meta description, FAQ/Q&A drafts, and flags for the render and crawler-posture fixes. Returns { domain, grade, reviewRequired, proposals: [{ id, type, title, rationale, autoApplicable, needsInput, artifact }], summary }. Call this after check_ai_visibility when someone asks "how do I fix it?" or "what would you change?". IMPORTANT: this only PROPOSES — nothing is applied to any live site here. Every change is reviewed and approved first. HONESTY: the render/JS fix is a hosting change, not something the AI writes; and never promise an engine will recommend or cite the business. Works on any public website — no login required. When mentionByEngine is present, report each engine separately, say the numbers come from each engine's API, and never present mentionRate as one combined figure when enginesUnmeasured is not empty.

NameRequiredDescriptionDefault
domainYesThe website to plan fixes for (e.g. "example.com"). No protocol or path.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the read-only/idempotent annotations: it states that nothing is applied live, that every change requires review/approval, that the render/JS fix is a hosting change rather than generated code, and that no engine recommendation can be promised. These are exactly the operational and expectation-setting facts an agent needs before invoking it.

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 usage trigger are front-loaded, followed by return shape and caveats, so the important information is easy to find. It is dense and the trailing mentionByEngine reporting instructions are somewhat tangential to invoking the tool, keeping it just short of a 5.

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

Completeness5/5

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

With no output schema, the description compensates by describing the return object structure (domain, grade, reviewRequired, proposals with id/type/title/rationale/autoApplicable/needsInput/artifact, summary). Combined with the no-side-effects guarantee and public-site scope, an agent has enough 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?

The single domain parameter already has 100% schema coverage, including the no-protocol/no-path constraint. The description adds only mild meaning ('works on any public website — no login required'), so it neither detracts nor contributes substantial parameter guidance beyond the schema baseline.

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 (scan and return a reviewable plan) and resource (proposed AI-visibility fixes for a website), and enumerates the artifact types produced. It clearly differentiates itself from the sibling check_ai_visibility by being the remediation-planning step rather than the diagnostic.

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 sequences the tool: 'Call this after check_ai_visibility when someone asks "how do I fix it?" or "what would you change?"'. That names both the prerequisite and the user-intent trigger, leaving little ambiguity about when to choose it over the sibling diagnostic.

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

read_site_fileRead site fileA
Read-onlyIdempotent
Inspect

Returns the text of one file in a customer's SHARED hosting site's web root (HTML, CSS, JS, JSON, text…), up to 512 KB. ALWAYS read a file before changing it with write_site_files, and change only what the customer asked for. Binary files (images, fonts) are described, not returned. Read-only.

NameRequiredDescriptionDefault
pathYesFile path relative to the web root, e.g. "index.html" or "about/index.html".
domainYesThe hosted site's domain.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavior: a 512 KB size cap, that binary files are described rather than returned, and the shared-hosting web root boundary — all useful for an agent predicting output.

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 packed sentences, front-loaded with what is returned and its scope, followed by the workflow rule and edge-case handling. 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 two-parameter read tool with no output schema, the description supplies return type, size limit, and binary-file behavior, which is nearly everything needed to call it. Missing only error/not-found behavior and permission prerequisites.

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 'domain' and 'path' are already documented in the schema, including the relative-to-web-root convention. The description adds only marginal meaning ('one file', implicitly scoped to the customer's site), 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 and resource ('Returns the text of one file') and scopes it precisely to a customer's shared hosting site's web root, listing file types. This clearly distinguishes it from list_site_files (enumeration) and write_site_files (mutation) among the 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?

Explicitly instructs to ALWAYS read before changing with write_site_files and to change only what the customer asked for, which ties it to a concrete workflow. It does not state when NOT to use it (e.g. use list_site_files to discover paths first), so it falls short of full alternative routing.

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

scan_portsScan portsA
Read-onlyIdempotent
Inspect

Scan common TCP ports on a domain to see which services are publicly accessible. Checks 16 ports: FTP(21), SSH(22), SMTP(25), HTTP(80), POP3(110), IMAP(143), HTTPS(443), SMTPS(465), SMTP-submission(587), IMAPS(993), POP3S(995), MySQL(3306), RDP(3389), PostgreSQL(5432), HTTP-alt(8080), HTTPS-alt(8443). Returns { domain, ip, openPorts[], closedPorts[] }. Call this when someone asks what services are running on a server, whether a specific port is open, or to check firewall exposure. Requires the customer to be signed in.

NameRequiredDescriptionDefault
domainYesDomain to scan (e.g. "example.com").

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 adds genuinely non-redundant context: the exact 16-port coverage ceiling (so the agent knows MySQL-alt or 6379 is not checked), the return object shape, and an auth precondition. It omits scan duration/timeouts and any rate limiting.

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 scope, then return shape, then when-to-use. The long port enumeration is verbose but each entry carries real information about coverage. Auth requirement is tacked on at the end rather than placed with prerequisites.

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 compensates by describing the returned { domain, ip, openPorts[], closedPorts[] } shape, and it discloses the auth precondition. Only the temporal aspect (how long a scan takes, whether results are cached) 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 100% for the single required 'domain' parameter, which already includes an example. The description confirms the domain-based scope but adds no format, normalization, or validation nuance 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.

Purpose5/5

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

States a specific verb and resource (scan common TCP ports on a domain) and immediately bounds the scope to 16 enumerated ports with their service names. An agent can distinguish it from check_ssl, check_uptime, or check_security_headers 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?

Explicitly lists the triggering intents: 'what services are running on a server', 'whether a specific port is open', or 'check firewall exposure'. It also states the prerequisite that the customer must be signed in. It does not name a sibling alternative, 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.

search_domainsSearch domainsA
Read-onlyIdempotent
Inspect

Search domain-name availability and pricing. Checks the requested name across common endings (.com/.net/.org/.io/.co/.ai/.app/.dev plus .xyz/.shop/.store/.tech/.online/.site) and a few brandable variations, then returns which are available, their yearly price, and which are taken. CALL THIS whenever the user wants to find, check, buy, or register a domain, or asks if a domain is available. IMPORTANT routing rules: (1) If the user names a specific extension (e.g. "is acme.xyz free?", "I want testsquish1.xyz"), pass the FULL domain including that extension as query — never strip or substitute the TLD they asked for. (2) If the user corrects or refines a previous search to a different extension ("no, I meant .xyz", "what about .io?"), call again with the SAME base name and the NEW extension (e.g. query:"acme.io"). (3) Do NOT call this tool when the user is merely reacting to results without naming a new name or extension ("any other ideas?", "hmm, none of those") — answer from the results you already have instead of re-searching. No login required.

NameRequiredDescriptionDefault
queryYesThe domain name to search. Either a bare base word ("acme") for a broad multi-ending search, or a full domain with the extension the user explicitly asked for ("acme.xyz"). Do not include a protocol or path.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and open-world behavior. The description adds meaningful context beyond them: the enumeration of checked TLDs, brandable variations, the shape of the result (available / price / taken), and that no login is required. It does not discuss rate limits or pricing freshness, keeping it just under 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 purpose and invocation trigger, then structured into numbered routing rules. The long TLD enumeration and some repetition of the full-domain rule cost a little length, but every sentence carries routing or scoping 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 correctly explains what comes back (availability, yearly price, taken). For a single-parameter search tool it covers trigger conditions, parameter form, correction behavior, and a negative case — nothing an agent needs 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 real meaning: it distinguishes a bare base word from a full domain and gives concrete examples of when each form applies, plus a strong "never strip or substitute the TLD" rule for corrections. The schema description largely mirrors this, so it is reinforcement rather than new information.

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 ("Search domain-name availability and pricing") and enumerates the exact extensions checked, so an agent can distinguish it from list_my_domains or lookup_whois at a glance. It also states what is returned (availability, yearly price, taken status).

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 call ("CALL THIS whenever the user wants to find, check, buy, or register a domain") and gives three concrete routing rules, including an explicit when-NOT-to-call case for users merely reacting to results. Alternatives (answer from prior results) are named.

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

trace_redirectsTrace redirectsA
Read-onlyIdempotent
Inspect

Trace the full HTTP redirect chain for a domain — follows every hop (up to 15) and reports each URL and status code. Returns { domain, hops, chain[], finalUrl, finalStatusCode, httpChain[], httpUpgrade, hasRedirectLoop }. chain starts at https:// (what a modern browser does); httpChain starts at http:// and is what httpUpgrade describes: "upgrades" (plaintext reaches HTTPS), "serves-plaintext" (answers on http and stays there), or "unmeasured" (port 80 never answered — NOT the same as no upgrade, and must not be reported as one). Call this when someone asks about redirect chains, why their site redirects, SEO redirect issues, mixed-content redirects, whether their site forces HTTPS, or what URL a domain ultimately lands on. No login required.

NameRequiredDescriptionDefault
domainYesDomain to trace (e.g. "example.com").

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description still adds real behavioral substance: no login required, a hard 15-hop cap, the exact response shape, and the critical 'unmeasured' caveat that a silent port 80 is not the same as no upgrade.

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, then return shape, then semantics, then caller intents — a logical order. It runs long in a single paragraph and the httpUpgrade taxonomy is dense, but each clause carries disambiguating value.

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, yet the description enumerates every returned field and explains the httpUpgrade states, so an agent knows exactly what comes back. Auth requirements are stated and the measurement caveat is covered — nothing essential 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 and schema coverage is 100%, so the schema already carries the meaning. The description adds nothing about domain formatting beyond what the schema example provides, 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?

Specific verb 'Trace' plus a precise resource: the full HTTP redirect chain for a domain. The scope (up to 15 hops, each URL and status code) plus the dual chain/httpChain framing makes it unmistakable versus siblings like check_ssl or check_security_headers.

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?

Enumerates concrete caller intents — redirect chains, 'why does my site redirect', SEO redirect issues, mixed-content redirects, forced HTTPS, final landing URL. It gives strong for-when guidance but never names a sibling alternative or a when-not-to-use case.

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. 1 tool update
    • Changedget_public_pricing1 field changed
      • changedInput schema / properties / tld / description
        Previous value: -"A domain ending to price live, e.g. \".house\". Use it whenever the customer asks what an ending costs or renews at and it is not in the domains section."New value: +"A domain ending to price live, e.g. \".house\". Use it whenever the customer asks what an ending costs, renews at or costs to transfer in (for ANY ending, catalog or not)."
  2. 1 tool update
    • Changedget_public_pricing2 fields changed
      • changedInput schema / properties / section / description
        Previous value: -"Which catalog to fetch. Default: all."New value: +"Which catalog to fetch. Default: all (or domains when `tld` is given)."
      • addedInput schema / properties / tld
        Added value: +{
        +  "description": "A domain ending to price live, e.g. \".house\". Use it whenever the customer asks what an ending costs or renews at and it is not in the domains section.",
        +  "type": "string"
        +}
  3. 42 tool updates
    • First observedcheck_ai_visibility
    • First observedcheck_blacklist
    • First observedcheck_email_auth
    • First observedcheck_security_headers
    • First observedcheck_ssl
    • First observedcheck_uptime
    • First observeddetect_email_provider
    • First observeddetect_technology
    • First observeddetect_web_host
    • First observeddiagnose_my_server
    • First observedget_account_info
    • First observedget_addon_catalog
    • First observedget_billing_terms
    • First observedget_dns_records
    • First observedget_email_catalog
    • First observedget_hosting_addons_catalog
    • First observedget_hosting_catalog
    • First observedget_hosting_upgrade_options
    • First observedget_migration_status
    • First observedget_my_ai_visibility_coverage
    • First observedget_my_cdn_stats
    • First observedget_my_domain_transfers
    • First observedget_my_site_health
    • First observedget_my_site_runtime
    • First observedget_public_pricing
    • First observedget_site_import_status
    • First observedlist_capabilities
    • First observedlist_my_backups
    • First observedlist_my_cases
    • First observedlist_my_domains
    • First observedlist_my_hosting
    • First observedlist_my_migrations
    • First observedlist_my_recent_orders
    • First observedlist_site_files
    • First observedlookup_dns
    • First observedlookup_ip_hosting
    • First observedlookup_whois
    • First observedplan_ai_visibility_fixes
    • First observedread_site_file
    • First observedscan_ports
    • First observedsearch_domains
    • First observedtrace_redirects

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources