Pops up an animated reaction GIF in a small borderless always-on-top window, then auto-closes. Provides sarcastic reaction GIFs for Claude Code interactions.
Three tools with basic descriptions and no input schemas visible. show_reaction has a category parameter with enum-like description but no formal schema constraint. list_categories and diagnose have no parameters. Descriptions are present (60-100 chars) but lack actionable detail on when to use each tool or what downstream actions they enable. No output schemas documented. Error handling in show_reaction returns structured dicts but lacks recovery guidance for LLMs. Tools are single-purpose (good) but composition is limited, no chaining IDs or references between tools.
Report environment diagnostics — useful when the user reports issues.
Return the list of supported reaction categories and pool sizes.
Pop up a sarcastic reaction GIF for a few seconds, bottom-right. Args: category: One of: confused, skeptical, disappointed, shocked, deadpan, how_dare, monkey_puppet, thinking, no, eyeroll, really, cringe, laughing, judgmental. The popup is borderless, always-on-top, auto-closes after ~4s. The MCP response only carries a status dict; the gif itself lives in the spawned subprocess's window.
No formal input schemas visible in source. show_reaction declares category as string with enum description in docstring, but no JSON Schema with type/enum constraint. list_categories and diagnose have empty input dicts with no schema documentation.
Output schemas not documented. show_reaction returns dict with ok/error/category/gif_id fields; list_categories returns categories/counts; diagnose returns dict with tk_available/platform/etc. LLMs cannot plan downstream calls without knowing response structure.
Descriptions lack actionable context. show_reaction says 'Pop up a sarcastic reaction GIF' but does not explain when an LLM should call it vs other tools, or what the popup side effect means for the user experience. No guidance on error recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. show_reaction returns {'ok': False, 'error': '...'} but does not tell the LLM what to do next (e.g., 'Call list_categories() to see valid options' or 'Rebuild the GIF bank').
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools are read-only and safe to retry, but this is not declared in the tool definition, forcing LLMs to infer safety.