Android accessibility service exposing device control via intents, HTTP REST, and MCP endpoints. Enables remote automation of Android devices through screen interaction, app launching, and system navigation.
Mimic provides 14 well-structured tools with consistent naming (verb_noun pattern: mimic_status, mimic_dump, mimic_find, mimic_tap, etc.). All tools have descriptions (avg ~80 chars, within 10-1024 range). Input schemas are present and properly typed with JSON Schema. However, descriptions are terse and lack LLM-optimized guidance on WHEN to use each tool or dependencies between them. Parameter descriptions are minimal (avg ~40 chars vs baseline 72). No output schemas documented. Error handling is basic, no recovery guidance or categorization. Tool composition is sound (each does one thing), but descriptions don't explain multi-step workflows (e.g., dump → find → click sequence).
click a node found by text/id/class/desc, or tap coordinates (by=coords)
dump the active window node tree; filter on-device to keep output small
find nodes matching a query; returns a flat match list by default
perform a global navigation action
launch an app by package name or component
long press at screen coordinates
list installed packages on the device
Descriptions lack LLM-optimized guidance. Most are 50-80 chars and state WHAT the tool does but not WHEN to use it or dependencies. E.g., mimic_tap says 'tap at screen coordinates' but doesn't explain it requires prior mimic_dump or mimic_find to locate targets.
No output schemas documented. Tools return structured data (node trees, match lists, screenshots) but LLMs cannot plan downstream calls without knowing response field names and types. E.g., mimic_find returns matches but schema doesn't specify fields like 'id', 'bounds', 'text'.
Parameter descriptions are minimal (avg ~40 chars vs baseline 72). Enums like 'filter' (interactive|text|visible|all) lack explanation of what each means or when to combine them. 'format' enum (tree|flat|compact) not explained.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
capture a screenshot of the current screen
scroll the active window in a direction; with a query, keep scrolling until a node matching it is visible on screen (returns the visible matches), stopping at the end of the content or the timeout
set the text of an editable node located by text/id/class/desc; with no by/query, type into the currently focused field
report whether the service is enabled and which surfaces are on
swipe from (x,y) to (x2,y2)
tap at screen coordinates
poll the active window until a node matches the query, or the timeout. on success returns the matches (like find); on timeout, a clear failure.
No error handling guidance. Tools return success/failure but don't categorize errors (retryable vs user-fixable vs fatal) or provide recovery hints. E.g., if mimic_find returns no matches, should the LLM retry with different query, call mimic_dump first, or scroll?
Destructive tools (mimic_tap, mimic_click, mimic_set_text, mimic_launch) lack confirmation or dry-run support. Agents can accidentally trigger unintended actions. No idempotentHint or destructiveHint annotations present.