An MCP server for Android logcat streaming, filtering, and analysis. Monitors Android device logs in real-time, groups logs by session, and provides tools for error investigation and log retention management.
PawSift has 9 well-named tools with clear action verbs (get_, set_, query_, search_, clear_). All tools have descriptions (avg ~150 chars, within baseline 34-392). Input schemas are present and typed. However, several critical gaps reduce the score: (1) No output schemas documented, LLMs cannot predict return structure for chaining; (2) Parameter descriptions lack format/constraint details (e.g., 'limit' has no min/max bounds, 'level' enum not enforced in description); (3) Error handling is minimal, no recovery guidance or actionable error messages visible; (4) No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels (DESTRUCTIVE, WRITE, READ_ONLY). The tool set is well-composed (single responsibility, good naming), but lacks the polish needed for production LLM integration.
Permanently deletes all logs from the database AND clears the Android device logcat buffer. Use this to start fresh or fix startup lag.
Returns a Count-First Markdown list of unique ERROR and FATAL logs with their latest [ID]. Each item follows the format: '- [ID] **Count x** [Tag] Message'. Use the [ID] for surgical context retrieval.
Retrieves lines surrounding a specific log ID. Essential for seeing what led up to a crash or event.
Returns the current status of the PawSift dashboard, including the target package, session ID, watcher activity, and connected device info.
Returns a Count-First Markdown list of all unique log tags in the current session. Each item follows the format: '- **Count** Tag'.
Retrieves filtered logs using Hierarchical Mapping (groups identical messages under sub-headers to save tokens). AVOID using this for crash investigation if you already have an error [ID]—use get_log_context() instead.
No output schemas documented. LLMs cannot predict return structure (fields, types, nesting) for downstream tool chaining or data extraction. This forces agents to guess or make exploratory calls.
Parameter constraints not enforced in descriptions. 'limit' has no min/max bounds (hard cap at 50 mentioned but not as constraint); 'level' enum values (V, D, I, W, E, F) not listed as enum in schema; 'lines' default 15 but no bounds stated. LLMs may pass invalid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels declared (DESTRUCTIVE for clear_logs, WRITE for set_target_package/set_retention_policy). Agents cannot infer safety/retry semantics.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
Performs a global search using Hierarchical Mapping (groups identical messages under sub-headers to save tokens). Use fold=false to see individual timestamps and IDs for repetitive events.
Configure log retention limits: maximum total logs to keep, maximum sessions to retain, and cleanup interval in seconds.
Configures the watcher to monitor a specific Android application. When this package starts, the server automatically increments the session ID to isolate new logs.
Error handling absent from visible code. No recovery guidance (e.g., 'If device not found, check adb connection'), no error classification (retryable vs fatal), no actionable error messages. Agents cannot self-correct on failure.
Destructive tool (pawsift_clear_logs) lacks confirmation/dry-run pattern. No mention of undo capability or warning. Agents could accidentally wipe logs without safeguard.