A companion debugging and inspection tool for iOS applications. Provides network traffic analysis, WebSocket monitoring, local storage inspection, logging, QA checklist tracking, and remote command execution via a companion server architecture.
Noober iOS exposes 27 tools via a custom STDIO-based companion protocol. While tool names follow a consistent command* prefix convention and descriptions are present, the implementation exhibits critical gaps in schema completeness, parameter documentation, and error handling guidance. Most tools lack detailed input parameter descriptions beyond names. Output schemas are not documented anywhere in the visible source. The server is designed for app instrumentation and testing (QA checklists, HTTP mocking, UI automation) rather than general-purpose agent integration. None of the 54 agentic patterns are explicitly implemented. Security-sensitive operations (destructive store clears, keychain manipulation) lack permission gates or dry-run confirmations.
Add a new intercept rule to pause and review HTTP requests matching a URL pattern
Add a new mock rule to intercept and respond to HTTP requests matching a URL pattern
Clear data from a specific store: http, websocket, logs, rules.rewrite, rules.mock, rules.intercept, userDefaults, keychain, qa, or all
Find UI elements by accessibility label or text, returning their position and bounds
Open a deep link URL in the application
Retrieve all HTTP cookies
Mark a QA checklist item as failed with optional notes and associated request IDs
Mark a QA checklist item as passed
No output schemas documented for any tool. LLMs cannot plan downstream tool calls or extract required fields. Tools like commandRequestSnapshot, commandRequestScreenshot return opaque data with no field specification.
Destructive operations (commandClearStore, commandRemoveMockRule, commandRemoveInterceptRule, commandRemoveUserDefault, commandRemoveKeychain, commandRemoveCookie) lack dry-run, confirmation, or permission gates. No recovery guidance if agent calls these incorrectly.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Remove an HTTP cookie
Remove an intercept rule by ID
Remove a Keychain entry
Remove a mock rule by ID
Remove a UserDefaults key
Replay a previously recorded HTTP request with the same or modified parameters
Request a screenshot of the current screen
Request a snapshot of the current application state (stores, rules, environment)
Reset a QA checklist item to pending status
Extract the HTML representation of the current screen hierarchy
Extract all visible text content from the current screen
Set an HTTP cookie
Set a Keychain entry
Set a UserDefaults key-value pair
Simulate a swipe gesture with direction and optional velocity
Switch the active environment configuration by environment ID
Simulate a tap gesture at specified screen coordinates
Enable or disable a rewrite, mock, or intercept rule by ID
Type text into the currently focused text field
Parameter descriptions are minimal and lack format constraints. Examples: commandClearStore 'store' parameter only says 'Store to clear: http, websocket, ...' without stating whether values are case-sensitive, if they're enums, or what happens if an invalid store name is passed. No validation guidance.
No error handling guidance. If commandReplayRequest fails (network error, 404, timeout), no documentation on error format, recovery steps, or whether to retry. LLMs have no recovery path.
Several tools accept optional parameters (e.g., commandAddMockRule 'responseHeaders' and 'name'; commandAddInterceptRule 'name') but do not document defaults, fallback behavior, or whether omitting them is safe.
commandSetKeychain and commandSetUserDefault accept arbitrary string values with no validation description. Payload size limits, encoding requirements, JSON structure expectations are undocumented. LLMs may pass malformed data.
No security permission gates or audit trail. Sensitive operations like commandClearStore (wipe all logs and rules), commandSetKeychain (modify secure storage), commandRemoveKeychain (delete credentials) execute with no permission checks. No logging of who called what.
Tool names use a consistent 'command*' prefix, but this is not an action verb (get_, create_, update_, delete_, etc.). While naming is internally consistent, it deviates from the 549-tool baseline where 90% of A+ tools start with clear action verbs. This makes automated parsing and intent inference harder for some LLM frameworks.