Skip to main content
Glama

audit_widget_accessibility

Read-onlyIdempotent

Scans Widget Blueprints for authored accessibility issues like low contrast, small text, missing screen-reader labels, and undersized touch targets, reporting each finding for certification.

Instructions

Sweep Widget Blueprints for the accessibility problems that are measurable from what was AUTHORED: text/background contrast against the WCAG 2.x threshold, text smaller than a legible minimum, interactive widgets with no accessible label for a screen reader, and buttons below a minimum touch/focus size. On console this is a CERTIFICATION requirement, not a nicety. READ THE LIMITS BEFORE TRUSTING A PASS: contrast is computed against the FIRST ancestor holding a solid colour -- a UBorder's brush, a UButton's WidgetStyle.Normal, or a flat UImage -- so a background painted by a texture, a material, a video or a sibling drawn underneath is INVISIBLE to this, and those cases come back as background_source:"none" rather than quietly passing, because "could not judge" and "fine" are different answers. A brush only counts when it has no ResourceObject, its TintColor is UseColor_Specified, and its DrawAs actually FILLS the middle: Box, Image or RoundedBox. DrawAs=Border is excluded on purpose (it tiles the sides and leaves the centre empty, which is exactly where the text sits). Colours coming from a CommonUI style asset or a property binding are equally invisible: only authored values are read. What IS exact is the maths -- relative luminance 0.2126R+0.7152G+0.0722B over LINEAR values (which is what an FLinearColor already is) and ratio (Llight+0.05)/(Ldark+0.05), straight from WCAG.

Returns: { folder_path, widget_blueprints_scanned, widgets_examined, issue_count, issues_by_kind: {low_contrast, contrast_unknown, small_text, missing_accessible_text, small_touch_target}, entries: [{ widget_bp_path, widget_name, widget_class, kind, detail, contrast_ratio?, required_ratio?, text_color?, background_color?, background_source?, font_size?, width?, height? }], truncated }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
recursiveNoRecurse into subfolders (default true).
folder_pathNoContent folder to sweep (default /Game).
max_resultsNoMax Widget Blueprints to load (default 500).
min_font_sizeNoSmallest legible font size; anything under it is reported (default 12.0).
min_touch_sizeNoMinimum width/height in pixels for an interactive widget's authored slot size (default 44.0, the common touch-target guideline). Only checkable when the slot actually carries a size -- an auto-sized slot reports size_known:false instead of a false pass.
large_text_sizeNoFont size from which text counts as "large" for the contrast rule (default 18.0, per WCAG).
min_contrast_ratioNoContrast floor for normal-size text (default 4.5, the WCAG AA rule). Text at or above large_text_size only needs 3.0, applied automatically.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds substantial behavioral detail beyond them: exactly which background sources are visible (first solid-colour ancestor only), that texture/material/video/CommonUI-style backgrounds return background_source:"none" rather than passing, that DrawAs=Border is deliberately excluded, and that auto-sized slots report size_known:false. This is precisely the kind of 'what gets missed' disclosure that prevents a false pass.

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

Conciseness4/5

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

Front-loaded with the purpose in the first sentence, followed by the limits and the return shape. It is long, and the middle passage on brush tint/DrawAs is granular, but nearly every sentence carries a constraint that changes how an agent should read the output, so little is 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?

There is no output schema, so the description carries the return-value burden itself, and it does so fully — the folder_path/widgets_examined/issue_count/issues_by_kind/entries/truncated shape is spelled out with per-field detail. Combined with the fully documented schema and safe-read annotations, an agent has everything needed to call and interpret this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters with defaults, units, and WCAG rationale; baseline 3 applies. The description reinforces the semantic intent of the thresholds (WCAG contrast, legible minimum, touch/focus size) but adds no syntax or format beyond the schema's own text.

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

Purpose4/5

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

Names a specific verb and resource (sweep Widget Blueprints) and enumerates the exact problem classes checked — contrast, small text, missing accessible label, small touch target — so the agent knows precisely what it inspects. It does not, however, distinguish itself from the closely related siblings audit_widget_style and audit_widget_text, whose scope could plausibly overlap.

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

Usage Guidelines3/5

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

It supplies meaningful context ("on console this is a CERTIFICATION requirement, not a nicety") and an explicit instruction about how to use results ("READ THE LIMITS BEFORE TRUSTING A PASS"), which is genuine usage guidance. But it never states when to prefer this over audit_widget_style/audit_widget_text or any exclusion conditions; usage is implied rather than routed.

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

Deploy Server

Other Tools