Cross-agent Material Symbols skill and MCP server
Material Icons server has well-structured tool definitions with consistent naming (verb_noun pattern), comprehensive parameter schemas using Zod validation, and clear descriptions. However, output schemas are entirely undocumented, responses are wrapped in generic text/error format with no structured field definitions. Error handling is minimal (generic fail() wrapper). Tool descriptions average ~120 chars (within baseline 194), but lack dependency hints and recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification. Parameter descriptions are present but terse. Missing: output schema documentation, error classification, confirmation patterns for destructive ops, and LLM-optimized recovery guidance.
Find duplicate and likely unused local Android/Flutter icon assets.
Delete a computed local icon path. Requires explicit confirmation.
Detect Android Compose, Android Views, Flutter, and web evidence in a project.
OPTIONAL: generate Kotlin, Dart, or TypeScript icon constants. Enable this only in projects that want an AppIcons abstraction.
Download an official icon into Android, Flutter, or SVG project assets. Never overwrites files.
Dry-run or apply standard Compose Icons.* to local painterResource replacements. Import drawables first; complex expressions are reported, never guessed.
Output schemas completely undocumented. All tools return generic text/error wrapper with no structured field definitions. LLMs cannot parse results or chain downstream calls.
Error handling is minimal. All errors wrapped in generic fail() returning only error.message. No error classification (retryable vs fatal), no recovery guidance, no invalid-value echoing for self-correction.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Create a local HTML preview sheet for a shortlist of icons.
Search official Material Symbols by meaning and style.
OPTIONAL: write a project-local catalog of official icon names for offline or repeat lookup.
Explicitly re-download and replace an already imported local icon.
Report likely missing accessibility labels for icon usage.
No tool annotations despite clear risk stratification. delete_icon and update_icon are destructive but lack destructiveHint. import_icon, audit_icons, detect_project_environment lack readOnlyHint. Agents cannot infer safety properties.
Destructive operations (delete_icon, update_icon) require confirm=true but lack explicit dry-run or confirmation-request pattern. No pre-execution preview or undo mechanism.
Parameter descriptions are terse and lack dependency hints. E.g., import_icon does not explain that registerFlutterAsset only applies to flutter target. No guidance on when to call detect_project_environment first.