Skip to main content
Glama

Server Details

Accessibility and WCAG data for your own websites: fix lists, live checks, and fix validation.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
magebitcom/inclusify-plugin
GitHub Stars
0

Available Tools

36 tools
add_domainAdd another domain to a websiteA
Idempotent
Inspect

Use this when a site Inclusify already knows about is reachable on ANOTHER hostname the widget also needs to serve on — a country TLD, a subdomain, a staging host. WRITES to this website's Inclusify configuration, never to the site itself: no code, theme or DNS is touched, and adding a hostname here does not make it resolve. For a site Inclusify has never heard of, use add_website instead — this tool only adds to an existing one. The new hostname must be the SAME NAME as the site's existing domains: from "example.com" you may add "example.co.uk" or "shop.example.com", but not "somethingelse.com" — that is refused, and the refusal says what would have been allowed. Localhost and IP addresses are refused. A domain already registered to another Inclusify account is refused and needs support, because a hostname belongs to exactly one account. The first domain on a website becomes its primary; later ones do not. After adding, the widget must still be installed on that hostname — call widget_status to check whether it has reported in.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe new hostname to add, e.g. "example.co.uk" or "shop.example.com". A URL works too and is reduced to its host. Must share a name with the website's existing domains.
websiteYesThe website to add TO, as already registered in Inclusify, e.g. "example.com".

TDQS

A5/5.0
Behavior5/5

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

The description discloses significant behavioral details beyond annotations: it 'WRITES to this website's Inclusify configuration, never to the site itself', touches no code/theme/DNS, does not make the hostname resolve, and explains primary domain behavior. These are important side effects and constraints that annotations do not capture.

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 every sentence serves a purpose: when to use, what it does/doesn't do, constraints, primary-domain rule, and follow-up action. It is well structured and front-loaded with the most important usage guidance.

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

Completeness5/5

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

For a mutating tool with no output schema and no readonly annnotations, the description covers all necessary context: purpose, side effects, constraints, error refusals, primary-domain semantics, and the follow-up step to check widget installation. An agent has enough information to invoke it correctly and set expectations.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds meaningful parameter semantics: the new hostname must share a name with existing domains, URLs are reduced to their host, and localhost/IPs are refused. This goes well beyond the basic schema descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: 'add another domain to a website' and clarifies it applies to 'a site Inclusify already knows about' on 'ANOTHER hostname'. It explicitly distinguishes itself from add_website, making the tool's scope and purpose unambiguous.

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

Usage Guidelines5/5

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

It gives explicit when-to-use context: when a known site is reachable on another hostname. It also names the alternative, add_website, for 'a site Inclusify has never heard of', and lists refusal cases such as mismatched names, localhost, IP addresses, and domains registered to another account. This leaves no ambiguity about when to choose this tool.

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

add_monitored_pagesAdd pages to daily monitoringA
Idempotent
Inspect

Use this when a page that matters is not being watched at all — a checkout, an account area, a campaign landing page missing from list_monitored_pages — and should be checked from now on. WRITES to this website's Inclusify configuration — never to the site itself: adds URLs to the set of pages scanned on the daily monitoring rotation. Add-only: it never removes, pauses or edits a page; those stay in the Inclusify panel. Idempotent: a URL already monitored is reported back as alreadyMonitored, not duplicated and not an error. Every URL must be on the website's own domain(s); up to 20 per call. All-or-nothing against the plan's audited-page allowance: if the batch would not fit (paused pages hold their slots too), nothing is added and the response says what would. Loads no page and costs no page allowance. New pages are picked up by the scan worker's continuous queue — never-scanned pages first, then a re-scan roughly every 20h — not instantly; for an immediate answer use start_crawl or a live check tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesPages to monitor: full URLs on the website's own domain(s), or paths starting with "/" (resolved against the website's domain). At most 20 per call.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false), the description adds significant behavioral detail: it writes only to configuration, not the site; idempotent behavior with 'alreadyMonitored' response; all-or-nothing batch semantics against the audited-page allowance; and async pickup via the scan worker's queue with a ~20h re-scan. No contradiction with annotations.

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

Conciseness5/5

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

Dense but well-organized: the usage trigger is front-loaded, then behavioral guarantees, constraints, and async caveats follow logically. Every sentence carries unique information; there is no filler or redundancy. The structure aids quick comprehension despite the length.

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

Completeness5/5

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

For a complex tool with no output schema, the description is remarkably complete. It covers write scope, idempotency, batch atomicity, page allowance, domain restriction, async pickup timing, and routes to alternatives. An agent can confidently decide whether to call it and what to expect, with no missing critical details.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, which already document full URLs vs paths, domain restriction, and maxItems=20. The description re-states the 20-per-call limit and domain requirement without adding new parameter-level insight. Per the rubric, baseline 3 applies when schema already does the heavy lifting, and no additional meaning is provided.

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?

Clear verb+resource: 'adds URLs to the set of pages scanned on the daily monitoring rotation.' Explicitly distinguishes from siblings: 'Add-only: it never removes, pauses or edits a page' and 'for an immediate answer use start_crawl or a live check tool.' The purpose is unambiguous and directly tied to the tool's name.

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?

States exactly when to use ('a page that matters is not being watched at all — a checkout, an account area, a campaign landing page missing from list_monitored_pages') and provides explicit exclusions and alternatives: 'for an immediate answer use start_crawl or a live check tool.' Also clarifies that removal/pause/edit goes to the Inclusify panel, giving a complete when/when-not picture.

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

add_websiteRegister a website in the accountA
Idempotent
Inspect

Use this when the user names a site that is not in their Inclusify account yet — list_websites does not have it, or a per-website tool answered that no such website exists. This is also the tool that fills in an account registered without a website at all, which /api/agent/start supports and which is a normal state rather than a half-finished signup. WRITES to the account's Inclusify configuration — never to the site itself: registers a domain as a website in the account, on the free plan, and starts nothing. No scan is run, no widget is installed on the site, nothing is charged and no plan is changed. Takes no "website" argument, because the point is that the website does not exist yet. REQUIRES CONFIRMATION: call it first without "confirm" to get a preview naming the exact domain, show that to the user, and only call again with the token once they have agreed — a domain can be registered to one Inclusify account only, so claiming it takes it from anyone else who might. Idempotent: a domain already in this account comes back as a no-op, not an error and not a second website. Refuses rather than guessing when the account has more than one workspace, because a website lands in exactly one and picking wrong hides it. At most 50 websites per account through this tool; the Inclusify panel has no such limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name for the website in the panel. Optional; defaults to the domain.
domainYesThe domain to register, e.g. "example.com". A full URL works too — it is reduced to its host, and a leading "www." is dropped, so the domain that actually gets registered is echoed back in the preview. Check it before confirming.
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.

TDQS

A5/5.0
Behavior5/5

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

Annotations indicate readOnlyHint=false, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description goes far beyond these by detailing that it writes only to configuration, never to the site, that it is idempotent (no-op for existing domains), requires confirmation, enforces domain uniqueness, and refuses when workspace selection is ambiguous. No contradiction with annotations.

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

Conciseness5/5

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

The description is long but every sentence adds actionable information: usage conditions, precise scope, confirmation pattern, idempotency, edge cases, and limits. The most critical usage guidance is front-loaded ('Use this when...'), and the rest is dense with no redundancy. Length is justified by the tool's complexity.

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

Completeness5/5

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

For a tool with no output schema, the description fully covers what an agent needs: what it does, when to use it, the two-step confirmation flow, domain normalization, idempotent behavior, account limits, and workspace ambiguity refusal. Nothing essential is left unstated.

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

Parameters5/5

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

Schema already covers all three parameters with 100% coverage, so baseline is 3. The description adds substantial meaning: explains why there is no 'website' parameter (because the website doesn't exist), clarifies the confirm token's purpose and lifecycle (10 minutes, works once), and describes domain normalization (full URL reduced to host, 'www.' dropped). This significantly enhances 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 ('registers a domain as a website') and resource ('account's Inclusify configuration'), and explicitly distinguishes from siblings by naming when to use it ('not in their Inclusify account yet') and what it does not do ('never to the site itself'). The purpose is unambiguous and clearly differentiates from add_domain and list_websites.

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

Usage Guidelines5/5

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

Provides explicit when-to-use conditions ('when the user names a site that is not in their Inclusify account') and a special case ('fills in an account registered without a website'). Also specifies the two-call confirmation workflow, refuses on multi-workspace ambiguity, and notes the 50-website limit. This gives complete routing and usage context.

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

check_page_alt_textCheck the alt text on a pageA
Read-only
Inspect

Use this to check one page's images and alt text NOW — including a page no scan has ever covered, and straight after changing images or writing alt text, when the stored scan is already out of date. READ-ONLY: loads one page and inspects it; changes nothing. For what a stored scan already recorded across the site, which is free, use list_alt_findings instead. This one loads a page, so it is metered against the website's daily browser-check allowance and its monthly distinct-page allowance. It checks every image on the page for alt-text problems that can be decided from the markup: a missing alt attribute (which is not the same as an empty one), a filename used as alt, a redundant "image of" opener, alt too long to hear in one breath, alt that merely repeats the visible caption, and an image that is the only content of a link and leaves it with no accessible name. Images correctly marked decorative are counted and deliberately not reported, and neither is the same alt repeated across images: markup cannot tell a product gallery from a row of different products. The decidable version of that — one accessible name, two link destinations — comes from screen_reader_transcript. Whether an existing, plausible-looking alt actually describes its picture is a different question and is not judged here. Findings are capped at 20, worst impact first; imageCount and a stated findingsOmitted count cover the rest on a large gallery or catalogue page. A run that lands on a bot-protection interstitial rather than the page is reported as void, never as clean, and a void run carries no image counts and no findings. Where the interstitial title is contradicted by a page's worth of images, the run stands and carries challengeSuspected instead: trust the images, not the title. Read-only: nothing is written to the site.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPage to review. Must belong to the website above. Defaults to its homepage when omitted.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
suggestAltNoDraft replacement alt text for images with no alt or a filename as alt, by looking at them. Costs a vision call per image (max 6) against the website's AI budget, so it is off by default. Requires the PRO plan.

TDQS

A4.8/5.0
Behavior5/5

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

The description goes far beyond the readOnlyHint annotation by explaining exactly what it inspects (missing vs. empty alt, filename-as-alt, 'image of' opener, too-long alt, caption repetition, link-only content), what it deliberately excludes (decorative images, repeated alt), and edge cases like void runs and challengeSuspected. This level of detail leaves no misunderstanding about side effects or limitations.

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 lengthy but every sentence earns its place — it covers alternatives, costs, scope, exceptions, and edge cases in a logical order. It is front-loaded with the core purpose and read-only guarantee, then drills into specifics. While a bit verbose, it is not padded and remains scannable.

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

Completeness5/5

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

Given there is no output schema, the description fully compensates by enumerating all possible behaviors: the 20-finding cap with imageCount and findingsOmitted, the void-run handling, challengeSuspected logic, and the distinction between markup-decidable and semantic alt issues. An agent has everything needed to invoke and interpret 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?

Schema coverage is 100%, so a 3 is baseline, but the description adds real value: it explains the vision-call cost and PRO-plan requirement for suggestAlt and the homepage default for url. These operational nuances are not in the schema and materially affect how the agent should call the 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 opens with a specific, time-sensitive use case ('check one page's images and alt text NOW') and explicitly contrasts itself with list_alt_findings, making the purpose unmistakable. The verb 'check' plus the resource 'page's images and alt text' is precise and distinguishes it from siblings.

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

Usage Guidelines5/5

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

It gives explicit when-to-use ('including a page no scan has ever covered, and straight after changing images'), when-not-to-use ('For what a stored scan already recorded... use list_alt_findings instead'), and even points to a sibling for a related but different task (screen_reader_transcript). The metering caveat further helps the agent decide whether the cost is acceptable.

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

ci_gatePass/fail verdict for a CI pipelineA
Read-only
Inspect

Use this in CI or a deployment pipeline when a build should be blocked or allowed based on the site's accessibility: it turns the last recorded scan into a single passed true/false verdict against your thresholds. Criteria: minScore (1-100), maxCritical, maxSerious — any combination; with none given it defaults to minScore 80 and says so in the response. A failing verdict comes back as a normal result, not an error: read passed, do not retry. A website with no scan on record FAILS the gate — unmeasured must not pass CI — and so does one whose last scan attempt did not finish. The verdict names how many pages the judged scan covered; a pass over 1 page certifies that page, not the site. Judges the record only: no page is loaded, nothing is scanned by calling it. ENTERPRISE plan. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
minScoreNoFail if the last recorded score is below this. Default 80 when no other criterion is given.
maxSeriousNoFail if the last recorded scan found more than this many serious violations.
maxCriticalNoFail if the last recorded scan found more than this many critical violations.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and non-destructive, and the description adds substantial behavioral detail: failing verdict is a normal result not an error, unmeasured or incomplete scans fail the gate, and it judges only the recorded scan without loading pages. This prevents critical CI misbehavior like treating a failure as a retryable error.

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 information-dense but every sentence earns its place: use-case, criteria, failure semantics, no-scan caveat, page-count caveat, and read-only confirmation. It is front-loaded with the main purpose and then covers edge cases in a logical order.

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

Completeness5/5

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

Given there is no output schema, the description sufficiently explains the returned verdict and critical behaviors: how to read the result, when it fails, what the page-count caveat means, and that no scanning occurs. It is complete enough for an agent to call this tool correctly in a CI context.

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

Parameters4/5

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

The schema already documents all four parameters at 100% coverage, so the baseline is 3. The description adds the combination semantics ('any combination'), the default behavior when no criterion is supplied, and the fact that the response says so, which goes beyond the individual schema descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: it produces a pass/fail verdict for a CI pipeline based on the last recorded accessibility scan. It distinguishes itself from general reporting tools by emphasizing the gate decision purpose and the verdict output.

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

Usage Guidelines4/5

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

It explicitly says when to use it: in CI or a deployment pipeline when a build should be blocked or allowed based on accessibility. It does not name sibling alternatives or explicit when-not-to-use cases, but the intended context is clear and actionable.

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

compliance_statusWhat is on record for one websiteA
Read-only
Inspect

Use this when the question is documentary rather than technical: a demand letter, complaint or lawsuit, a procurement or customer accessibility questionnaire, an ADA / EAA / Section 508 conformance claim, 'what evidence do we have', 'what does our accessibility statement actually claim'. The evidence Inclusify holds for one website: the accessibility statement (company name, conformance level claimed, standards named, whether it is published and when, contact details on it) and the scanning record behind it (how many pages are checked against how many the plan includes, when the site was last checked, how many checks are on record, and whether anything is currently blocking them). Also returns an explicit list of gaps in that record. What it adds over site_overview: that tool's "statement" block says only whether one exists and is published, so if the question is 'is our statement live' it has already been answered and this call adds nothing. This one is the contents — the company named, the conformance level claimed, the standards named, and whether there is any contact route for reporting a barrier — plus how many checks are on record behind it and an explicit list of gaps. It holds no per-criterion WCAG status and no scan history; score_history and list_violations own those. This tool cannot and does not say whether a site is legally compliant — nothing in the data supports that conclusion, and it must not be inferred or reported as one. Report what is on record and what is missing, and leave the legal question to the customer's counsel. Read-only: costs one read and loads no page.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.6/5.0
Behavior5/5

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

Although the annotations already indicate readOnlyHint=true, the description goes further: 'Read-only: costs one read and loads no page', and it discloses important limitations such as not holding per-criterion status and not being able to determine legal compliance. It also warns the agent not to infer or report legal conclusions, aligning with openWorldHint expectations.

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

Conciseness4/5

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

The description is dense and front-loaded with usage guidance, but it repeats some return-content details in the comparison with site_overview. Still, nearly every sentence serves a distinct purpose, and the length is justified by the need to disambiguate siblings and warn against legal misuse.

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 needs to explain the tool's return contents and boundaries, and it does so comprehensively: statement fields, scan counts, gap list, exclusions, and operational cost. Nothing needed for a single-parameter read-only 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?

The input schema already describes the only parameter, website, with an example. The description refers to 'one website' but adds no new parameter semantics beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description specifies a precise documentary-evidence purpose and enumerates exactly what the tool returns: accessibility statement contents, scanning record, and a gap list. It also distinguishes itself from site_overview, score_history, and list_violations, making the tool's role unambiguous.

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 cases, such as demand letters, procurement questionnaires, and conformance claims, and explicitly says when not to use it: if site_overview already answered whether a statement is live, or when per-criterion WCAG status or scan history is needed. It also names alternative tools for those cases.

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

crawl_summaryThe most recent full-site crawlA
Read-only
Inspect

Use this when the question is COVERAGE — how much of the site has actually been checked, which pages are the worst — or to collect the outcome of a crawl you queued with start_crawl. Read it before quoting any site-wide number, because it is the tool that says what the rest of them are a sample of. The latest full-site crawl of a website: status, the URL it started from, how many pages it found against how many it actually scanned, the average score, totals by impact, when it ran, and the worst-scoring pages it produced. Read the found-vs-scanned numbers before quoting the average: a crawl audits at most the plan's page allowance, so on a large site the average describes a sample and this tool says so explicitly. Returns the most recent crawl whatever its state, including a failed or still-running one, so the numbers can be partial; the status field says which. Read-only, from stored results — it does not start a crawl, load any page or spend page allowance. A website that has never been crawled says so, which is missing coverage rather than a clean site. For a page's trend over time use page_history; a crawl is one dated snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
worstPagesNoHow many worst-scoring pages to list (default 10, cap 25).

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses that the tool is read-only and does not spend page allowance, that it returns partial data if a crawl is still running or failed, and that a never-crawled site is reported as missing coverage rather than a clean result. These behavioral traits are not visible in the annotations and are critical for correct interpretation.

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 primary use case and explicitly warns about sample vs. full coverage early. While it is longer than a typical description, every sentence adds value—usage guidance, data fields, caveats, and sibling routing. It is structured logically without redundancy, so the length is justified despite being on the verbose side.

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

Completeness5/5

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

The tool returns a complex summary with many fields, and there is no output schema. The description lists every data element (status, start URL, found/scanned counts, average score, totals by impact, run time, worst pages) and explains edge cases (failed/running crawls, never-crawled websites, sample limitation). It also routes to page_history for trends, making it fully self-contained for correct invocation and interpretation.

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%, with both parameters (website, worstPages) already clearly documented in the input schema. The description does not add extra semantics beyond what the schema provides—it mentions worst-scoring pages but does not elaborate on the worstPages parameter itself. Given the high schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('use this when the question is COVERAGE') and clearly enumerates exactly what data the tool returns: status, start URL, found vs scanned counts, average score, totals by impact, run time, and worst-scoring pages. It also distinguishes itself from siblings by naming page_history as the alternative for trends and start_crawl as the way to queue a crawl, so an agent can reliably separate it from other tools.

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

Usage Guidelines5/5

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

Explicitly says when to use it ('when the question is COVERAGE... or to collect the outcome of a crawl you queued with start_crawl') and when not to ('For a page's trend over time use page_history'). It also instructs the agent to read it before quoting any site-wide number, giving a clear precondition. This is model usage guidance with exclusions.

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

get_jobGet a queued job's resultA
Read-only
Inspect

Use this when keyboard_walk, simulate_condition, screen_reader_transcript or check_page_alt_text returned a job id instead of a result — never abandon the check, collect it here. Pass the job id the tool returned; if it is still running, call again in a few seconds. The payload is identical to the one the tool would have returned inline — the same fields, the same caps, the same void handling — so nothing has to be parsed differently because a page was slow. The per-response options below are read from this call rather than from the queued run, so a job can be collected with more detail than it was asked for without paying for a second browser run. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNokeyboard_walk and simulate_condition: return every selector each finding carries instead of the first 5, from the stored result. No page is loaded and nothing is charged, so this is how a truncated selector list is resolved.
jobIdYesJob id returned by the tool that queued it.
websiteYesThe website domain the job belongs to, e.g. "example.com".
includeRingNokeyboard_walk only: include the tab ring, one entry per stop. Off by default.
includeNodesNoscreen_reader_transcript only: include the per-announcement array with node ids and roles. Off by default; its text duplicates the transcript.
includeMeasurementsNosimulate_condition only: include the raw per-condition measurements. Off by default.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark this as read-only and non-destructive, but the description adds important behavior beyond that: per-response options are read at collection time rather than at queue time, a job can be collected with more detail without a second browser run, and no page is loaded or charged.

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 first sentence front-loads the critical routing information, and every following sentence contributes non-obvious behavioral detail. There is no wasted prose; the description is dense but well organized.

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

Completeness5/5

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

The description covers trigger conditions, polling behavior, response equivalence, collection-time option semantics, and cost/charge implications. Because the payload is stated to be identical to the queued tool's inline result, the absence of an output schema is not a gap.

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

Parameters4/5

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

The schema fully documents all six parameters with a 100% coverage, so the baseline is 3. The description adds meaning by explaining the jobId contract and clarifying that the boolean per-response options are evaluated when the job is collected, which gives the agent a better mental model of how the parameters work.

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

Purpose5/5

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

The description states a specific action and resource: collect the stored result of a queued job. It names the exact four tools that can return a job id and clearly distinguishes this tool from inline result delivery.

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

Usage Guidelines5/5

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

It explicitly says when to use the tool: when keyboard_walk, simulate_condition, screen_reader_transcript, or check_page_alt_text returned a job id instead of a result. It also tells the agent to retry after a few seconds if the job is still running and explains that no different parsing is needed because the payload is identical to inline.

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

keyboard_walkWalk the page by keyboardA
Read-only
Inspect

Use this when the question is whether the site actually WORKS for a keyboard-only or switch-device user — tab order, focus traps, whether the focus ring is visible at all — which no stored scan and no static markup check can answer. Run it before claiming keyboard accessibility for a page, and again after deploying any tab-order, focus or skip-link fix. It tabs through the page the way a keyboard-only user does and reports what breaks: focus traps, elements with no visible focus indicator, focus hidden behind sticky headers, controls that cannot be reached at all, controls that ignore Enter and Space, and tab order that contradicts the visual or document order. Focus indicators are measured by comparing rendered pixels rather than CSS, because indicators come from outline, box-shadow, border and background alike. Findings carry a confidence: the order rules in particular are nudges for a human to confirm, not assertions. A focus-obscured finding names the element doing the covering, once per occluder, and counts distinct covered elements — with stops carrying the tab-stop total when the ring revisits them. A focus-trap finding that may be an open modal behaving correctly says so and says what to check by hand. The response states the viewport the walk was performed in, because the obscured and offscreen results are geometry, and endedBy says which of three things stopped the walk: the ring closing ("ring-closed"), the step ceiling ("max-steps") or the run's time budget ("time-budget"). Only the first means the ring was fully walked. Each finding's selectors array holds up to 5 examples, with count the true total and selectorsTruncated set when more were cut; full: true returns them all from the stored run. A run that lands on a bot-protection interstitial rather than the page is reported as void, never as clean, and a void run carries no stops or findings at all. Where the interstitial title is contradicted by the walk itself, the run stands and carries challengeSuspected instead: trust the walk, not the title. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPage to walk. Must belong to the website above. Defaults to its homepage when omitted.
fullNoReturn every selector each finding carries instead of the first 5. Read from the result this run already stored — it does NOT walk the page again and costs nothing against any allowance. This is the way to resolve selectorsOmitted: re-running the tool to see a truncated list spends a second browser check on work already done.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
maxStepsNoCeiling on Tab presses (default 150). If the ring does not close within it, that is reported as unfinished rather than as a trap. The step ceiling is not the only limit: the whole run has a 45s budget on the worker, and the walk stops early if it runs out, reported as endedBy: "time-budget". Raising this is cheap in itself — a stop costs about 12ms — but the budget is mostly spent on the page load and the focus-indicator screenshots, so a run that ended on time will not walk further just because the ceiling is higher.
includeRingNoInclude the tab ring: one entry per stop, in order, with its name, role and whether focus was visible. Off by default — on a large page it is long, and the findings are usually what you want.

TDQS

A5/5.0
Behavior5/5

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

The description goes far beyond the read-only annotation: it discloses confidence levels, pixel-based focus measurement, endedBy semantics, void runs vs challengeSuspected, viewport dependence, selector truncation, and modal-trap caveats. There is no contradiction between the description and the annotations.

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

Conciseness5/5

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

The description is long but dense with non-redundant, operational details. It is front-loaded with the most important usage guidance and then systematically covers behavioral nuances, edge cases, and output semantics, so every sentence earns its place.

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

Completeness5/5

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

With no output schema present, the description fully compensates by explaining what findings look like, what endedBy values mean, how selectors and counts work, and how void and challengeSuspected runs are reported. It gives the agent everything needed to interpret results correctly.

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

Parameters5/5

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

Although the schema already covers 100% of parameters, the description adds meaningfully to them: it explains that full does not re-walk the page and costs nothing, maxSteps interacts with a 45s budget and endedBy, url defaults to the homepage, and includeRing returns one entry per stop. This is substantial value beyond the schema.

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

Purpose5/5

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

The description states a specific purpose: testing whether a site actually works for keyboard-only or switch-device users, covering tab order, focus traps, and visible focus indicators. It also distinguishes itself from stored scans and static markup checks, making the tool's unique value immediately clear.

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 'Use this when' guidance, tells the agent to run it before claiming keyboard accessibility and again after tab-order or skip-link fixes, and explains why static checks can't substitute for it. This is clear selection guidance with no ambiguity.

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

list_alt_findingsList alt-text findingsA
Read-only
Inspect

Use this when the subject is images — alt text, image descriptions, 'do our images have alt text' — across the whole site, from the scan already on record. For one page checked right now, including one no scan has covered, use check_page_alt_text. Alt-text problems found on a website's most recent scan: images with missing, filename-like, vague or inaccurate alt text, each with the element selector, the current value, why it was flagged, and a suggested replacement. Scoped to the current scan, not the whole history. Each finding also carries "markupHint": an tag rebuilt from the stored image URL and alt value, so you have something greppable — the selector describes the rendered DOM and appears in no source file. It is a reconstruction, not the markup that was scanned, so treat the src path and the alt value as search strings rather than diffing it against your source. How the counts relate: "rawFindings" is every row on record for the scan, "distinctImages" is how many source images those rows collapse to once per-page repeats and cache-variant URLs of one asset are merged, and "returned" is how many of those are in this response — returned <= distinctImages <= rawFindings, and the work is one alt decision per distinct image. A finding's "affectedImages" is a different kind of number and the one you must not sum: it counts images on that page sharing the finding's template, and every finding sampled from one template repeats it, so three findings reading 7 are one group of seven. "templateGroup" says which findings share a group, and "imagesInAffectedTemplates" is that roll-up already done once per group — quote it as the image total rather than adding anything up. "suggestedAlt" is written from the image alone, by a pass that never saw the page around it: if the image is decorative, or an adjacent link or caption already names the destination, alt="" is the correct fix and not the description offered — validate_fix on image-alt confirms alt="" as resolved. Every suggestion carries that as "suggestionCaveat"; the judge_alt_text prompt is the long version. Read-only — it does not change any alt text.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum findings to return (default and cap 100).
statusNoWhich findings to return. Defaults to "open".
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.7/5.0
Behavior5/5

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

Even though annotations already declare readOnlyHint and destructiveHint false, the description adds critical behavioral context: markupHint is a reconstruction, not scanned source; counts have a precise relationship with a warning against summing affectedImages; suggestedAlt is generated without page context and may not be the correct fix. This goes well beyond annotations.

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

Conciseness5/5

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

The description is long but every sentence serves a purpose: usage routing, return contents, scope, markupHint caveat, count semantics and warning, suggestedAlt caveat, and read-only confirmation. It is structured in logical blocks with no filler, and critical usage guidance 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?

With no output schema present, the description carries the full burden of explaining the response. It covers field semantics (selector, current value, reason, suggested replacement), the markupHint reconstruction, the relationships among rawFindings/distinctImages/returned, the template grouping caveat, and the suggestionCaveat. This is comprehensive for a complex tool.

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

Parameters3/5

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

Schema coverage is 100%, with each of limit, status, and website already described in the input schema. The description does not add parameter-specific notes, but that is acceptable because the schema carries the parameter semantics fully. Baseline 3 applies.

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

Purpose5/5

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

The description opens with a specific use case ('subject is images — alt text, image descriptions'), states the resource and action ('list alt-text findings'), and names the sibling tool (check_page_alt_text) it is not. It goes beyond the title by enumerating the types of problems found (missing, filename-like, vague, inaccurate) and the scope ('most recent scan').

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

Usage Guidelines5/5

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

It explicitly says when to use this tool ('across the whole site, from the scan already on record') and when to use the alternative ('For one page checked right now, including one no scan has covered, use check_page_alt_text'). It also notes the scope is the current scan, not history, leaving no ambiguity about selection.

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

list_content_findingsUnclear wording and structure in store contentA
Read-only
Inspect

Use this when the accessibility problem is in the WORDS a merchant wrote rather than in the theme's code — 'click here' links, unlabelled fields, headings that describe nothing — and a writer or merchandiser will be the one editing it, in the Shopify admin rather than a repo. Problems found in the text of a Shopify store's own content — product descriptions, pages, articles, collections: link text that does not say where it goes, controls with no label, headings that do not describe what follows, tables used for layout, and the structural markup rules that can be decided from the authored HTML. Each finding carries the item it is in, the current text, why it was flagged, a suggested replacement where there is one, how confident the judgement is, and an admin link to the exact place to edit. Do not use it for images or alt text — that is list_alt_findings, and the two never overlap. Only Shopify-connected stores have this data; a site with no store connection returns nothing. Read-only: costs one read and loads no page. An empty result is reported together with whether a content review has ever run, because 'never reviewed' and 'reviewed and clean' are different answers and must not be conflated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum findings to return (default 20, cap 100).
statusNoWhich findings to return. Defaults to "open".
websiteYesThe website domain as registered in Inclusify, 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 already declare readOnlyHint=true, so the read-only statement is consistent and reinforced; the description adds useful behavior beyond annotations: it costs one read and loads no page, returns nothing for non-Shopify stores, and explains the special meaning of an empty result. No contradiction with annotations.

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

Conciseness4/5

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

The text is dense and front-loaded with the primary use case, then return payload, exclusion, and edge-case behavior. Minor redundancy exists in restating 'Problems found in the text' after the opening clause, but every sentence contributes useful routing or boundary 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?

Given there is no output schema, the description compensates by enumerating what each finding carries (item, current text, reason, suggestion, confidence, admin link). It also covers expected empty results and scope limitations, making it sufficient for an agent to call the tool correctly.

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

Parameters3/5

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

The input schema documents all three parameters (limit, status, website) with descriptions covering 100%, so the schema does the heavy lifting. The description does not need to re-explain parameters and adds no new parameter-specific details, keeping this at the 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 action ('list') and resource ('content findings') and immediately defines them as accessibility problems in merchant-authored words rather than theme code. It also explicitly separates itself from list_alt_findings, so an agent can disambiguate by text 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?

The description gives an explicit when-to-use condition ('when the accessibility problem is in the WORDS a merchant wrote rather than in the theme's code') and says when not to use it ('Do not use it for images or alt text — that is list_alt_findings'). It also warns about Shopify-only availability and the 'never reviewed' versus 'reviewed and clean' distinction.

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

list_monitored_pagesPages under monitoring, and whether monitoring is workingA
Read-only
Inspect

Use this whenever a scan-backed answer came back empty or thin and you need to know whether that means 'clean' or 'never checked'. It is the only tool that says whether monitoring is actually working: a page failing every night, throttled, or a whole storefront behind a password produces no data and reads exactly like a site with nothing wrong. The monitored-page inventory for a website: which URLs are watched, which are paused, when each was last scanned, its last score, and which pages are failing, unreachable, throttled or overdue. Also reports how many of the plan's audited-page slots are in use. Read-only from stored state: it loads nothing, costs no page allowance, adds and removes no pages, and shows the last recorded attempt rather than the live state of the site. Monitoring runs about every 20h per page, so a page scanned a few hours ago being "due" is normal, not a fault.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description discloses important behavioral traits: it loads nothing, costs no page allowance, adds/removes no pages, and shows the last recorded attempt rather than live site state. It also explains the ~20h monitoring cadence and the way silent failures can resemble clean sites, giving the agent deeper operational understanding.

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

Conciseness5/5

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

The description is longer than average, but every sentence earns its place: usage trigger, uniqueness, returned fields, slot reporting, read-only semantics, and cadence context. It is front-loaded with the most important usage guidance and contains no fluff or tautology.

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

Completeness5/5

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

For a one-parameter read-only tool with no output schema, the description is remarkably complete. It tells the agent when to call it, what data it returns, how to interpret empty results, what operational behavior to expect, and how to distinguish normal cadence from faults. 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?

Schema description coverage is 100%, and the schema already defines 'website' as the registered domain with an example. The tool description does not add new parameter-level meaning beyond that, so the baseline of 3 for high schema coverage is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('lists') and resource ('monitored-page inventory for a website'), then enumerates exactly what is reported: watched URLs, paused pages, last scan time, last score, and failing/unreachable/throttled/overdue statuses. It also explicitly distinguishes itself as the only tool that reveals whether monitoring is actually working, separating it from siblings like list_websites or site_overview.

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

Usage Guidelines5/5

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

The description gives an explicit trigger: 'Use this whenever a scan-backed answer came back empty or thin and you need to know whether that means clean or never checked.' It further states this is the only tool that reports whether monitoring works, which excludes alternatives, and warns that recent scans being 'due' is normal rather than a fault, shaping correct interpretation.

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

list_violationsList accessibility violations with fix materialA
Read-only
Inspect

Use this when the ask is to fix, remediate, prioritise or cost accessibility, a11y, WCAG or ADA failures on a site — 'what is broken', 'where in our code is it', 'give me a remediation plan'. It is the free, no-page-load record of what the static scanner found, and the place remediation starts; it is not the whole audit, and what it cannot see is named at the end. The fix list for a website, from its current scan only — not its whole history. One entry per axe rule, worst impact first, not one entry per page: a rule is listed once with "totalElements" (how many elements across the site fail it) and "pages" (each failing page with its own element count). Grouping is by rule rather than by selector because axe writes a different selector for the same element on every page — the same button can be "button[data-product-id=13914]" on one page and ".add-to-wishlist-button" on the next — so selectors cannot identify a shared component. Each entry carries what you need to act: impact, rule id, WCAG criterion, the help text and its documentation URL, and — from ONE example page, named in "examplePage" — the failing HTML, that page's selectors, the computed foreground/background/ratio for a contrast failure, and the AI's suggested fix where one was generated and is trustworthy. For a contrast failure, "contrastData.minimumPassing" is the nearest colour that clears the threshold, with the ratio it achieves — derived arithmetically from the measured colours, so prefer it over any suggested hex. Where a suggestion is held back, "suggestionWithheld" says why rather than leaving the field silently empty. Each entry also carries "grepFor": strings taken from the failing elements across every affected page — ids, distinctive non-utility classes, visible text, image filenames — that are likely to appear verbatim in your source, most widespread first. Search your own codebase for those to find the template. "grepTargets" is the same list tagged with what each string is and how much weight it carries: a "strong" target is content-derived or a distinctive authored name, a "weak" one is a generic class kept only because the element offered nothing better. "nextStep" is built from strong targets alone, and when only weak ones exist it says so instead of naming one — a one-word class can be produced at render time or held in a CMS or configuration value, so it is corroboration and not a location. The CSS selectors describe the rendered DOM and appear in no source file; they are capped at 3 per entry because ten selectors differing only by a product id carry one bit of information. A rule failing on many pages is usually one shared component, but this tool does not claim to know that: it gives you the pages and the example markup so you can check before fixing page by page. What it does give you is an estimate — "distinctCauses", with the shapes themselves in "causes" — computed by normalising each element's selector (attribute values and :nth-child indices removed) and counting the distinct shapes, so 88 failing buttons that differ only by product id come back as roughly one cause. Treat it as an UPPER BOUND on the number of templates and not a measurement: two shapes can be one component that axe named differently on two pages, and one shape can be two components that render alike. Every entry in "causes" carries its OWN evidence — examplePage, htmlSnippet, findingId and, on contrast rules, contrastData with its own minimumPassing — because the rule-level example fields describe one cause and the others routinely differ: a six-cause contrast failure is usually not six instances of one colour. Fix and validate each cause, not the majority one. "totalDistinctCauses" sums them over the entries returned, which is the number that sizes the work; totalElements sizes the symptom. Use it to decide what to fix and where; then validate_fix on the markup you write, before deploying. Each entry says in advance whether that will work: "markupValidatable" false means validate_fix has no markup check for the rule and will refuse it, and "confirmWith" names the check that CAN confirm the fix once it is live — for a keyboard or focus rule that is keyboard_walk, not a rescan, which is the substitution to avoid. "scan" says which run these findings come from and how much of the site it covers: its date, the pages it scanned, and how many pages are monitored against the plan's allowance. Not the tool for alt-text quality (list_alt_findings covers the AI pass) and not the tool for anything only visible in a render — keyboard behaviour, focus visibility, zoom reflow, tap-target size, forced colours and reading order come from keyboard_walk, simulate_condition and screen_reader_transcript, and reading this has run none of them. Reads stored scan results, so it loads no pages and costs nothing against the monthly page allowance. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoNarrow to one page. A full URL, or a path like "/pricing". Matched leniently — trailing slashes, www, tracking parameters and case in the host are ignored.
fullNoReturn each entry's selector, page and cause lists in full instead of the first 3, 10 and 5. Off by default because those arrays are long — a rule failing on 400 pages lists 400 URLs — and the counts (totalElements, pageCount, distinctCauses) already tell you the size. Turn it on when "selectorsCapped", "pagesCapped" or "causesCapped" is true and you need the rest. Reach for it especially on causesCapped: a rule with more than 5 distinct shapes has more fix sites than the capped list shows, each with its own evidence. It is the same stored data, so it still loads no pages. Does not lift the read ceiling behind "rowsCapped".
limitNoMaximum rule entries to return (default 20, cap 50). totalRules always reports how many there were.
impactNoOnly this severity. Omit to get everything, worst first, which is usually what you want.
ruleIdNoOnly this axe rule, e.g. "color-contrast" or "button-name". Use it to work through one class of problem at a time.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.6/5.0
Behavior5/5

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

The description goes far beyond the readOnlyHint/openWorldHint annotations by explaining aggregation by rule rather than page, capped selectors, distinctCauses as an upper bound, per-cause evidence, markupValidatable behaviour, scan coverage, and the fact that no pages are loaded. It explicitly frames the tool as not the whole audit and names what it cannot see, which is consistent with the openWorldHint annotation.

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

Conciseness4/5

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

The description is long but logically structured and front-loaded: purpose, grouping rationale, data fields, cause estimation, validation flow, scan scope, and exclusions. Some redundancy exists — 'no-page-load' and 'not the whole audit' appear more than once — but the density of decision-relevant detail justifies most of the length.

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

Completeness5/5

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

With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly: totalElements, pages, examplePage, contrastData, grepFor, grepTargets, nextStep, distinctCauses, causes, markupValidatable, confirmWith, and scan are all described with their semantics. It also covers limitations, alternatives, cost implications, and the recommended follow-up tool, making it complete for an agent to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all six parameters and the baseline is 3. The tool description adds useful behavioural context around caps and output fields that indirectly informs use of `full` and `limit`, but it does not directly add per-parameter semantics beyond what the schema provides.

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

Purpose5/5

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

The description opens with a specific use case — fixing, remediating, prioritising, or costing accessibility failures — and names the deliverable: a fix list from the current static scan. It clearly distinguishes itself from siblings by saying it is not for alt-text quality and not for render-only checks, naming list_alt_findings, keyboard_walk, simulate_condition, and screen_reader_transcript.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool ('Use this when the ask is to fix...') and when not to use it ('Not the tool for alt-text quality... Not the tool for anything only visible in a render...'). It also names the exact alternative tools for those cases and directs the user to validate_fix afterward, providing clear routing among siblings.

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

list_websitesList every website in the accountA
Read-only
Inspect

Call this first whenever you do not already know which domains the account holds, or the question names no site. Every website in your Inclusify organisation with its plan, its last recorded score and when that scan ran. Takes no website argument. Works on every plan, including Free and an account holding no websites at all — an empty list is a real answer here, not a refusal, and it means the account has no sites yet rather than that you lack access. Add one with add_website. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint/destructiveHint annotations, the description adds crucial behavior: an empty list is a legitimate response meaning no sites exist, not a permission failure, and the tool works on all plans including Free. This directly helps an agent interpret results 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?

The description is front-loaded with the most important usage instruction and every sentence contributes meaningful guidance. The trailing 'Read-only' slightly duplicates the readOnlyHint annotation, but the overall structure is efficient and well organized.

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 effectively covers return values by naming the fields and clarifies important edge cases: no sites, any plan, and empty-list semantics. The information is sufficient for an agent to call and interpret 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?

With zero parameters and full schema coverage, the baseline is 4. The description reinforces that no website argument should be passed, which is useful given sibling tools do take such arguments, though it adds little beyond the empty schema.

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

Purpose5/5

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

The description clearly states the tool lists every website in the account and specifies the returned fields: plan, last recorded score, and scan time. It distinguishes itself from add_website by explicitly saying it takes no website argument and by being the discovery-first tool.

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

Usage Guidelines5/5

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

It gives explicit timing guidance: call this first when you don't know which domains the account holds or when the question names no site. It also clarifies that it works on every plan and that an empty result is a valid answer, and points to add_website for creating a site.

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

next_stepsWhat to do next on this website, in orderA
Read-only
Inspect

Use this when the customer wants direction rather than data: 'what should I do', 'where do I start', 'what's most important', 'help me with this site', 'we just signed up'. Also use it before writing any remediation or action plan — it names what is BLOCKING, which is routinely something other than the accessibility findings, and a plan written without it can be entirely correct and reach no visitor at all. Returns an ordered list of concrete next actions for one website, each naming the tool or the panel page that performs it, why it sits where it does, and whether anything below it is blocked until it is done. The ordering is by dependency: a widget that has never reported in outranks everything, a site with no scan on record outranks reading findings, and existing findings outrank upgrading a plan. Steps that need a higher plan are included with the plan named, rather than dropped, so the answer does not quietly become a description of the current plan. What it does NOT do: it performs none of the steps. It starts no scan, changes no setting, installs nothing and charges nothing. It lists no individual accessibility violations either — list_violations and the other finding tools own those, and this points at them. Works on every plan including Free; on a plan without scan data the steps are the account and coverage ones, and the missing scan data is itself named as a step. Read-only: it is composed from site_overview's reads, so it costs about what that call costs and loads no page.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, 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 already declare readOnlyHint=true and destructiveHint=false, and the description goes well beyond them: it discloses the dependency-based ordering logic, that plan-gated steps are named rather than dropped, that a missing scan is itself surfaced as a step, that the call executes no action and charges nothing, and that it costs roughly what site_overview's reads cost. This far exceeds what the annotations alone convey.

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

Conciseness4/5

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

The description is long, but the length is earned: it must differentiate among 35 siblings and carry return-value details since there is no output schema. It is front-loaded, opening with when-to-use, then return shape, ordering, exclusions, and cost. A small amount of ground already covered by annotations (read-only safety) is restated, 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?

For a single-parameter tool with no output schema and heavy sibling overlap, this description is complete: it documents the return structure, the ordering principle, plan-dependent behavior, exclusions, sibling handoff, and cost. Nothing an agent needs to decide whether to call it or interpret its result 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 schema already documents 'website' as the domain registered in Inclusify with an example. The description's 'for one website' phrasing aligns with the parameter but adds no format or value semantics beyond the schema, so the baseline of 3 applies.

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

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: 'Returns an ordered list of concrete next actions for one website.' It differentiates from siblings explicitly, naming list_violations as the owner of individual violations and clarifying it 'starts no scan,' which separates it from start_crawl and the finding tools without opening their schemas.

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

Usage Guidelines5/5

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

Gives explicit when-to-use triggers with customer phrasing examples ('what should I do', 'we just signed up') plus a workflow cue ('before writing any remediation or action plan'). It also tells the agent when NOT to use it: it lists no individual accessibility violations, routing those to list_violations and the other finding tools.

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

org_findingsThe worst findings across every websiteA
Read-only
Inspect

Use this to find the one fix that pays off across every site at once — the shared theme, component or colour token failing on several domains — rather than remediating site by site. Accessibility findings from the last recorded scan of every website in the organisation, worst impact first and grouped by the pattern behind them, so one template fault across forty pages reads as one problem rather than forty. ENTERPRISE plan. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum patterns to return (default and cap 20).

TDQS

A4.4/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: it clarifies data comes from the 'last recorded scan,' results are 'worst impact first,' and findings are grouped by underlying pattern so one recurring root cause is presented as one problem. It also notes the ENTERPRISE plan restriction and read-only nature, all of which help an agent predict behavior.

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

Conciseness4/5

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

The description is well-structured, front-loading the primary use case and then explaining aggregation and ordering. It is slightly wordy with illustrative phrasing like 'one template fault across forty pages,' but every clause contributes to understanding the tool's scope and behavior.

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 tool with one optional parameter and no output schema, the description adequately conveys what the caller will receive: accessibility findings grouped by pattern, worst impact first. It covers data source, grouping, ordering, and enterprise restriction, leaving no critical gap for correct invocation.

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

Parameters3/5

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

The schema fully documents the only parameter, limit, including its default and cap, so the description doesn't need to add parameter-level detail. The description's mention of returning grouped patterns aligns with the parameter's purpose but adds no extra semantic value beyond the schema.

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

Purpose5/5

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

The description clearly identifies a specific verb and resource: it finds cross-site accessibility patterns that can be fixed once across every website, grouped by shared theme, component, or colour token. It distinguishes itself from site-by-site remediation tools by emphasizing aggregated, pattern-level findings rather than individual findings per page.

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

Usage Guidelines4/5

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

The description explicitly states when to use it: to find a single high-leverage fix affecting multiple sites rather than remediating site-by-site. It doesn't name specific sibling tools as alternatives, but the 'rather than remediating site by site' contrast provides practical selection guidance.

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

org_rollupScores and finding counts across the whole accountA
Read-only
Inspect

Use this when the accessibility question spans the whole portfolio rather than one site — 'where do we stand across our brands', an exec or board summary, which sites are unscanned. One call instead of twenty: the last recorded score for every website in the organisation, the average, and how many sites have never been scanned or are overdue. ENTERPRISE plan. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, openWorldHint, and non-destructive behavior. The description adds useful context: it is an aggregate/rollup call ('one call instead of twenty'), works across all websites, includes never-scanned and overdue counts, and requires the ENTERPRISE plan. No contradiction with annotations.

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

Conciseness5/5

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

Three sentences, each earning its place: when to use, what data comes back, and plan/read-only status. It is front-loaded with the primary use case and contains no filler.

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

Completeness4/5

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

With no output schema, the description covers the main return elements: per-site scores, average, and counts for unscanned/overdue sites. It is complete enough for a zero-parameter rollup tool, though it does not specify exact response formatting or mention the 'finding counts' from the title explicitly.

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

Parameters4/5

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

The tool has zero parameters and the schema coverage is 100%, so there is no parameter-level burden on the description. The description adds value by explaining what the result contains, which is sufficient for a no-parameter 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 clearly states what the tool does: returns the last recorded score for every website in the organisation, the average, and counts of unscanned or overdue sites. It also distinguishes itself from per-site tools by framing the scope as 'the whole portfolio rather than one site'.

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

Usage Guidelines4/5

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

It explicitly says when to use it: for whole-portfolio accessibility questions, exec/board summaries, or identifying unscanned sites. It also gives a when-not signal ('rather than one site'), though it does not name a specific alternative sibling tool.

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

page_historyOne page's scans over timeA
Read-only
Inspect

Use this when the question is one URL over time: 'did my fix actually work', 'when did this page break', 'which release dropped this page's score'. It is the only tool that names the scan where a single page regressed. Every recorded monitoring scan of that URL, newest first: score, violations by impact, and how many issue types were fixed and newly introduced since the page's previous scan. Needs a "url"; use score_history for the whole site. Counts are rule-level (distinct axe rules), not element-level, so fixing forty instances of one rule reads as one fixed issue type. The first scan of a URL is a baseline and reports no new/fixed figures rather than zeroes. Read-only, from stored scans: no page is loaded, no page allowance is spent, and a fix deployed since the last scan does not appear. Full-site crawl rows are excluded — if a URL only appears in a crawl, this says so instead of reporting no history.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe page to report on — full URL ("https://example.com/pricing") or a path ("/pricing"). Trailing slash and www do not matter.
limitNoMost recent scans to return (default 20, cap 100).
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A5/5.0
Behavior5/5

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

Even though annotations already declare readOnlyHint=true and openWorldHint=true, the description adds valuable behavioral detail beyond those flags: 'no page is loaded, no page allowance is spent', 'a fix deployed since the last scan does not appear', rule-level vs element-level counting, and the baseline-reporting behavior. These are critical for an agent to interpret results correctly and are not derivable from structured fields.

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

Conciseness5/5

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

The description is longer than average but tightly packed—every sentence serves a purpose. It front-loads the primary use case and examples, then systematically covers output contents, counting semantics, edge cases (baseline, crawl exclusion), and read-only nature. No redundancy or filler; each clause earns its place.

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

Completeness5/5

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

With no output schema, the description fully specifies what the tool returns: score, violations by impact, count of fixed/introduced issue types, and ordering (newest first). It also covers the baseline quirk and the handling of crawl-only URLs, plus the clarifying note that a deployed fix won't appear. An agent has everything needed 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.

Parameters5/5

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

Schema coverage is 100% (all params have descriptions), but the description still adds meaning beyond the schema: it explains URL normalization ('Trailing slash and www do not matter'), clarifies the default and max for limit, and describes the output semantics (rule-level counts, baseline lacks new/fixed figures). This goes well above the baseline expected when schema covers everything.

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 precise scope: one URL over time, with concrete example use cases ('did my fix actually work', 'when did this page break'). It names the sibling tool (score_history) to differentiate, making it clear this is the per-page counterpart, not the per-site one.

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 opens with 'Use this when the question is one URL over time' and provides an explicit alternative: 'use score_history for the whole site.' It also specifies exclusion conditions (full-site crawl rows) and clarifies the baseline behavior, leaving no ambiguity about when to invoke this tool.

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

plan_optionsWhat plans exist and what this site is onA
Read-only
Inspect

Use this for any question about plans, pricing, limits or upgrading: 'what plan are we on', 'what does Pro cost', 'what would we get for upgrading', 'is it worth moving up', 'how many pages do we get', 'why can't I use X'. Also use it after any tool refuses on a plan gate — the refusal names the plan required, this says what that plan costs and what else comes with it. Returns every plan with its current price, monthly visitor allowance, audited-page allowance and in-product feature list, all read from Inclusify's live configuration rather than remembered — so do not quote a price from memory, quote this. It also returns where the current plan's allowances actually stand (pages monitored against the allowance, visitors this month against the cap), because 'should we upgrade' is not answerable from a price list alone: a site using a fraction of what it already pays for usually should not. It respects who owns the billing. An invoice-managed website has no self-serve upgrade at all, and this says so rather than offering a link that will not work for them. What it does NOT do: it changes nothing, charges nothing and creates no checkout. It returns no URL either — billing_link owns that. It holds no accessibility data; site_overview owns the site's condition. Works on every plan including Free. Read-only: two indexed reads and one cached config lookup, no page load.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, 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 only say the operation is read-only and open-world, so the description carries the burden of behavioral detail. It explains that data comes from 'Inclusify's live configuration rather than remembered', tells the agent not to quote a price from memory, and discloses that invoice-managed sites cannot self-serve upgrade. This goes well beyond the structured annotations without contradicting them.

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

Conciseness4/5

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

The description is fairly lengthy but front-loaded with immediate use cases, then product details, then a key behavioral warning about not quoting prices from memory. Every section contributes distinct value, though it could be tightened slightly 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?

For a tool with no output schema, the description is remarkably complete: it specifies the full return set (every plan, price, visitor allowance, audited-page allowance, feature list), explains that current plan usage is also returned, and reveals the billing-ownership nuance. An agent has enough information to use this tool correctly in a wide range of plan-related questions.

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 schema has one parameter and 100% schema description coverage, so the schema fully documents the parameter. The tool description does not discuss the parameter, which is fine given the high coverage baseline, but it adds no additional meaning about how to populate or format 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 clearly identifies this tool as the resource for any question about plans, pricing, limits, and upgrading, with concrete examples like 'what plan are we on' and 'how many pages do we get'. It also distinguishes itself from generic plan tools by emphasizing it returns live configuration data and current usage allowances, making its scope unmistakable.

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

Usage Guidelines4/5

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

The description gives explicit trigger conditions: 'Use this for any question about plans, pricing, limits or upgrading' and 'Also use it after any tool refuses on a plan gate.' It does not explicitly name sibling alternatives or state when not to use it, but the examples and the post-refusal use case provide clear contextual routing.

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

rename_websiteRename a website in InclusifyA
Idempotent
Inspect

Use this when the user wants to change what a site is CALLED inside Inclusify — tidying up a default name, or matching a rebrand. WRITES to this website's Inclusify configuration, never to the site itself: the display label only. It does NOT change the domain, the website's address, or anything a visitor of that site can see, and no other tool or link starts working differently afterwards: everything here is addressed by domain, not by name. To point Inclusify at a different or additional hostname use add_domain instead — renaming will not do it. Applies immediately, needs no confirmation, and is reversible by calling again. If the name is already what was asked for, nothing is written and the response says so.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWhat to call it, up to 100 characters. A human label such as "Acme Store" — this is not a domain and changing it does not move the site.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond annotations, explaining that it writes to Inclusify configuration only, never to the site itself, does not change the domain, applies immediately, requires no confirmation, is reversible, and that a no-op call produces a specific response. This matches idempotentHint=true and does not contradict any annotation.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and then uses each sentence to eliminate a common misconception: no domain change, no visitor-visible effect, no routing change, use add_domain for hostnames, idempotent, reversible. Despite its length, every sentence contributes 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?

For a two-parameter, simple mutation tool with rich annotations, this description covers when to use it, what it affects, what it does not affect, how to handle the alternative case, and what happens on redundant calls. Nothing needed for correct invocation is missing, and no output schema 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by clarifying that everything is addressed by domain rather than by name, and that the name parameter is only a display label that cannot move or redirect the site. This supplements the schema's descriptions rather than merely repeating them.

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 ('rename') and clear resource ('a site's display label inside Inclusify'), and immediately contrasts itself with add_domain. An agent can distinguish this tool from every sibling without needing to inspect 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 explicitly states when to use the tool ('tidying up a default name, or matching a rebrand') and gives a direct alternative: 'To point Inclusify at a different or additional hostname use add_domain instead — renaming will not do it.' This leaves no ambiguity about routing.

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

score_historyScore trend over timeA
Read-only
Inspect

Use this when the question is about TIME rather than the site's present state: is our accessibility getting better or worse, did last quarter's remediation move the number, when did the score drop, what did this look like a year ago. It answers trend and nothing else — it names no violation and locates nothing. Accessibility score for a website over time, from the scheduled monitoring scans already on record, with the direction of travel and the change over the window worked out. Per day for up to the last 30 days, where the plan keeps a daily series (Pro and above; below that the daily answer is served per month instead, and says so); per month, from the stored monthly snapshots, for up to 24 months — pass "months" (or granularity "month") for the long view. Pass "url" to follow one page instead of the site; without it each day's point is the mean across the pages scanned that day, so a day with one page scanned is not comparable with a day with ten. Read-only, from stored scans: it loads no page, costs no page allowance, and knows nothing newer than the last monitoring scan — it cannot confirm a fix deployed minutes ago. Full-site crawls are excluded (see crawl_summary); they are dated snapshots, not a series. A website with no scans in the window says so explicitly — that is missing data, never a clean result.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoNarrow to a single page's own trend. Full URL or a path. Omit for the whole site.
daysNoHow far back to look, in days (default 30, cap 30 — daily history is kept for at most 30 days, and on some plans not at all). Use "months" to go further back.
monthsNoHow far back to look, in whole months (cap 24). One point per calendar month, from the stored snapshots: the score is where the site ended that month, the new/fixed counts are what happened during it. Overrides "days".
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
granularityNoPoint size. Defaults to "day", or "month" when "months" is given.

TDQS

A4.8/5.0
Behavior5/5

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

Although readOnlyHint=true already signals a safe read, the description adds substantial behavioral context: it loads no page, costs no page allowance, knows nothing newer than the last monitoring scan, explains that a day with one page scanned is not comparable with a day with ten, and explicitly states that missing scans produce a 'missing data' message rather than a clean result. No contradiction with annotations.

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

Conciseness4/5

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

The description is dense and front-loaded, starting with the key decision rule ('about TIME') before details. Every sentence adds information; however, the final section on daily monthly series is somewhat long and could be tightened. Overall, it earns its length because it packs rare and valuable guidance.

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

Completeness5/5

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

Given the tool's complexity (two time axes, plan-dependent availability, single-page vs site aggregation, sibling crawl_summary), this description covers all major operational edges: what data exists, what the points mean, how to request monthly data, what is excluded, and how missing data is signaled. No output schema exists, but the description explains the response semantics (direction of travel and change over window) sufficiently.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all five parameters; the description therefore only needs to add meaning. It does so for the key decision parameters (days vs months vs granularity, url for single-page trend, the per-day mean behavior). The only slight miss is that the description does not restate every parameter, but that is unnecessary given the high schema coverage.

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

Purpose5/5

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

The description opens with 'Use this when the question is about TIME rather than the site's present state' and immediately names the resource (accessibility score over time) plus what it does not do ('it names no violation and locates nothing'). This clearly distinguishes it from sibling tools like list_violations, crawl_summary, and site_overview, so an agent can select it correctly without opening schemas.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use ('about TIME rather than the site's present state'), explicit when-not-to-use ('Full-site crawls are excluded (see crawl_summary)'), and behavioral caveats ('cannot confirm a fix deployed minutes ago'). It even explains how to choose between daily vs monthly granularity, eliminating ambiguity.

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

screen_reader_transcriptScreen-reader transcriptA
Read-only
Inspect

Use this when the question is whether the page still makes SENSE read aloud — the screen-reader, NVDA, JAWS or VoiceOver experience, blind and low-vision users, 'is this usable without sight' — rather than whether it passes rules. Rule checks can all pass on a page whose announcements are meaningless, and no stored scan holds this. It reads the page the way a screen reader does: every announcement in order, with roles, names, states and hints, so you can judge whether the meaning survives being linearised — unlabelled images and icon buttons, controls with no name, text whose reading order contradicts the visual layout. This models Chromium's accessibility tree; it is not a recording of NVDA, JAWS or VoiceOver, which word announcements differently, so do not treat the exact phrasing as ground truth. A run that lands on a bot-protection interstitial rather than the page is reported as void, never as clean, and a void run carries no transcript. Where the interstitial title is contradicted by the tree that was read, the run stands and carries challengeSuspected instead: trust the transcript, not the title. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPage to read. Must belong to the website above. Defaults to its homepage when omitted.
modeNoHow to present the page. "reading" is the linear top-to-bottom read. "rotor" is the headings/landmarks/links/controls lists a screen-reader user actually navigates by, plus structural findings. "both" (default) returns everything.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
maxNodesNoCap on announcements (default 800). Truncation is always reported.
includeNodesNoInclude the per-announcement array and the structured rotor object, both carrying accessibility-tree node ids, roles and heading levels. Off by default because their text duplicates the transcript and rotor prose and roughly doubles the response; turn it on only when you need to reference nodes. Structural findings are always included, with each one's nodeIds capped to 5 examples (nodeIdsTruncated marks when more exist).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial behavioral context: it models Chromium's accessibility tree rather than recording specific screen readers, it reports bot-protection interstitials as void rather than clean, and it explains the challengeSuspected fallback when the title contradicts the read tree. These details go well beyond the annotations and help an agent interpret results 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?

The description is dense but well-organized, front-loading the primary use case and then layering caveats. Every sentence earns its place, but it is long and somewhat technical; a slightly more compact phrasing could improve scannability. The structural separation of the key distinction (rule checks vs sense read-aloud) is effective.

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 — multiple modes, output variations, void/interstitial handling, and the cognitive model of how screen readers linearize content — the description is remarkably complete. It covers what the tool returns, what it does not (exact phrasing ground truth), how to interpret void runs, and when to enable includeNodes. No output schema exists, so the description appropriately carries the burden of explaining return behavior and does so thoroughly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful context for the mode parameter ('reading' vs 'rotor' vs 'both') and the includeNodes parameter (structural findings are always included, nodeIds capped to 5 examples). It also clarifies that maxNodes truncation is always reported. However, it doesn't add much beyond the schema for url/website, and the description doesn't explain the default homepage behavior for url — though that is in 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 starts with a specific, actionable use case — determining whether a page makes sense read aloud — and contrasts it with rule-checking, which distinguishes this tool from sibling tools like check_page_alt_text and list_violations. It also clearly names the resource (screen-reader transcript) and what it produces (announcements in order, roles, names, states and hints).

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('when the question is whether the page still makes SENSE read aloud') and when not to rely on it ('do not treat the exact phrasing as ground truth' because it models Chromium's accessibility tree, not NVDA/JAWS/VoiceOver recordings). It also explains that stored scans don't hold this data, so no alternative tool can substitute, and it names the read-only nature.

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

set_jira_projectChoose which Jira board this site's tickets are filed onA
DestructiveIdempotent
Inspect

Use this when the user wants accessibility findings exported from a site to go to a different Jira project, or is setting one up for the first time. WRITES to this website's Inclusify configuration, never to the site itself and never to Jira — it records which project key exports should use, and files no tickets by itself. It CANNOT connect Jira: authorising Atlassian is a browser OAuth flow on the Inclusify panel's Integrations page and no assistant can do it, so this refuses until the workspace is connected. It also cannot list the available projects — ask the user for the project key, or have them read it off the board. REQUIRES CONFIRMATION, because pointing this at the wrong board sends the work to a team that did not ask for it while the team that did sees nothing, and nobody notices until they ask why no tickets were ever raised. The account owner is emailed a record, including the previous key. Needs the PRO plan, matching the panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
projectKeyYesThe Jira project key, e.g. "ACC" or "WEB2" — the prefix on that board's issue numbers, not the board's display name. Case is normalised to upper.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: explains exactly what is written and what is never touched, why confirmation is required (misrouted work to a team that didn't ask for it), that the account owner is emailed a record including the previous key, and that a PRO plan is required. Nothing contradicts readOnlyHint=false or destructiveHint=true; the one-use confirmation token sits in mild tension with idempotentHint=true, but the schema documents that token explicitly and the underlying end-state change is idempotent.

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?

Around 180 words — long, but every sentence carries distinct information (when, what, exclusions, confirmation rationale, notification, plan gate) and the usage guidance is front-loaded. The density is justified for a destructive config tool with a two-step confirmation flow and several refusal conditions.

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 3-parameter tool with no output schema, the description covers preconditions (PRO plan, connected workspace), the exact effect and non-effects, the confirmation flow, failure modes (refusal when unconnected, inability to list projects), and post-change notification. An agent has everything needed to decide, invoke, and recover from edge cases.

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

Parameters3/5

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

Schema coverage is 100% and the schema itself is unusually detailed (domain format with 'example.com', project key with 'ACC'/'WEB2' examples, explicit warning against display names, case normalisation, and the full two-call confirm-token workflow). The description reinforces the projectKey semantics by noting the tool cannot list projects, but adds no new parameter-level detail, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource (records the Jira project key exports should use, in the Inclusify configuration) and immediately draws the boundary: it 'never' writes to the site or to Jira and 'files no tickets by itself,' which cleanly distinguishes it from any ticket-creating sibling. The title 'Choose which Jira board this site's tickets are filed on' reinforces exactly the outcome the tool produces.

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?

Opens with an explicit when-to-use ('when the user wants accessibility findings exported from a site to go to a different Jira project, or is setting one up for the first time') and gives clear when-nots: it refuses until Atlassian is connected and cannot enumerate projects, so the agent must ask the user for the key. It routes around alternatives (browser OAuth flow, reading the key off the board) but stops short of naming sibling tools, which keeps it from a 5.

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

set_monitoring_settingsChange where monitoring email goes, and whether it is sentA
DestructiveIdempotent
Inspect

Use this when the user wants monitoring notifications for a site to go somewhere else, or wants to stop or restart them — routing alerts to a shared inbox, or quietening a site during a rebuild. WRITES to this website's Inclusify configuration, never to the site itself. Three independent settings, all optional: the notification email address, whether regression ALERTS are sent, and whether the periodic DIGEST is sent. Anything you leave out is left exactly as it is, so you can change one without knowing the other two. Pass an empty string for the email to clear the override and fall back to the account's billing address. This REQUIRES CONFIRMATION — call without "confirm" first, show the user the preview, and call again with the token once they agree — because turning alerts off or repointing them is a change that hides its own consequences: the site can regress and nobody hears. The PREVIOUS recipient is emailed a record with a link to undo it, which is deliberate — the person who just stopped receiving these is the one who needs to know. It does not change what is monitored: use add_monitored_pages for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoWhere monitoring notifications should go. An empty string clears the override so they fall back to the account's billing address. Omit to leave it unchanged.
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
alertsEnabledNoWhether regression alerts are sent when the site gets worse. Omit to leave unchanged.
digestEnabledNoWhether the periodic summary digest is sent. Omit to leave unchanged.

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that it is a write to configuration, requires a two-step confirmation, and emails the previous recipient with an undo link. It explains why these behaviors exist (consequences of turning alerts off), which the annotations do not convey.

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

Conciseness5/5

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

Although long, every sentence serves a purpose—purpose, side effects, confirmation, and sibling distinction are all covered without redundancy. The structure fronts the usage guideline, then details, then exclusions.

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 mutation tool with a confirmation requirement and side effects, this description is fully sufficient. It covers the confirmation workflow, the undo notification, and what the tool does not do, leaving no gap for the agent.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds relational meaning: it explains the empty-string email behavior, that omitted params are left unchanged, and the confirm token lifecycle. These enrich the parameter understanding beyond individual schema descriptions.

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

Purpose5/5

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

The description clearly states the resource (monitoring settings) and the actions (change where email goes, stop/restart alerts). It also explicitly differentiates from the sibling add_monitored_pages, leaving no ambiguity about scope.

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?

Opens with 'Use this when the user wants...' and provides concrete use cases (routing to shared inbox, quietening during rebuild). It names the alternative tool for a different task and explains the confirmation flow, making when and when-not to use it explicit.

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

set_slack_channelChoose which Slack channel this site's alerts post toA
DestructiveIdempotent
Inspect

Use this when the user wants accessibility alerts for a site to go to a Slack channel, or to a different one than now. WRITES to this website's Inclusify configuration, never to the site itself. It CANNOT install Slack: that is a browser OAuth flow on the Inclusify panel's Integrations page and no assistant can do it, so this refuses until the workspace is connected. It also cannot list channels — ask the user for the channel, by name or by Slack channel ID. NOTE THAT THIS POSTS A MESSAGE to the channel before saving, on purpose: a binding that looks right and posts nowhere is worse than a refusal, because the customer believes they are covered. If the post fails — wrong channel, private channel the app was never invited to — nothing is saved and the reason is returned. REQUIRES CONFIRMATION, because it both writes to their Slack and redirects where alerts go. Changing the channel keeps the existing notification settings; only a first-time binding takes the defaults. Use set_slack_events to change which alerts fire. Needs the PRO plan, matching the panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesThe Slack channel: an ID like "C01ABCDEF" or a name like "#accessibility". A name is passed to Slack as given — if the app cannot reach it, the call is refused and nothing is saved.
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this as readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description goes far beyond those: it discloses that it WRITES to configuration, deliberately POSTS a test message before saving, explains failure semantics (if post fails, nothing is saved and reason returned), requires confirmation, and notes the PRO plan requirement. It also explains that first-time binding uses defaults while subsequent changes keep settings. No contradictions with annotations.

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

Conciseness4/5

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

The description is long but every sentence carries functional weight: usage trigger, write target, cannot-do limitations, deliberate post behavior, failure handling, confirmation requirement, settings preservation, sibling pointer, and plan requirement. It's front-loaded with the primary purpose and then methodically covers constraints. Slightly verbose but not padded; a more compact version would risk losing nuance.

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

Completeness5/5

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

For a tool with three parameters, no output schema, and no nested objects, this description is exceptionally complete. It covers when to call, prerequisites (Slack connected, PRO plan), interaction flow (ask for channel, confirmation token), failure behavior, side effects, and relationship to a sibling. An agent would know exactly how to invoke this correctly and what to inform the user about.

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 each parameter already has a clear description. The tool description adds meaningful context: channel names are passed exactly as given and will cause refusal if unreachable; the confirm token is a two-step flow with a 10-minute validity and single-use; website must be registered in Inclusify. This goes beyond the bare schema, though most of the parameter meaning is already in the schema.

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

Purpose5/5

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

The description opens with a clear, specific purpose: 'Use this when the user wants accessibility alerts for a site to go to a Slack channel, or to a different one than now.' It distinguishes itself from the sibling set_slack_events by explicitly stating it controls the destination, not the event types. It also clarifies the resource (Inclusify configuration, not the site) and the side effect (writes to config, posts to Slack).

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance ('when the user wants accessibility alerts for a site to go to a Slack channel...') and clear exclusions: it cannot install Slack (must already be connected), cannot list channels (agent must ask the user), and requires confirmation. It also points to the alternative: 'Use set_slack_events to change which alerts fire.' This leaves no ambiguity about selection.

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

set_slack_eventsChoose which accessibility alerts post to SlackA
DestructiveIdempotent
Inspect

Decides WHICH kinds of finding get announced, once a channel is already chosen. Reach for it to quieten somewhere noisy, or to switch on something a team keeps missing. WRITES to this website's Inclusify configuration, never to the site itself, and nothing is posted to Slack by this call. Four independent switches plus a threshold, all optional: anything you leave out stays as it is. The site must already have a Slack channel — use set_slack_channel first, and this refuses until then. No confirmation is needed to turn an alert ON. Turning one OFF, or raising the score-drop threshold, means nobody hears about that class of problem any more, so those REQUIRE CONFIRMATION. Needs the PRO plan, matching the panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
criticalNoPost when a critical-impact issue is found.
scanDoneNoPost when a scan finishes, whatever it found. The noisiest of the four.
scoreDropNoPost when the score falls by more than the threshold below.
regressionNoPost when the site gets worse than it was. On by default.
scoreDropThresholdNoHow many points the score must fall before a scoreDrop alert posts, 1-50. Raising it means fewer alerts.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations, it discloses side effects precisely: writes to Inclusify configuration only, never posts to Slack, no confirmation needed for enabling, confirmation required for disabling or raising the threshold, and the PRO plan requirement. This matches and enriches the destructiveHint and readOnlyHint annotations.

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

Conciseness5/5

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

The description is dense but every sentence contributes: purpose, triggers, side effects, merge behavior, prerequisite, confirmation rules, and plan constraint. It is front-loaded with the key distinction from set_slack_channel and uses focused emphasis 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?

For a 7-parameter mutation tool with no output schema, it covers all essential operational context: preconditions, side effects, merge semantics, confirmation flow, and plan gating. The schema covers parameter details, so an agent has enough to select and invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds valuable semantic clarity by grouping the parameters as 'four independent switches plus a threshold, all optional' and stating 'anything you leave out stays as it is,' plus which changes require confirmation. It doesn't detail each parameter individually, but the schema already covers those details.

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

Purpose5/5

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

The description states a specific action and resource: it decides which kinds of finding get announced to Slack by writing to the site's Inclusify configuration. It also differentiates itself from the sibling set_slack_channel by saying it operates 'once a channel is already chosen.'

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 concrete triggers ('to quieten somewhere noisy, or to switch on something a team keeps missing'), a prerequisite ('use set_slack_channel first, and this refuses until then'), and a plan requirement. This tells an agent when to invoke it and what must be true first.

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

set_statement_publishedPublish or withdraw the accessibility statementA
Destructive
Inspect

Use this when the user wants the accessibility statement they have already written to go LIVE at its public URL, or wants to take it back down. WRITES to this website's Inclusify configuration, never to the site itself — the statement is hosted by Inclusify and the widget links to it. It does NOT write the statement: the shape, the sections and the limitations are filled in through the Inclusify panel, because a statement is a legal representation about the company's own conformance and the wording has to be theirs. If nothing has been written yet, this says so. Publishing is REFUSED, with an itemised list of what is missing, when the statement is incomplete — read that list to the user rather than reporting a failure. Calling this with published:true on a statement that is ALREADY published is not a no-op and is not a mistake — the public page serves the version captured at the last publish, so republishing is how edits made since reach it. BOTH DIRECTIONS REQUIRE CONFIRMATION: publishing makes a legal document about their conformance publicly readable and linked from every page carrying the widget, and withdrawing retracts a document an auditor or regulator may already have cited, after which the page returns 404. Call without "confirm" first, show the user the preview, and call again with the token once they agree. The account owner is emailed either way, with a link to undo it. Needs the STARTER plan, matching the panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
publishedYestrue publishes the statement at its public URL and links it from the widget; false withdraws it, after which the page returns 404.

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses critical behaviors: publishing is refused with an itemized list if incomplete, republishing an already-published statement is not a no-op, withdrawing makes the URL return 404, confirmation is required in both directions, and the account owner is emailed with an undo link. This is far more than annotations alone provide.

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

Conciseness5/5

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

The description is long but front-loaded with purpose and every sentence contributes necessary operational or safety context. For a high-risk legal publishing action, the density is justified and well organized.

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 no output schema, the description fully covers the calling sequence, failure modes, confirmation requirements, side effects, and plan constraint. An agent has everything needed to invoke it correctly and handle the outcome responsibly.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds substantial meaning beyond the schema. It explains the confirm parameter's preview/token flow, the published parameter's exact publish/withdraw and 404 consequences, and the website domain format. This makes the parameters far more actionable.

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: publishing or withdrawing an already-written accessibility statement at its public URL. It clearly distinguishes this from writing statement content and from modifying the website itself, so an agent can tell exactly what the tool is for.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool ('when the user wants the accessibility statement ... to go LIVE ... or wants to take it back down') and what it does not do (does not write the statement content). It also gives a precise two-call confirmation workflow and plan requirement, leaving little ambiguity.

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

set_widget_appearanceChange how the accessibility widget looks and which profiles it offersA
DestructiveIdempotent
Inspect

Use this when the user wants the Inclusify widget on their site to look different — match brand colour, move it off something it covers, change its size or icon — or to change which accessibility PROFILES it offers visitors. WRITES to this website's Inclusify configuration, never to the site's code or theme: it changes what the widget bundle renders. Takes effect within about a minute; the edge cache is purged as part of the change. Every setting is optional and anything you leave out is left exactly as it is, so you can change one without knowing the others. This REQUIRES CONFIRMATION — call without "confirm" first, show the user the preview, then call again with the token once they agree — because the result is visible to that site's real visitors. Removing an accessibility profile is the consequential part: it takes an accommodation away from visitors who may be relying on it, so the preview names each one. Note that "enabledProfiles" is a COMPLETE REPLACEMENT LIST, not an addition — whatever you pass becomes the whole set, so include the ones already on that should stay on. The account owner is emailed a record with a link to undo it. Needs the STARTER plan or above, matching the panel. Shopify-billed stores cannot use this at all — they customise the widget from the Shopify app. To turn the widget off entirely, use set_widget_enabled instead. One setting here needs more than Starter: "hideBranding", which removes the Inclusify wordmark from the widget's footer, needs the ENTERPRISE plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
languageNoWidget interface language. Anything other than English needs a plan with more than one language.
positionNoWhich corner the widget button sits in.
triggerIconNoWhich icon the button shows.
triggerSizeNoButton size in pixels, 40 to 80.
hideBrandingNoWhether to remove the Inclusify wordmark from the bottom of the widget panel. ENTERPRISE ONLY; on any other plan this is refused rather than quietly ignored. It removes our wordmark and its link and nothing else: the widget cannot be rebranded with the customer's own logo or name, the floating button keeps its accessibility glyph (that is a standard icon visitors look for, not branding, and its colour and size are separate settings here), and the link to the customer's own accessibility statement is unaffected.
primaryColorNoSix-digit hex, e.g. "#0066ff". The widget button and accents use it.
showOnMobileNoWhether the widget appears on small screens.
enabledProfilesNoThe accessibility profiles offered to visitors, as a complete replacement list — whatever you pass becomes the whole set, so include the ones already on that should stay on. Removing one takes that accommodation away from visitors using it.
triggerElementIdNoThe id of an element on the CUSTOMER'S OWN site that opens the widget — usually a footer or menu link they have styled themselves, e.g. "footer-accessibility". On every page where that element exists the floating button is not rendered, so their link becomes the only visible way in; on pages where it is missing the floating button comes back, so the widget is never unreachable. An element id, NOT a CSS selector, and without the leading "#". Pass null to remove it and go back to the floating button. Setting this does not put the element on their site — they add the id to their own theme; if you have not confirmed the element exists, say so rather than assuming.
hideForeverEnabledNoWhether visitors get a "don't show again" option. Needs the plan that includes it.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses critical behaviors: it writes to configuration not site code/theme, works via edge-cache purge within a minute, requires confirmation, emails the owner with an undo link, and warns that removing profiles is consequential. It also explains the complete-replacement semantics of enabledProfiles and the Enterprise-only hideBranding restriction. No contradiction with annotations.

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

Conciseness4/5

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

The description is long but densely informative, and the primary use case is front-loaded. It could be tightened, but nearly every sentence adds a necessary constraint or behavioral note, so it earns a solid score rather than being penalized for its length.

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

Completeness5/5

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

For a tool with 12 parameters, no output schema, and a destructive mutation, the description covers all essential invocation context: plans, Shopify exclusion, confirmation workflow, replacement-list semantics, undo email, and the distinction from set_widget_enabled. An agent has enough information to call it correctly and safely.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it frames enabledProfiles as consequential because removing a profile affects relying visitors, states that the preview names each removed profile, and clarifies that omitted settings are left unchanged. This enriches parameter understanding without replacing the schema's own detailed descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: 'Use this when the user wants the Inclusify widget on their site to look different' and 'or to change which accessibility PROFILES it offers visitors.' It clearly distinguishes this from set_widget_enabled and other sibling tools by covering appearance and profile changes specifically.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance, plan requirements, Shopify-billed store exclusion, and names the alternative tool: 'To turn the widget off entirely, use set_widget_enabled instead.' It also details the confirmation flow, so an agent knows the correct call sequence.

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

set_widget_enabledTurn the accessibility widget on or offA
DestructiveIdempotent
Inspect

Use this when the user asks to switch the Inclusify accessibility widget on or off for a site — turning it on after setup, or taking it down while something is investigated. WRITES to this website's Inclusify configuration — never to the site's code or theme: it sets whether the widget bundle served to that site renders the widget or does nothing. Takes effect within about a minute; the edge cache is purged as part of the change. The two directions are treated differently on purpose. Turning it ON is applied immediately and needs no confirmation. Turning it OFF removes a live accessibility feature from real visitors of that site, so it REQUIRES CONFIRMATION — call without "confirm" first, show the user the preview, and only call again with the token once they have agreed — and the account owner is emailed a record of it with a link to undo it. Idempotent: if the widget is already in the state you asked for, nothing is written, nobody is emailed, and the response says so. This never uninstalls anything: on a Shopify store the widget is a theme app embed and turning it off here does not remove the embed.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoLeave this out on the first call to get a preview of exactly what would change, plus a confirmation token. Call again with the same arguments and that token to apply the change. The token lasts 10 minutes and works once.
enabledYestrue renders the widget on the site; false serves a no-op bundle instead, so the widget disappears for that site's visitors. false requires a confirmation token.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: it writes only to configuration, never to site code or theme; it purges the edge cache; turning off is destructive and requires confirmation; it emails the account owner with an undo link; and the operation is idempotent with a no-op response. This far exceeds what the annotations alone convey.

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

Conciseness4/5

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

The description is longer than minimal, but every sentence carries important operational information: scope, effect timing, confirmation requirement, email notification, and idempotency. It is dense rather than padded, though it could be slightly more structured with headers or bullet-like separation for the two directional flows.

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 mutating tool with no output schema, the description covers the critical behavioral context: what is written, what is not touched, how confirmation works, what happens on no-op, and what side effects occur. It does not describe the exact response payload on success, but the two-call flow and preview mechanism are sufficiently explained for correct invocation.

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

Parameters4/5

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

The schema already documents all three parameters with high coverage, so the baseline is 3. The description adds meaningful workflow context around the enabled and confirm parameters, especially the two-call confirmation flow and the idempotent behavior, which goes 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 clearly states the action: switch the Inclusify accessibility widget on or off for a site, and targets the Inclusify configuration rather than code or theme. It also distinguishes itself from the similar sibling set_widget_appearance by focusing solely on enabled/disabled state.

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

Usage Guidelines5/5

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

The description explicitly says when to use the tool: when the user asks to toggle the widget on or off. It also provides precise procedural guidance for the off direction, including calling without confirm first, showing the preview, and calling again with the confirmation token. This is strong usage guidance beyond the schema.

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

simulate_conditionRender the page under a disabling conditionA
Read-only
Inspect

Use this for the audit findings a static scanner is structurally blind to: reflow at 400% zoom, tap targets too small on a phone, Windows High Contrast, and prefers-reduced-motion. It belongs in any thorough accessibility audit or remediation plan, not only when someone names zoom or tap targets — a plan that skipped it has not looked at low-vision, magnifier or mobile users at all. Loads the page with a real user setting in force and reports what breaks. Conditions: "forced-colors" (Windows High Contrast — content that disappears, and icons painted as CSS background images, which the mode drops), "zoom-400" (reflow at 400% zoom, emulated as a 320px viewport — sideways scrolling and content hidden at narrow widths), "reduced-motion" (animations that keep running and media that autoplays), "target-size" (tap targets under 24x24px at a phone viewport). Every check is geometric or API-based rather than pixel-based, and each condition reports the viewport it was measured in — they differ, 320px wide for zoom-400 and 390px for target-size against 1280px for the rest — so a geometry finding can be reproduced. Conditions that could not be applied are reported as skipped rather than passing silently. Each finding's selectors array holds up to 5 examples, with count the true total and selectorsTruncated set when more were cut; full: true returns them all from the stored run. Where count exceeds distinctSelectors the same markup repeats, so the fix is smaller than the count. A run that lands on a bot-protection interstitial rather than the page is reported as void, never as clean — conditions, findings and prose together, so a void run never carries numbers. Where the interstitial title is contradicted by findings measured on the page, the run stands and carries challengeSuspected instead: trust the findings, not the title. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPage to test. Must belong to the website above. Defaults to its homepage when omitted.
fullNoReturn every selector each finding carries instead of the first 5. Read from the result this run already stored — it does NOT load the page again and costs nothing against any allowance. This is the way to resolve selectorsOmitted: re-running the tool to see a truncated list spends a second browser check on work already done.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
conditionsNoWhich conditions to run. Defaults to all four.
includeMeasurementsNoInclude the raw per-condition measurements. Off by default — the findings carry the selectors you need, and the measurements are long.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already carry readOnlyHint=true and destructiveHint=false, and the description aligns with them ('Read-only'). It adds substantial behavior beyond the annotations: conditions that cannot be applied are 'reported as skipped rather than passing silently,' a bot-protection interstitial yields a 'void' run never presented as clean, and the challengeSuspected trust-the-findings logic. These are genuinely useful, non-obvious runtime traits. No contradiction.

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

Conciseness3/5

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

Purpose and usage are front-loaded well, but the description is very long and dense, descending into edge cases that could be trimmed — the count-vs-distinctSelectors markup-repetition aside, the challengeSuspected interstitial logic, and the detailed void-run accounting. Every sentence adds some value, but overall scanability suffers from the length.

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

Completeness5/5

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

With no output schema, the description must carry the return-value burden, and it does so thoroughly: it documents the selectors array (up to 5, count as true total, selectorsTruncated, full:true behavior), viewport reporting for reproducibility, and the void-vs-clean run distinction. For a tool of this complexity (5 params, rich behavior), nothing an agent needs to call or interpret it correctly is missing.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds deep semantics the schema lacks: it explains the conditions enum behavior (viewport widths 320px/390px/1280px, geometric vs pixel-based checks), and crucially that full:true 'reads from the result this run already stored — it does NOT load the page again and costs nothing against any allowance,' resolving selectorsTruncated without spending a second check. This materially changes how an agent would invoke the 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 — simulating a disabling condition on a page — and enumerates all four conditions verbatim (forced-colors, zoom-400, reduced-motion, target-size) with one-line definitions of each. It differentiates itself from static scanners ('structurally blind to'), so an agent can clearly tell what this tool does and how it differs from sibling tools like list_violations or keyboard_walk.

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?

Strong inclusion criteria: 'belongs in any thorough accessibility audit or remediation plan, not only when someone names zoom or tap targets,' with an explicit warning that skipping it means low-vision, magnifier and mobile users were not considered. It gives clear when-to-use guidance but never names a specific alternative tool or states exclusion conditions, and no direct sibling competitor is called out.

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

site_overviewHow one website is doing overallA
Read-only
Inspect

Start here for any accessibility, a11y, WCAG or ADA question about one website whose current state you do not already know — 'how are we doing', 'is this working', 'are we covered', 'should we worry'. It is the cheapest way to learn what has been measured and how much of the site that covers, which every later tool choice depends on. The whole current position for one website in a single call: plan and whether a trial or failed payment is about to change it, the headline accessibility score and when it was measured, how many pages are being checked automatically against how many the plan includes, this month's visitor count against the plan's allowance, whether an accessibility statement is published, whether the widget is switched on, and whether anything is currently stopping scans from running. "coverage" says how much of the site the score describes: monitored pages, the plan's page allowance, and what the last crawl found against what it scanned — a score measured over one page of a site with 82 discovered pages is a fact about those pages, and the unscanned ones are neither passing nor failing. Then use the finding-level tools for detail. Do not use it to list problems: it reports counts, never individual violations. Read-only: costs one read and loads no page, so it is cheap and safe to call first. It reports what is on record: a site that has never been scanned returns no score rather than a good one, and a missing number never means a clean result. Where the score is missing for a reason other than that — a crawl is running and it is withheld until the crawl finishes, or the plan does not include scan data — scoreNote says so, so a null score is never read as "never scanned". It works on every plan, including Free: where the plan does not include scan data the score, the scan and the coverage come back null with scoreNote explaining which kind of missing that is, and the plan, widget state, page allowance and visitor counts are still reported in full.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/destructive annotations, the description adds substantial behavioral context: it costs one read, loads no page, reports only what is on record, explains that an unscanned site returns no score rather than a good one, and clarifies that a null score is never equivalent to 'never scanned' because scoreNote explains the reason. This is rich, non-redundant disclosure.

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 fairly long but front-loads the core purpose and usage guidance, then organizes caveats and plan-specific behavior logically. Some redundancy exists around the Free plan/no-scan-data case, but the length is mostly justified by the need to explain nuanced missing-score semantics and coverage 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?

Given there is no output schema, the description carries the burden of explaining return values and does so thoroughly: plan, score and timestamp, page counts, visitor counts, statement status, widget state, scan blockers, coverage meaning, and null-handling semantics across plans. An agent has enough information to correctly invoke and interpret the tool.

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

Parameters3/5

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

Schema description coverage is 100% and the sole parameter 'website' is already documented as 'The website domain as registered in Inclusify, e.g. "example.com"'. The tool description does not add further meaning about the parameter itself, so the high-coverage baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: it is the starting point for accessibility/a11y/WCAG/ADA questions about one website and gives an overall current-position summary. It clearly differentiates itself from finding-level and detail tools by saying it reports counts and never individual violations.

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

Usage Guidelines5/5

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

It explicitly says 'Start here' for any website whose current state is unknown, calls itself the cheapest way to learn what has been measured, and directs the agent to 'use the finding-level tools for detail' and to avoid using it to list problems. This is strong when-to-use and when-not-to-use guidance.

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

start_crawlStart a full-site crawlAInspect

Use this when the stored scan covers too little of the site to answer from — one page scanned out of eighty discovered, or a site never crawled — and a site-wide audit is what was asked for. WRITES to this website's Inclusify configuration — never to the site itself: queues one full-site accessibility crawl. The scan worker discovers pages from the website's primary domain and audits up to maxPages of them, which is capped at the plan's audited-page allowance; when a requested maxPages is clamped down to that cap, the response says so. Asynchronous by design: this returns the job id immediately — keep working, then collect the outcome with crawl_summary (progress, coverage, averages, worst pages) and read the findings with list_violations. Safe to retry: if a crawl is already PENDING or CRAWLING it does not start a second one, it returns the running job and its progress. Removes and edits nothing — not pages, not monitoring, not settings. Costs no page allowance; at most 3 crawls per website can be started per day (UTC).

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".
maxPagesNoAudit at most this many of the discovered pages. Omit for the plan's full audited-page allowance; anything above the allowance is clamped to it and the response says so.

TDQS

A4.7/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: async job-return semantics, conditional retry safety (no duplicate crawl when PENDING/CRAWLING), maxPages clamping behavior, zero page-allowance cost, and the 3-crawls-per-day UTC limit. The 'writes to config, never to the site' and 'removes and edits nothing' statements align with destructiveHint=false and readOnlyHint=false with no contradiction.

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

Conciseness5/5

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

Though lengthy, every sentence carries distinct decision-relevant information: trigger condition, write-target boundary, clamping behavior, async pattern, retry safety, non-destructiveness, and rate limit. The most important usage guidance is front-loaded before implementation details.

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

Completeness5/5

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

Comprehensive for a complex async tool with no output schema: it explains what the call returns (job id immediately), how to obtain outcomes (crawl_summary, list_violations), resource costs, retry behavior, and rate limits. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/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. The description mostly restates what the schema already documents about website domain format and maxPages clamping; it adds little new semantic meaning beyond reinforcing that the cap is the plan's audited-page allowance.

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: 'queues one full-site accessibility crawl' writing to the Inclusify configuration, never the site itself. The concrete trigger examples ('one page scanned out of eighty discovered, or a site never crawled') make it distinguishable from single-page scan tools and from result-reading siblings like crawl_summary.

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?

Opens with an explicit when-to-use condition: stored scan coverage is insufficient AND a site-wide audit was requested. It also routes follow-up behavior to named siblings (crawl_summary for progress/coverage, list_violations for findings), giving the agent a complete workflow path.

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

validate_fixCheck a fix before deploying itA
Read-only
Inspect

Before deploying ANY accessibility fix, validate it here first — every time, on every rule, not only when you are unsure. It is free, instant, loads no page, and it catches the fix that merely hides the problem from the next scanner. Send the markup you are about to deploy and get a verdict on whether it actually fixes the rule it targets. Four answers: "resolved", "not_resolved" (with what still fails), "masked", or "not_decidable_from_markup". Call it after editing and before deploying, on the rule id and htmlSnippet from list_violations — it reads markup only, so iterating costs nothing against the page allowance. Check the finding's "markupValidatable" first: every list_violations finding carries it, and false means this tool has no markup check for that rule and will refuse it, so the call is wasted. Easiest way to call it: pass "finding" — the findingId from a list_violations entry — and "rule", "before" and the measured colours are filled in from the stored finding for you; anything you pass explicitly wins over them, per field. "masked" is the answer worth having: deleting the element, adding aria-hidden, hiding it with display:none, dropping the visible text or turning a into a all make a scanner go quiet while leaving the barrier in place, so a later re-scan would wrongly agree with you. Never treat it as resolved. Pass "before" whenever you have it — deletion, lost text and downgraded controls are only detectable by comparison. For a contrast rule, pass "colors" — the foreground and background you intend to ship, plus fontSize and fontWeight for large text — and the ratio is computed against the WCAG threshold and answered outright, with the nearest passing foreground when it still fails. Colours declared inline on the markup are read automatically. Without a colour pair contrast stays undecidable, because a fragment has no computed colour. It cannot judge anything else that depends on rendering: focus indicators, forced-colors, reduced motion, tap-target size, reflow at zoom, keyboard traps and reading order all come back "not_decidable_from_markup", naming the tool that can answer them. It also refuses rules it has no check for rather than guessing, so a "resolved" means something. Each markup argument is capped at 100KB; going over is reported, not silently trimmed, and a truncated fix is never called resolved. Read-only — it does not touch the site, the scan history or the findings.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleNoThe rule the fix targets — the "ruleId" from a list_violations finding, e.g. "image-alt", "button-name", "label", "aria-hidden-focus", "tabindex". Required unless you pass "finding", which carries it: the same markup passes one rule and fails another, so there is no useful answer without it.
afterYesThe markup you intend to deploy, with your change applied.
beforeNoThe original markup, normally the finding's htmlSnippet verbatim — or supplied by "finding". Optional but worth having: without it only absolute masking signals (aria-hidden, hidden, display:none) can be detected, and deletion, removed text and downgraded controls cannot.
colorsNoFor contrast rules only: the colour pair the fix proposes. With both colours the verdict is closed-form arithmetic rather than a refusal. Pass only the colour you are changing when you also pass "finding" — the rest comes from the measurement.
findingNoThe "findingId" of a list_violations entry, e.g. "clx9f2k4b0001". Pass it and the rule, the original markup and — on a contrast rule — the measured foreground, background, font size and weight are read from the stored finding, so nothing has to be transcribed. Only findings on this website resolve. Anything you also pass explicitly wins over the stored value, field by field.
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already say readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'Read-only — it does not touch the site, the scan history or the findings.' It adds substantial behavior beyond annotations: no page load, 100KB cap, refusal rather than guessing, the meaning of 'masked', and the four possible verdicts. There is no contradiction with the annotations.

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

Conciseness4/5

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

The description is front-loaded with the primary use case and is densely informative, with almost every sentence earning its place. It is quite long and would benefit from bulleted or sectioned structure, but the complexity of the tool justifies most of the length and there is little true redundancy.

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

Completeness5/5

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

There is no output schema, so the description must and does explain return values: the four verdicts, what 'masked' means, and that failures name the remaining issue. It also covers limitations, prerequisites, size caps, and the rule-parameter requirement, making it complete for an agent to select and invoke correctly.

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

Parameters5/5

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

Even though schema coverage is 100%, the description adds critical cross-parameter semantics: 'finding' can carry rule/before/colors, explicitly passed values override stored ones, 'before' enables deletion/lost-text detection, and 'colors' enables WCAG contrast arithmetic. These nuances are absent from the schema and materially change how the tool is invoked.

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

Purpose5/5

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

The description clearly names the verb (validate), resource (an accessibility fix's markup), and intended moment (before deploying, after editing). It distinguishes this tool from the sibling list/set tools by focusing on verdicts like 'resolved', 'masked', and 'not_decidable_from_markup', so an agent can confidently pick it.

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 guidance ('every time, on every rule, not only when you are unsure') and when-not-to-use guidance: check 'markupValidatable' first, and rendering-dependent checks are refused. It also connects to list_violations findings and tells the agent how to invoke with a findingId, making the call path unambiguous.

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

widget_statusWhether the accessibility widget is actually on the siteA
Read-only
Inspect

Use this when the question is about the widget itself rather than about accessibility findings: 'is the widget working', 'is it installed', 'why can't I see it', 'did the install work', 'how do I add it', 'is it live for visitors'. Answers with two separate facts that are commonly mistaken for one — whether widget serving is enabled on the Inclusify account (a setting that defaults to ON for every account before anything is installed, so on its own it proves nothing), and whether anything has EVER been reported from the site by the embed itself, which is the only evidence that it is really there. Never report the enabled flag as installation. When nothing has ever reported in, it returns the exact script tag to paste — or, on a Shopify store, says that the widget is a theme app embed which can only be switched on from the Shopify admin, and that no assistant can do that step. What it does NOT do: it does not fetch the customer's site or check the page for the script, so it cannot see an embed that has been installed but not yet visited by anyone. It does not switch the widget on or off, and it reports no accessibility findings — site_overview and the finding tools own those. Works on every plan including Free. Read-only: three indexed reads, no page load.

ParametersJSON Schema
NameRequiredDescriptionDefault
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, openWorldHint, destructiveHint), the description discloses it does not fetch the site or check the page, returns the script tag when nothing has reported, and is read-only with 'three indexed reads, no page load.' The enabled flag caveat and lack of switching capability are also transparent, fully covering behavioral nuances.

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 every sentence delivers value: usage, distinctions, behavioral caveats, and read-only note. It is front-loaded with the purpose and usage, and the length is justified by the tool's nuance. Could be slightly tightened but remains efficient.

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

Completeness5/5

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

Despite no output schema, the description explains exactly what facts it returns, when it returns a script tag vs. app embed advice, and what it doesn't do. Given one parameter and no output schema, it covers all necessary context for an agent to use it correctly.

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

Parameters3/5

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

Schema coverage is 100% (the param description is already in the schema). The tool description does not add extra semantics for the 'website' parameter beyond what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a clear verb+resource: it answers questions about the widget itself, distinguishing from accessibility findings. It provides concrete example queries and names the two separate facts it returns, making its purpose unambiguous and distinct from sibling tools like site_overview and the finding tools.

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

Usage Guidelines5/5

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

Explicitly states when to use it (questions about the widget) and when not (accessibility findings, site checks). It also mentions alternatives: site_overview and the finding tools own those concerns, and clarifies it cannot see an embed not yet visited. This leaves no doubt about proper selection.

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

widget_usageRecorded use of the accessibility widget, per feature and page viewA
Read-only
Inspect

The Inclusify accessibility widget — the overlay Inclusify serves onto the customer's own site — and what visitors do with it. Read this before writing ANY remediation plan for a site where site_overview reports "widgetEnabled": true, and for 'is anyone using this', 'what are we getting for the money', 'which features matter to our visitors', or before a renewal or cancellation conversation. The overlay gives visitors contrast, text-size, spacing, cursor, reading and navigation controls, so an active one is a layer between the site's source and what a visitor experiences, and a plan written from findings alone describes a page nobody sees: some of what you are about to fix is already being worked around at runtime, and a fix at source can duplicate or fight a feature that is switched on. A review wrote a 19-item plan for a store with the overlay live and never mentioned it once. What it returns: per feature, the number of page views in which a visitor switched it on, on how many separate days, the total across all features, and this month's visitor count for context. The unit is page views, not clicks: reporting is deduped per feature per page view, so a slider adjusted repeatedly on one page counts once. Read every count as a floor. Do not use it to judge whether the site is accessible — it measures visitor behaviour, not the site's condition; site_overview and the finding tools do that. Read-only: costs one read and loads no page. Reads zero carefully: a zero total is reported together with which of four causes applies (the widget is switched off in Inclusify; nothing has EVER reported in, meaning the widget is almost certainly not installed on the site at all; visitors were counted before but not in this window; or visitors arrived and feature use has not been reported). A zero of the last kind means only that: no report has arrived. It has two causes a zero cannot tell apart — nobody switched a feature on, or the site is still serving a widget build from before feature reporting existed (bundles are edge-cached for hours and a storefront can hold an older copy for much longer). Never present an empty result as evidence that the widget is unwanted or unused.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days back to count (default 30, cap 365).
websiteYesThe website domain as registered in Inclusify, e.g. "example.com".

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnly, openWorld, non-destructive), the description adds substantial behavioral detail: it is read-only and costs one read, loads no page, dedupes per feature per page view, and reports zero results with four possible causes. It also cautions that a zero total cannot distinguish between no feature use and an outdated widget build, and warns never to present an empty result as evidence of non-use. No contradiction with annotations.

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

Conciseness4/5

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

The description is long and detailed, but every sentence contributes meaningful context—ranging from use-case justification to return semantics and gotchas. It is front-loaded with the tool's purpose and the critical reading-before-use context. While it could be trimmed, the depth is warranted given the high risk of misinterpretation and misuse.

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

Completeness5/5

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

The description is exceptionally complete for this tool's complexity. It explains what the tool returns (per-feature counts, deduping, totals, visitor count), how to interpret zeros (with four causes and their nuances), and explicitly addresses common pitfalls and misuse cases. With no output schema, the description fully compensates and more.

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?

Both parameters (days, website) are fully described in the input schema with clear meanings and ranges. The description does not add parameter-specific detail beyond the schema, though it does clarify output interpretation (unit is page views, deduping, zero handling) which indirectly affects understanding of the 'days' parameter results. Baseline 3 is appropriate since schema coverage is 100%.

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

Purpose5/5

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

The description clearly states the tool reports accessibility widget usage per feature and page view, with explicit details on what metrics are returned. It distinguishes itself from sibling tools like site_overview by noting it measures visitor behaviour, not site accessibility, and even names the alternative for accessibility judgments.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use context: 'before writing ANY remediation plan for a site where site_overview reports widgetEnabled: true', and lists specific query intents like 'is anyone using this' and 'before a renewal or cancellation conversation'. It also states when not to use it ('Do not use it to judge whether the site is accessible') and points to alternatives (site_overview and finding tools).

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Changedset_widget_appearance1 field changed
      • addedInput schema / properties / hideBranding
        Added value: +{
        +  "description": "Whether to remove the Inclusify wordmark from the bottom of the widget panel. ENTERPRISE ONLY; on any other plan this is refused rather than quietly ignored. It removes our wordmark and its link and nothing else: the widget cannot be rebranded with the customer's own logo or name, the floating button keeps its accessibility glyph (that is a standard icon visitors look for, not branding, and its colour and size are separate settings here), and the link to the customer's own accessibility statement is unaffected.",
        +  "type": "boolean"
        +}
  2. 1 tool update
    • Changedset_widget_appearance1 field changed
      • changedInput schema / properties / language / enum
        Previous value: -[
        -  "en",
        -  "es",
        -  "fr",
        -  "de",
        -  "it",
        -  "pt",
        -  "nl",
        -  "ja",
        -  "zh"
        -]New value: +[
        +  "en",
        +  "af",
        +  "am",
        +  "ar",
        +  "hy",
        +  "az",
        +  "eu",
        +  "bn",
        +  "bg",
        +  "my",
        +  "ca",
        +  "zh",
        +  "zh-TW",
        +  "hr",
        +  "cs",
        +  "da",
        +  "nl",
        +  "en-GB",
        +  "et",
        +  "tl",
        +  "fi",
        +  "fr",
        +  "fr-CA",
        +  "ka",
        +  "de",
        +  "el",
        +  "gu",
        +  "he",
        +  "hi",
        +  "hu",
        +  "id",
        +  "ga",
        +  "it",
        +  "ja",
        +  "kn",
        +  "km",
        +  "ko",
        +  "ku",
        +  "lo",
        +  "lv",
        +  "lt",
        +  "ms",
        +  "ml",
        +  "mr",
        +  "ne",
        +  "no",
        +  "fa",
        +  "pl",
        +  "pt",
        +  "pt-BR",
        +  "pa",
        +  "ro",
        +  "ru",
        +  "sr",
        +  "si",
        +  "sk",
        +  "sl",
        +  "es",
        +  "es-MX",
        +  "sw",
        +  "sv",
        +  "ta",
        +  "te",
        +  "th",
        +  "tr",
        +  "uk",
        +  "ur",
        +  "vi",
        +  "cy",
        +  "xh",
        +  "zu"
        +]
  3. 1 tool update
    • Changedset_widget_appearance1 field changed
      • addedInput schema / properties / triggerElementId
        Added value: +{
        +  "description": "The id of an element on the CUSTOMER'S OWN site that opens the widget — usually a footer or menu link they have styled themselves, e.g. \"footer-accessibility\". On every page where that element exists the floating button is not rendered, so their link becomes the only visible way in; on pages where it is missing the floating button comes back, so the widget is never unreachable. An element id, NOT a CSS selector, and without the leading \"#\". Pass null to remove it and go back to the floating button. Setting this does not put the element on their site — they add the id to their own theme; if you have not confirmed the element exists, say so rather than assuming.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  4. 36 tool updates
    • First observedadd_domain
    • First observedadd_monitored_pages
    • First observedadd_website
    • First observedbilling_link
    • First observedcheck_page_alt_text
    • First observedci_gate
    • First observedcompliance_status
    • First observedcrawl_summary
    • First observedget_job
    • First observedkeyboard_walk
    • First observedlist_alt_findings
    • First observedlist_content_findings
    • First observedlist_monitored_pages
    • First observedlist_violations
    • First observedlist_websites
    • First observednext_steps
    • First observedorg_findings
    • First observedorg_rollup
    • First observedpage_history
    • First observedplan_options
    • First observedrename_website
    • First observedscore_history
    • First observedscreen_reader_transcript
    • First observedset_jira_project
    • First observedset_monitoring_settings
    • First observedset_slack_channel
    • First observedset_slack_events
    • First observedset_statement_published
    • First observedset_widget_appearance
    • First observedset_widget_enabled
    • First observedsimulate_condition
    • First observedsite_overview
    • First observedstart_crawl
    • First observedvalidate_fix
    • First observedwidget_status
    • First observedwidget_usage

Frequently Asked Questions

Discussions

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

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation4/5

The descriptions do exceptional cross-referencing work, explicitly separating near-neighbor pairs (add_website vs add_domain, list_alt_findings vs check_page_alt_text, plan_options vs billing_link, widget_status vs widget_usage). A few clusters remain that an agent could confuse without reading carefully, notably site_overview vs compliance_status (both report statement existence and scan-record state) and crawl_summary vs list_monitored_pages vs site_overview (all touch coverage numbers). Overall, distinct purposes are clearly delineated despite the large surface.

Naming Consistency4/5

All names are lowercase snake_case with strong family patterns: list_* (5 tools), add_* (3), set_* (7), plus org_* and *_history pairs. The main inconsistency is the mix of verb-led names (list_violations, set_slack_channel, start_crawl) with noun-led read names (site_overview, compliance_status, widget_usage, next_steps), but the noun-led names follow a coherent 'what it returns' vocabulary (status, summary, history, overview, rollup). Minor deviations rather than chaos.

Tool Count3/5

36 tools is heavy and sits above the 25-tool threshold where agent navigation starts to degrade, but the server covers a genuinely broad domain: website lifecycle, monitoring, four finding types, four live-audit tools, seven config setters, org rollups, billing, and CI. Most tools earn their place and none are duplicates, but several could plausibly be merged (set_slack_channel/set_slack_events/set_monitoring_settings into one notifications tool; list_violations/list_alt_findings/list_content_findings with a filter). The count is on the edge of unwieldy for an agent's tool-selection step.

Completeness3/5

The read/audit/analysis side is rich and well-covered: findings, history, live checks, org rollups, coverage, and validation all have tools. However, the write side is one-directional: add_monitored_pages is explicitly add-only, and there is no remove_website, remove_domain, or remove_monitored_pages, so teardown and 'stop monitoring this page' requests hit dead ends that the descriptions acknowledge belong to the panel. Statement content writing and widget installation are also panel/browser-only by design, which is documented but still leaves those operations outside the agent's reach.