Skip to main content
Glama

List alt-text findings

list_alt_findings
Read-only

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.

Input Schema

TableJSON 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.

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.