Runs a stdio MCP server that searches Windows Fluent Icons from WinUI Gallery metadata.
Single tool with solid naming (search_fluent_icons) and comprehensive parameter descriptions. Input schema is well-defined with types, defaults, and constraints (maxResults clamped 1-200). Output is JSON-serialized but schema not formally documented in code. Tool description is adequate (97 chars) but could better explain when/why to use it. No error handling guidance visible, tool silently returns empty results on invalid input rather than guiding recovery. Follows verb_noun pattern well; parameter naming is clear (name, tags, code, maxResults). Missing: output schema documentation, error recovery patterns, and examples of expected response structure.
Search Windows Fluent Icons by name, tags, or code. Returns matching icons with their code, name, and tags.
Output schema not documented. Tool returns JSON-serialized FluentIconsSearchResponse but LLMs cannot see the response structure (TotalMatches, ReturnedCount, CacheFilePath, Icons array). Without documented output schema, agents cannot reliably extract icon codes or plan downstream operations.
No error handling or recovery guidance. Tool silently returns empty results if code normalization fails or tags don't match. LLMs receive no signal that the query was invalid, they may retry identically or assume no icons exist. Should return actionable error messages like 'Invalid icon code format. Expected E700, U+E700, or 0xE700.'
Tool description lacks context for selection. '97 chars is adequate but generic. Does not explain: What is a Fluent Icon? When should I call this vs. other icon tools? What does the response contain? LLMs need explicit guidance on when to invoke this tool.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Parameter 'code' accepts multiple formats (E700, U+E700, 0xE700) but description does not clarify that all are equivalent. LLMs may not realize they can pass any format. Should state: 'Accepts E700, U+E700, 0xE700, or \uE700, all normalized internally.'
maxResults default (50) and clamp (1-200) not explained in description. LLMs may not understand why results are truncated or how to request more. Should state: 'Default 50, max 200. Use pagination by calling again with different filters if needed.'