Skip to main content
Glama

ExecBro

MCP Registry

Give your AI assistant eyes and hands into your running React Native app. Like Chrome DevTools — but for AI agents.

Build, debug, and verify features end-to-end — without leaving the chat.

ExecBro is the runtime bridge between your AI coding assistant and your running React Native app — exposing MCP tools to read logs and network, inspect component state, capture screenshots, tap the UI, and run JS. Zero config, no SDK or code changes required to start — and installing the optional SDK is recommended for the most robust log and network capture.

Get started

  1. Setup ExecBro as an MCP server for your agent of choice

  2. Setup UI automation helpers

  3. Install the SDK in your React Native app — optional, but recommended for the most robust log, network, and state experience

  4. Authorize and link to the web dashboard — optional, for usage stats and session history

  5. Start your React Native app (npm start / expo start)

  6. Ask your AI assistant in plain language — e.g. "Connect to the simulator and investigate what caused the error on the screen"

Related MCP server: React Native DevTools MCP

See your usage — execbro.com

Log in at execbro.com to see your ExecBro activity rendered back to you: which tools you use most, tool error rates, and your session history — so you can spot flaky tools, track usage over time, and understand how your agent drives the app across sessions. It's built from the same anonymous telemetry described in Telemetry & Privacy, tied to your installation ID.

Linking is also how ExecBro Pro attaches to your installation, if you ever subscribe.

Features

Runtime Interaction

  • Console Log Capture - Capture console.log, warn, error, info, debug with filtering and search. Note: on a cold start (first app launch), logs emitted before the MCP server connects are missed — subsequent reloads capture everything. Install the optional SDK to buffer logs from the very first line of app startup

  • Network Request Tracking - Monitor HTTP requests/responses with headers, timing, and body content. Like logs, early network requests on cold start may be missed before the connection is established. Install the optional SDK for full capture from app startup including request/response bodies

  • Response Mocking - Replace or tamper with HTTP responses so error paths are reached through the app's real code — the request builder, the error branch, the retry — instead of being faked by writing state directly. Simulate offline, delay responses, fail only the first attempt to test a retry, or re-issue a captured request with one field changed. Rules survive reload, and altered traffic is always tagged. See the mocking tutorial

  • JavaScript Execution - Run code directly in your app (REPL-style) and inspect results

  • Global State Debugging - Discover and inspect Apollo Client, Redux stores, Expo Router, and custom globals. Wire stores and other app internals straight into the agent with the optional SDK for direct, reliable state access

  • Bundle Error Detection - Get Metro bundler errors and compilation issues with file locations

  • Tap-to-Source - Point at any element with RN's Element Inspector and get back the absolute source file and line where it is rendered, resolved from the React fiber's _debugStack via Metro symbolication. Works on React 19, where _debugSource no longer exists. Selections are buffered in the background, so taps you make during a manual inspector session are captured without asking the agent first

Device Control

  • iOS Simulator - Screenshots, app management, URL handling, boot/terminate (via simctl)

  • Android Devices - Screenshots, app install/launch, package management (via ADB)

  • Unified Tap - Single tap tool with automatic fallback chain: fiber tree → accessibility → OCR → coordinates. Auto-detects platform, accepts coordinates from screenshots and layout tools unchanged. Returns post-tap screenshot and verifies visual change by default

  • Unified Swipe - Single swipe tool that auto-routes to iOS or Android based on the connected device. Takes coordinates in the same screen space as the layout tools and screenshots — no conversion — and returns a verification.meaningful signal so agents detect end-of-list, non-scrollable surfaces, and missed coordinates — and on a screen with no React Native connection it says it could not inspect rather than guessing. Essential for scrolling virtualized lists (FlatList/SectionList) where off-screen items aren't in the fiber tree

  • Real Multi-Touch Pinch (Android emulator only — iOS in progress) - A pinch tool that sends two genuine kernel touch contacts through the Android emulator's multi-touch bridge, so it zooms maps, galleries, WebViews, and native views alike — it works below the app, not through React Native. Returns the same verification.meaningful signal as swipe, and refuses on unsupported targets instead of faking a result

  • UI Automation - Swipe, long press (tap with duration, resolving the target by testID/text/component), key events, and text input on both platforms. input_text targets a field itself and verifies the write by reading it back; on Bridgeless/Fabric apps replace:true overwrites pre-filled values by updating React state through onChangeText, so controlled components (Formik, react-hook-form, useState) stay consistent. native:true types into whatever the OS reports as focused, with no RN connection needed, and dismiss_keyboard operates the same way

  • Accessibility Inspection - Query UI hierarchy to find elements by text, label, or resource ID

  • OCR Text Extraction - Extract visible text with tap-ready coordinates via Google Cloud Vision (works on any screen content)

Credential Safety

  • Secrets never enter the transcript - Every tool's output passes one redaction chokepoint, so a token is replaced by a handle ([secret:auth_api.acme.io]) whether it appears in a network header, a Redux store, a log line or a URL. Credential headers are matched by pattern rather than a fixed list, so vendor-namespaced ones (x-shopify-access-token, x-goog-api-key, x-hasura-admin-secret) are covered too, while x-request-id and x-idempotency-key are deliberately left alone. There is no per-call escape: EXECBRO_REDACT=off is set by a human and needs a restart

  • Use a credential without reading it - list_secrets names the handles; http_request({auth:{secret:"api.acme.io"}}) substitutes the value host-side and issues the request from your machine — as Authorization: Bearer by default, or in a key header or another scheme, so a credential never has to be pasted in to cover an unsupported shape, and vault_capture reads a token out of the app straight into the vault when no captured request revealed one. Each credential is bound to the origin it was observed on and refused elsewhere; the vault is memory-only

  • Server- vs client-side, isolated - http_request runs from the host with none of the app's TLS trust, proxy, cookie jar or mock rules; app_request runs inside the app with all of them. Comparing the two is how you tell a backend bug from a client one — and a 401 from the host where the app succeeds is itself the answer that the backend enforces attestation

  • App data is treated as data - The server tells every connecting agent that logs, payloads, component trees and eval results are shaped by whatever the app talked to, and are never to be followed as instructions

Multi-Device Debugging

  • Connect All Devices - scan_metro automatically discovers and connects to all Bridgeless targets on each Metro port

  • Device Targeting - Every tool accepts an optional device parameter for targeting specific devices by name (case-insensitive substring match)

  • Per-Device Buffers - Logs and network requests are captured separately per device for clean debugging

  • Cross-Platform Comparison - Debug iOS and Android side-by-side, comparing logs, network traffic, and component trees

Under the Hood

  • Auto-Discovery - Scans Metro on ports 8081, 8082, 19000-19002 automatically

  • Multi-Device Support - Connects to all Bridgeless targets simultaneously, with per-device log and network buffers

  • Auto-Reconnection - Exponential backoff (up to 8 attempts) when connection drops

  • Efficient Buffering - Circular buffers: 500 logs, 200 network requests, 100 inspector selections

  • Platform Support - Expo SDK 54+ (Bridgeless) and React Native 0.70+ (Hermes)

Setup

Add ExecBro to Claude Code in one command — no installation, npx fetches the latest version on demand:

claude mcp add execbro --scope project -- npx -y execbro@latest

Then fully restart the client (quit and relaunch) so it picks up the new server.

Project scope writes a .mcp.json you can commit, so the whole team picks ExecBro up in this repo and nowhere else. Swap project for user to register it globally instead — convenient if you work in React Native all day, but it starts ExecBro in every session you open, including repos with no Metro server to connect to.

Using a different client or need platform setup? The full setup guide covers Claude Desktop, Codex CLI, Cursor, VS Code Copilot, Windsurf, Zed, and Gemini CLI, plus Android and iOS simulator UI automation requirements.

ExecBro works with zero app changes, but installing the companion execbro-sdk package is the single biggest upgrade to debugging quality. It lets you wire up the important parts of your app — your state stores and your network layer — directly into the agent's reach, so the AI inspects real Redux/TanStack Query state and full request/response bodies instead of guessing from the outside.

Without SDK

With SDK

State stores (Redux, TanStack Query, …)

Manual via execute_in_app

Wired up — direct references

Request/response bodies

Not available

Full (including GraphQL)

Startup network requests (auth, config)

Missed

Captured from first fetch

Console logs from startup

May miss early logs

Captured from first log

Works on Bridgeless (Expo SDK 52+)

Partial

Full

It's one npm install plus a single init() call in your app's entry file. See the SDK guide for install, initialization, and every config option.

Requirements

  • Node.js 20.9+

  • React Native app running with Metro bundler

  • Recommended: execbro-sdk in your app — wires stores and the network layer into the agent for dramatically better debugging (optional; ExecBro works without it)

  • iOS UI automation: AXe CLI (brew install cameroncooke/axe/axe, default) or Facebook IDB (brew install idb-companion, opt in via IOS_DRIVER=idb) — required for tap, swipe, text input, accessibility on iOS Simulator

  • Optional for offline OCR fallback: Python 3.6+ (only needed when cloud OCR is unavailable, see OCR guide)

Claude Code Skills

Pre-built skills for common debugging workflows — session setup, log inspection, network debugging, and more. See the skills guide for the full list and installation instructions.

Available Tools

See the full tool reference for all tools with descriptions. Key tools:

Tool

Description

scan_metro

Start here — scan for Metro servers and auto-connect

get_logs / search_logs

Capture and search console logs with filtering and summaries

get_network_requests

Monitor HTTP requests with method/status filtering

get_screen_state

Orientation snapshot — active route, overlays, and every element with a tap-ready (x, y)

get_screen_layout

Screen map of visible components with positions, sizes, and text content

tap

Unified tap — auto-detects platform, tries fiber → accessibility → OCR → coordinates

pinch

Real two-finger pinch-to-zoom — Android emulator only (iOS in progress)

input_text

Type text — targets and focuses a field itself, or native:true for whatever's focused. replace:true clears first (Fabric)

dismiss_keyboard

Blur the focused input and close the on-screen keyboard

execute_in_app

Run JS expressions in the app runtime (REPL-style)

ios_screenshot / android_screenshot

Take device screenshots

Usage

  1. Start your React Native app:

    npm start
    # or
    expo start
  2. Just describe what you want in plain language — the agent picks the right tools. You don't need to know tool names or ask for a specific one. For example:

    Connect to the simulator and investigate what caused the error on the screen
    Check the network logs and investigate why this error is happening
    Why is the current screen empty? Take a look and figure it out
    Tap the "Sign in" button and tell me what happens
    The list won't scroll — scroll it down and check what's going on
    Why does this button look wrong — what component renders it and where?

    The agent connects to Metro, reads logs and network, inspects the screen, and drives the UI as needed to answer.

Detailed Guides

Guide

Description

Setup

Per-client MCP config (Claude, Codex, Cursor, VS Code, …), Android & iOS setup

SDK Setup

Install & init() the in-app SDK to wire stores + network layer into the agent

Console Logging

get_logs parameters, filtering, summary mode, token optimization

Network Tracking

SDK setup for full capture, filtering, request details, statistics

Network Mocking

Tutorial: force a 500, drop a field, test a retry, go offline, replay a request

App Inspection

Debug globals (Apollo, Redux, Expo Router), execute_in_app, limitations

Layout & Component Inspection

get_screen_layout, component tree, inspect_at_point, find_components

Device Interaction

Unified tap, platform-specific gestures, text input, key events

OCR Text Extraction

Cloud Vision OCR, offline fallback, language config, workflows

Claude Code Skills

Pre-built skills for session setup, debugging, and automation

Full Tool Reference

Complete list of all 63 tools with descriptions

How It Works

  1. Fetches device list from Metro's /json endpoint

  2. Connects to the main JS runtime via CDP (Chrome DevTools Protocol) WebSocket

  3. Enables Runtime.enable to receive Runtime.consoleAPICalled events

  4. Network capture via two paths:

    • With SDK: Reads from the SDK's in-app buffer via Runtime.evaluate — captures all requests from startup with full headers and bodies, including cold-start events that CDP would miss

    • Without SDK: Enables CDP Network.enable (on supported targets) or injects a JS fetch interceptor as fallback. On cold start, events emitted before the CDP connection is established are lost; subsequent reloads capture everything

  5. Response mocking runs in that same injected interceptor: rules are matched before the request reaches the wire, and are re-pushed to every new JS context so they survive a reload

  6. Stores logs and network requests in circular buffers for retrieval

Connection Management

  • One server per session — each agent session (each terminal or IDE window) runs its own ExecBro MCP server instance.

  • Connects on request, not on startup — the server never auto-connects. It only attaches to your running React Native app when you ask it to (e.g. scan_metro), so it stays out of the way until you actually need a device.

  • One driver per device — if two or more sessions in the same project point at the same Metro/device, they'll compete to control it, like a car with two steering wheels. Keep interaction to a single session per device.

  • Want parallel sessions? Give each its own device + port — run separate work in a git worktree with its own Metro instance on a different port, and connect a second device (simulator/emulator) to it. For example, keep main on the default 8081 and start the worktree's Metro on 8082 (npx react-native start --port 8082, or npx expo start --port 8082), then launch that worktree's app pointed at 8082. Each agent session then scan_metros and drives its own device, so the two never fight over the connection.

Troubleshooting

No devices found

  • Make sure the app is running on a simulator/device

  • Check that Metro bundler is running (npm start)

Logs not appearing

  • Ensure the app is actively running (not just Metro)

  • Try clear_logs then trigger some actions in the app

  • Check get_apps to verify connection status

  • On cold start (first launch): The CDP connection is established after the app's early initialization code has already run, so startup logs and network requests are missed. Once connected, use reload_app — the subsequent reload captures everything from the beginning because the connection is already in place. To capture startup events on every launch, install the optional SDK

Telemetry & Privacy

No source code, file paths, or app content is ever sent. Your app and your repo stay on your machine.

ExecBro sends two small signals:

  • Product analytics (optional) — tool names, success/failure, and durations. This is what powers your usage dashboard and tells me which tools are flaky and worth fixing. Turn it off any time with EXECBRO_TELEMETRY=false in your MCP server config.

  • Usage count — a running tally of how many tool calls you've made, so the free tier knows where you stand against its monthly allowance. It's a number, not content, and it's the one signal that keeps running when analytics is off.

See the Telemetry & Data Collection guide for the full field-by-field breakdown, and PRIVACY.md for the complete privacy policy.

Supported React Native Versions

Version

Architecture

Engine

Status

Expo SDK 54+

Bridgeless (New Arch)

Hermes

✓ Fully supported

RN 0.76+

Bridgeless (New Arch)

Hermes

✓ Fully supported

RN 0.73 - 0.75

Bridge (Old Arch)

Hermes

✓ Fully supported (best network capture via CDP)

RN 0.70 - 0.72

Bridge (Old Arch)

Hermes / JSC

✓ Supported

RN < 0.70

Bridge

JSC

Not tested

Pricing

ExecBro is free — every tool, full power, no feature gates, no account needed to start. The free tier covers 600 tool calls a month, which is evaluation plus everyday debugging; most people never reach it. If you drive your agent hard all day, ExecBro Pro ($8.99/mo) lifts the cap and includes every hosted feature as it ships. See execbro.com/pricing.

NOTE

Grandfather notice: the 600-call monthly cap starts applying 2026-08-01 for new installs. If you already had ExecBro installed before then, you get a free month on top — your cap doesn't start until 2026-08-31. You'll also see this as an in-app notice. No action needed unless you want to link your account and upgrade to Pro ahead of time. Questions? zigor535@gmail.com.

Feedback & Feature Requests

Please run this at the end of your session to help me make the tools better. ExecBro is built for AI agents, so the most valuable feedback comes from the agent itself — paste this prompt to your agent:

Write a report about your experience with the ExecBro tools — where you were struggling and what could be improved. Save it as a Markdown file for me, then submit it using the send_feedback tool (type "feedback") so it becomes a GitHub issue.

It takes 30 seconds: your agent runs send_feedback, hands you a pre-filled GitHub issue URL (environment info already attached), and you click submit — no GitHub setup, no copy-pasting. Real friction logs from real sessions are what shape the roadmap and get fixed first, so please send one. 🙏 And if you just have a quick idea or question, drop into GitHub Discussions to share feedback, request features, and vote on what gets built next.

Package names & staying up to date

Ships as the npm package execbro. The package was previously published as react-native-ai-devtools and before that as react-native-ai-debugger — both legacy names keep receiving identical builds via mirror-publish, so existing installations and MCP configs keep working unchanged. New installs should use execbro.

IMPORTANT

Already using ExecBro? npx caches packages indefinitely, so you may be stuck on an old version without realizing it. Update your MCP config to use npx -y execbro@latest (see Setup) so every session pulls the latest release with new tools and bug fixes. New installs after this change auto-update automatically.

License

MIT

Available Tools

64 tools
android_describe_allA

Get the full UI accessibility tree from the Android device using uiautomator. Returns a hierarchical view of all UI elements with their text, content-description, resource-id, bounds, and tap coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior (returns a hierarchical view with specific element attributes) and method (using uiautomator), but does not cover potential side effects, permissions needed, rate limits, or error conditions. It adds value beyond the schema but is incomplete for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence and efficiently details the return format in the second. Every sentence adds essential information without redundancy, making it appropriately sized and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (retrieving a full UI tree), no annotations, and no output schema, the description is partially complete. It explains the return content but lacks details on output structure, potential errors, or operational constraints. It is adequate but has clear gaps that could hinder effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'deviceId' fully documented in the schema. The description does not add any parameter-specific information beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating with extra details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get the full UI accessibility tree') and resource ('from the Android device using uiautomator'), distinguishing it from siblings like android_describe_point (point-specific) and android_find_element (targeted search). It precisely defines what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining a comprehensive hierarchical view of all UI elements, which differentiates it from more targeted siblings (e.g., android_describe_point for a specific point). However, it lacks explicit guidance on when not to use it or direct alternatives, such as preferring android_describe_point for focused queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_describe_pointA

Get UI element info at specific coordinates on an Android device. Returns the element's text, content-description, resource-id, bounds, and state flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate in pixels
yYesY coordinate in pixels
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return data (text, content-description, etc.), which is useful behavioral context. However, it doesn't mention potential errors (e.g., if coordinates are out of bounds), performance implications, or whether this requires specific device states (e.g., unlocked screen). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and followed by return value details. Every word earns its place—no redundancy or fluff. It efficiently communicates essential information without waste, making it easy for an AI agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no annotations, no output schema), the description is partially complete. It covers the purpose and return values well, but lacks details on error handling, performance, or device prerequisites. Without annotations or an output schema, more behavioral context would improve completeness, but it's adequate for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for x, y, and deviceId parameters in the input schema. The description adds no additional parameter semantics beyond what the schema provides, such as coordinate system details (e.g., origin point) or deviceId usage examples. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to heavily.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get UI element info at specific coordinates'), the resource ('on an Android device'), and distinguishes it from siblings like android_describe_all (which describes all elements) and android_find_element (which finds elements by properties rather than coordinates). The verb 'Get' combined with the coordinate-based approach makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'at specific coordinates on an Android device,' which suggests this tool is for inspecting UI elements at precise screen locations. However, it doesn't explicitly state when to use this versus alternatives like android_describe_all (for all elements) or android_find_element (for searching by properties), nor does it mention prerequisites like device connectivity. The guidance is clear but lacks explicit alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_find_elementA

Find a UI element on Android screen by text, content description, or resource ID. Returns element details including tap coordinates. Use this to check if an element exists without tapping it. Workflow: 1) wait_for_element, 2) find_element, 3) tap with returned coordinates. Prefer this over screenshots for button taps.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoExact text match for the element
textContainsNoPartial text match (case-insensitive)
contentDescNoExact content-description match
contentDescContainsNoPartial content-description match (case-insensitive)
resourceIdNoResource ID match (e.g., 'com.app:id/button' or just 'button')
indexNoIf multiple elements match, select the nth one (0-indexed, default: 0)
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it's a read-only operation that returns element details without performing actions, specifies it's for checking existence, and outlines a typical workflow. However, it doesn't mention potential errors (e.g., if no element is found) or performance considerations, leaving minor gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by usage guidelines and workflow, with every sentence adding value. It avoids redundancy and is efficiently structured in four concise sentences, making it easy to parse without unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (7 parameters, no output schema, no annotations), the description is largely complete. It covers purpose, usage, and behavior well, but lacks details on error handling or output format specifics, which could be helpful for an agent. The absence of an output schema means the description doesn't fully compensate for missing return value documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds no additional parameter semantics beyond what the schema provides, such as explaining interactions between parameters (e.g., precedence rules) or usage examples. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Find a UI element on Android screen') and resources involved ('by text, content description, or resource ID'), distinguishing it from siblings like android_tap_element or android_wait_for_element. It explicitly mentions the return value ('Returns element details including tap coordinates'), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Use this to check if an element exists without tapping it') and when not to ('Prefer this over screenshots for button taps'). It also outlines a workflow ('Workflow: 1) wait_for_element, 2) find_element, 3) tap with returned coordinates') and distinguishes it from alternatives like screenshots, offering comprehensive usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_get_screen_sizeA

Get the screen size (resolution) of an Android device/emulator

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states a read operation ('Get') but doesn't disclose behavioral traits like whether it requires an active device connection, if it works on emulators vs. physical devices, potential errors, or return format. The description is minimal and misses key operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose with zero redundant words. It's appropriately sized for a simple tool and front-loads the core functionality without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain what the return value looks like (e.g., dimensions in pixels), error conditions, or dependencies like device connectivity. For a tool with potential operational nuances, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'deviceId' well-documented in the schema. The description adds no parameter-specific information beyond implying the tool targets Android devices/emulators, which is already clear from the tool name. With 0 parameters needing semantic clarification, a baseline of 4 is appropriate as the schema suffices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get') and resource ('screen size (resolution) of an Android device/emulator'), distinguishing it from siblings like android_screenshot (captures image) or get_screen_layout (likely returns layout structure). It precisely defines what the tool retrieves without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when screen resolution information is needed, but provides no explicit guidance on when to use this tool versus alternatives (e.g., android_describe_all might include screen size, or get_screen_layout could be related). It lacks any 'when not to use' statements or prerequisite context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_input_textA

Type text on an Android device/emulator. The text will be input at the current focus point (tap an input field first).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that text is input at the current focus point and implies a prerequisite (tapping first), which adds useful context. But it doesn't cover potential errors (e.g., no focus), rate limits, or device connectivity needs, leaving behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the first states the core action and target, the second adds crucial usage note. It's front-loaded and appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is minimal but covers the essential action and a key prerequisite. However, it lacks details on error handling, performance, or return values, making it adequate but with clear gaps for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters well. The description doesn't add meaning beyond the schema (e.g., it doesn't clarify text encoding or deviceId selection nuances), meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Type text') and target ('on an Android device/emulator'), specifying it inputs text at the current focus point. It distinguishes from siblings like android_tap (which taps) or android_key_event (which sends key presses), making the purpose specific and well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context on when to use: 'tap an input field first' to set focus. However, it doesn't explicitly mention when NOT to use it or name alternatives like android_key_event for non-text input, so it lacks full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_install_appC

Install an APK on an Android device/emulator

ParametersJSON Schema
NameRequiredDescriptionDefault
apkPathYesPath to the APK file to install
deviceIdNoOptional device ID. Uses first available device if not specified.
replaceNoReplace existing app if already installed (default: true)
grantPermissionsNoGrant all runtime permissions on install (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Install an APK' which implies a write/mutation operation, but doesn't mention critical behaviors like whether it requires specific permissions, if it's idempotent, potential side effects on the device, or error handling. The description is too minimal for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It's perfectly front-loaded and gets straight to the point without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens on success/failure, what the return value might be, or important behavioral aspects. The 100% schema coverage helps with parameters, but overall context is lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, so all parameters are documented in the schema itself. The description doesn't add any additional parameter context beyond what's already in the schema descriptions, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Install') and resource ('an APK on an Android device/emulator'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'ios_install_app' or 'get_apps', which would be needed for a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'ios_install_app' for iOS or 'get_apps' for listing installed apps. It also doesn't mention prerequisites such as having an Android device connected or the APK file available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_key_eventB

Send a key event to an Android device/emulator. Common keys: HOME, BACK, CALL, END_CALL, VOLUME_UP, VOLUME_DOWN, POWER, CAMERA, CLEAR, TAB, ENTER, DEL, MENU, SEARCH, MEDIA_PLAY_PAUSE, MEDIA_STOP, MEDIA_NEXT, MEDIA_PREVIOUS, MOVE_HOME, MOVE_END, APP_SWITCH, ESCAPE

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name (HOME, BACK, CALL, END_CALL, VOLUME_UP, VOLUME_DOWN, POWER, CAMERA, CLEAR, TAB, ENTER, DEL, MENU, SEARCH, MEDIA_PLAY_PAUSE, MEDIA_STOP, MEDIA_NEXT, MEDIA_PREVIOUS, MOVE_HOME, MOVE_END, APP_SWITCH, ESCAPE) or numeric keycode
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Send a key event' implies a write/mutation operation, it doesn't clarify if this requires specific permissions, whether it's reversible, potential side effects (e.g., app navigation), or error handling (e.g., invalid deviceId). The description lacks critical behavioral context for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a helpful list of common keys. Every sentence earns its place—no redundant or vague language. It efficiently conveys essential information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation operation with no annotations and no output schema), the description is minimally adequate. It covers the basic purpose and parameters but lacks details on behavioral traits, error handling, or return values. For a tool that interacts with devices, more context on prerequisites and outcomes would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds value by listing common key names (e.g., HOME, BACK) beyond the schema's generic 'Key name' description, providing practical examples. However, it doesn't explain the semantics of numeric keycodes or deviceId selection in depth, keeping it at a 4 rather than 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send a key event') and target ('to an Android device/emulator'), providing a specific verb+resource combination. It distinguishes itself from sibling tools like android_input_text (for text input) and android_tap (for touch interactions) by focusing on key events. However, it doesn't explicitly differentiate from ios_key_event (its iOS counterpart), which is a minor gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when key events are preferred over other input methods (like android_input_text for text or android_tap for touch), nor does it specify prerequisites (e.g., device must be connected). The list of common keys is helpful but doesn't constitute usage guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_launch_appB

Launch an app on an Android device/emulator by package name

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNameYesPackage name of the app (e.g., com.example.myapp)
activityNameNoOptional activity name to launch (e.g., .MainActivity). If not provided, launches the main activity.
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention permissions required, error conditions (e.g., if app isn't installed), side effects, or what happens on success/failure. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste, front-loading the key action and method. It's appropriately sized for the tool's complexity, earning its place clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a mutation tool. It lacks behavioral context, error handling, and output details, making it insufficient for an agent to understand the full implications of invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond implying packageName is required, which is already in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Launch') and target ('an app on an Android device/emulator'), specifying the method ('by package name'). It distinguishes from siblings like android_install_app (installs) or android_tap (interacts), making the purpose specific and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing to start an app, but provides no explicit guidance on when to use this tool versus alternatives like android_install_app (for installation) or ios_launch_app (for iOS). It lacks context on prerequisites or exclusions, leaving usage somewhat ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_list_packagesC

List installed packages on an Android device/emulator

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdNoOptional device ID. Uses first available device if not specified.
filterNoOptional filter to search packages by name (case-insensitive)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't mention permissions needed, whether it requires an active device connection, what the output format looks like, or any rate limits. This leaves significant gaps for a tool that interacts with external devices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that interacts with Android devices/emulators with no annotations and no output schema, the description is insufficient. It doesn't explain what the output contains (package names, versions, etc.), doesn't mention connection requirements, and provides minimal behavioral context despite the complexity of device interaction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no additional parameter information beyond what's in the schema, resulting in the baseline score of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('installed packages on an Android device/emulator'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_apps' which might serve a similar function, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_apps' or 'android_describe_all'. It lacks any mention of prerequisites, context, or exclusions, leaving the agent to infer usage based on the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_long_pressC

Long press at specific coordinates on an Android device/emulator screen

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate in pixels
yYesY coordinate in pixels
durationMsNoPress duration in milliseconds (default: 1000)
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the action but fails to describe key behavioral traits: it doesn't specify if this is a read-only or mutating operation (likely mutating as it interacts with the device), what happens if coordinates are invalid, whether it requires specific permissions, or any error conditions. The description is minimal and lacks operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that efficiently conveys the core action without unnecessary words. It's front-loaded with the key information ('Long press at specific coordinates'), making it easy to parse quickly. Every part of the sentence serves a purpose, achieving optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a device interaction tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns (e.g., success/failure status, error messages), behavioral nuances like coordinate system origin or screen bounds, or how it integrates with sibling tools. For a mutating operation in a testing/automation context, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters (x, y, durationMs, deviceId) with clear descriptions. The description adds no additional semantic meaning beyond implying coordinate-based input, which is already covered by the schema. This meets the baseline score of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('long press') and target ('at specific coordinates on an Android device/emulator screen'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'android_tap' or 'android_swipe' beyond the 'long press' action, which is why it doesn't reach a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'android_tap' (for quick taps) or 'android_swipe' (for gestures). It lacks context about typical use cases (e.g., opening context menus, dragging elements) or prerequisites (e.g., requiring an active device connection), leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_screenshotB

Take a screenshot from an Android device/emulator. Returns the image data that can be displayed.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathNoOptional path to save the screenshot. If not provided, saves to temp directory.
deviceIdNoOptional device ID (from list_android_devices). Uses first available device if not specified.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool returns image data, but doesn't describe important behavioral aspects: whether this requires device permissions, if it interrupts device operation, potential side effects, error conditions, or how the image data is formatted. The description is minimal and misses key operational context needed for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two clear sentences. The first sentence states the core functionality, and the second explains the return value. No wasted words, though it could be slightly more structured by separating functional description from behavioral context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a device interaction tool with no annotations and no output schema, the description is incomplete. It doesn't address important contextual aspects: permission requirements, error handling, side effects on the device, image format details, or how the returned data should be handled. For a tool that interacts with physical/virtual devices, more operational context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (outputPath and deviceId). The description doesn't add any parameter semantics beyond what's in the schema - it doesn't explain parameter interactions, default behaviors beyond what's in schema descriptions, or usage examples. Baseline score of 3 is appropriate when schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Take a screenshot') and target resource ('from an Android device/emulator'), distinguishing it from sibling tools like ios_screenshot (for iOS) and ocr_screenshot (which performs OCR). It explicitly mentions the return value ('Returns the image data that can be displayed'), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing a screenshot from Android devices, but doesn't explicitly state when to use this tool versus alternatives like ios_screenshot or ocr_screenshot. It mentions the deviceId parameter can come from list_android_devices, providing some contextual guidance, but lacks explicit when/when-not instructions or comparison with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_swipeC

Swipe from one point to another on an Android device/emulator screen

ParametersJSON Schema
NameRequiredDescriptionDefault
startXYesStarting X coordinate in pixels
startYYesStarting Y coordinate in pixels
endXYesEnding X coordinate in pixels
endYYesEnding Y coordinate in pixels
durationMsNoSwipe duration in milliseconds (default: 300)
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the swipe action but fails to describe side effects (e.g., potential UI changes), error conditions (e.g., invalid coordinates), or performance characteristics (e.g., execution time). This leaves significant gaps for a tool that performs screen interaction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, with zero wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what happens after the swipe (e.g., whether it waits for UI updates), error handling, or coordination requirements with other tools like ensure_connection. Given the complexity of device interaction, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters clearly documented in the schema itself. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting without compensation needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('swipe') and target ('Android device/emulator screen'), specifying it moves from one point to another. It distinguishes itself from sibling tools like android_tap or android_long_press by focusing on swiping motion, though it doesn't explicitly differentiate from ios_swipe which serves a similar function on iOS.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like android_tap or android_long_press, nor does it mention prerequisites such as needing an active device connection. It simply states what the tool does without contextual usage information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_tapA

Tap at specific coordinates on an Android device/emulator screen. WORKFLOW: Use ocr_screenshot first to get tap coordinates, then use this tool with the returned tapX/tapY values.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate in pixels
yYesY coordinate in pixels
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explains the workflow dependency on ocr_screenshot but doesn't disclose behavioral traits like whether this requires device connection, what happens if coordinates are invalid, or if there are rate limits. The description adds some context but leaves important behavioral aspects unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The first sentence states the purpose, the second provides crucial workflow guidance. Every word earns its place, and the information is front-loaded appropriately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no annotations and no output schema, the description provides good context about the workflow and relationship to ocr_screenshot. However, it doesn't explain what happens after the tap (success/failure indicators) or error conditions, which would be helpful given the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (x, y, deviceId). The description mentions using 'tapX/tapY values' from ocr_screenshot, which reinforces the coordinate parameters but doesn't add significant meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Tap at specific coordinates') and resource ('Android device/emulator screen'). It distinguishes from sibling tools like android_tap_element (which likely taps UI elements rather than coordinates) and android_long_press (different gesture).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit workflow guidance: 'Use ocr_screenshot first to get tap coordinates, then use this tool with the returned tapX/tapY values.' This clearly indicates when to use this tool versus alternatives like android_tap_element or android_find_element.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_tap_elementA

Tap an element by its text, content-description, or resource-id using uiautomator. TIP: Consider using ocr_screenshot first - it returns ready-to-use tap coordinates for all visible text and works more reliably across different apps.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoExact text match for the element
textContainsNoPartial text match (case-insensitive)
contentDescNoExact content-description match
contentDescContainsNoPartial content-description match (case-insensitive)
resourceIdNoResource ID match (e.g., 'com.app:id/button' or just 'button')
indexNoIf multiple elements match, tap the nth one (0-indexed, default: 0)
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the underlying technology (uiautomator) and reliability considerations compared to ocr_screenshot, but doesn't address important behavioral aspects like error conditions (what happens if element isn't found), timing considerations, or what constitutes a successful tap. The description adds some context but leaves significant behavioral questions unanswered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly sized with two sentences: the first states the core functionality, the second provides valuable usage guidance. Every word earns its place, and the information is front-loaded with the primary purpose stated immediately. There's zero waste or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a UI automation tool with 7 parameters and no output schema, the description provides good context about the tool's purpose and when to use alternatives. However, it doesn't explain what happens after tapping (success indicators, return values, or error behavior), which would be helpful given the lack of output schema. The reliability comparison with ocr_screenshot is valuable context that compensates somewhat for other gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions the three identification approaches (text, content-description, resource-id) which correspond to parameter groups, but provides no additional syntax, format, or usage details. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Tap') and target ('an element'), specifies the identification methods ('by its text, content-description, or resource-id'), and mentions the underlying technology ('using uiautomator'). This provides a specific verb+resource combination that distinguishes it from generic 'android_tap' and other UI interaction tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides an alternative tool recommendation ('Consider using ocr_screenshot first') with justification ('it returns ready-to-use tap coordinates... and works more reliably across different apps'). This gives clear guidance on when to prefer an alternative approach, which is exactly what strong usage guidelines should provide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_wait_for_elementA

Wait for a UI element to appear on Android screen. Polls the accessibility tree until the element is found or timeout is reached. Use this FIRST after navigation to ensure screen is ready, then use find_element + tap.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoExact text match for the element
textContainsNoPartial text match (case-insensitive)
contentDescNoExact content-description match
contentDescContainsNoPartial content-description match (case-insensitive)
resourceIdNoResource ID match (e.g., 'com.app:id/button' or just 'button')
indexNoIf multiple elements match, select the nth one (0-indexed, default: 0)
timeoutMsNoMaximum time to wait in milliseconds (default: 10000)
pollIntervalMsNoTime between polls in milliseconds (default: 500)
deviceIdNoOptional device ID. Uses first available device if not specified.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by explaining the polling mechanism, timeout behavior, and accessibility tree scanning. It mentions the tool will wait 'until the element is found or timeout is reached' which clarifies the success/failure conditions. However, it doesn't specify what happens on timeout (error? null return?) or whether this blocks other operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured in two sentences: first explains what the tool does and how it works, second provides clear usage guidance. Every word earns its place with zero redundancy or fluff. It's front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description does an excellent job explaining the core behavior and usage context. It covers the polling mechanism, timeout, and workflow positioning. The main gap is the lack of information about return values or timeout handling, which would be helpful given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already documents all 9 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline of 3. The description's focus is on tool behavior rather than parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Wait for a UI element to appear on Android screen') and the mechanism ('Polls the accessibility tree until the element is found or timeout is reached'). It distinguishes this tool from siblings like android_find_element by emphasizing the waiting/polling behavior rather than immediate lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Use this FIRST after navigation to ensure screen is ready') and what to do next ('then use find_element + tap'). It clearly positions this as a prerequisite step before other interaction tools, offering practical workflow advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_bundle_errorsB

Clear the bundle error buffer

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Clear' implies a destructive write operation that likely removes error data, but the description doesn't specify if this requires specific permissions, is irreversible, affects system state, or has side effects (e.g., resetting counters). For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words—'Clear the bundle error buffer' directly conveys the core action and target. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally complete for its basic function. However, as a mutation tool with potential side effects, it lacks details on behavioral traits (e.g., what 'clear' entails operationally) and usage context, which could hinder agent effectiveness in complex scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it correctly avoids mentioning any. This meets the baseline for tools with no parameters, where minimal description is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Clear the bundle error buffer' clearly states the action (clear) and the resource (bundle error buffer), making the purpose unambiguous. It distinguishes from siblings like 'clear_logs' and 'clear_network' by specifying the target resource, though it doesn't explicitly contrast with them. The purpose is specific but lacks explicit sibling differentiation, warranting a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., after detecting errors with 'get_bundle_errors'), exclusions, or contextual cues. Without any usage instructions, the agent must infer context from tool names alone, which is insufficient for optimal selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_logsB

Clear the log buffer

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. 'Clear' implies a destructive operation, but the description doesn't specify whether this is permanent, reversible, requires special permissions, or affects system performance. No rate limits, side effects, or response format information is included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just 3 words ('Clear the log buffer'), front-loaded with the core action, and contains zero wasted words. Every word earns its place in conveying the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'clear' means operationally, what happens to the cleared logs, whether the action is reversible, or what confirmation/response the tool provides. The context signals show this is a mutation tool in a system with many read-oriented siblings, making behavioral transparency particularly important.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description doesn't need to explain parameters, and it doesn't attempt to add parameter information beyond what's already covered by the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Clear the log buffer' clearly states the action (clear) and target resource (log buffer), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'get_logs' or 'search_logs' beyond the obvious action difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like 'get_logs' or 'search_logs'. The description doesn't mention prerequisites, timing considerations, or any context for when clearing logs is appropriate versus reading them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_networkB

Clear the network request buffer

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Clear' implies a destructive operation, but it doesn't specify whether this is reversible, what permissions are needed, or what happens to the cleared data. For a mutation tool with zero annotation coverage, this is a significant gap in behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema), the description is minimally adequate but lacks context. It doesn't explain what 'network request buffer' refers to, what clearing entails, or how this interacts with other network-related tools, leaving gaps in understanding for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter semantics, but this is appropriate given the lack of parameters, warranting a baseline score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Clear the network request buffer' clearly states the action (clear) and resource (network request buffer), making the purpose specific and understandable. However, it doesn't differentiate from sibling tools like clear_bundle_errors or clear_logs, which perform similar clearing operations on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing, or relationships with sibling tools like get_network_requests or search_network, leaving the agent without context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connect_metroA

Connect to a Metro server on a specific port. Use this when you know the exact port, otherwise use scan_metro which auto-detects. Establishes the WebSocket connection needed for debugging tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoMetro server port (default: 8081)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool 'establishes the WebSocket connection needed for debugging tools,' which explains the outcome and purpose. However, it doesn't cover potential failure modes, authentication requirements, timeout behavior, or what happens if the connection fails—leaving gaps for a mutation tool (connection establishment).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste—front-loaded with the core purpose, followed by usage guidance. Every word contributes value, making it highly efficient and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (establishing a connection), no annotations, and no output schema, the description does well by covering purpose, usage guidelines, and behavioral outcome. However, it lacks details on error handling or connection state management, which would be helpful for a tool that mutates system state (establishes connections).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'port' parameter fully documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema (e.g., no details about valid port ranges or connection protocols). This meets the baseline of 3 when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Connect to a Metro server') and resource ('on a specific port'), distinguishing it from sibling tools like 'scan_metro' which auto-detects ports. It explicitly mentions establishing a WebSocket connection for debugging tools, providing a complete purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('when you know the exact port') and when to use an alternative ('otherwise use scan_metro which auto-detects'). This directly addresses the comparison with the sibling tool, offering clear decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ensure_connectionA

Verify or establish a healthy connection to a React Native app. Use before running commands if connection may be stale, or after navigation/reload. This tool runs a health check and will auto-reconnect if needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoMetro port (default: auto-detect)
healthCheckNoRun health check to verify page context is responsive (default: true)
forceRefreshNoForce close existing connection and reconnect (default: false)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it 'runs a health check' and 'will auto-reconnect if needed.' However, it doesn't specify error handling, timeout behavior, or what constitutes a 'healthy connection,' leaving some operational details unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences: the first states purpose and usage guidelines, the second explains behavioral traits. Every sentence adds value with zero redundant information, making it appropriately sized and front-loaded for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (connection management with health checks), no annotations, and no output schema, the description does a good job covering purpose, usage, and key behaviors. However, it lacks details on return values or error conditions, which would be helpful since there's no output schema to provide that information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('verify or establish a healthy connection') and identifies the target resource ('React Native app'). It distinguishes itself from siblings like 'connect_metro' by emphasizing health verification and auto-reconnection capabilities, not just connection establishment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'before running commands if connection may be stale, or after navigation/reload.' It also implicitly suggests alternatives by indicating this is for health verification and reconnection, distinguishing it from initial connection tools like 'connect_metro' or status-checking tools like 'get_connection_status'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_in_appA

Execute JavaScript code in the connected React Native app and return the result. Use this for REPL-style interactions, inspecting app state, or running diagnostic code. Hermes compatible: 'global' is automatically polyfilled to 'globalThis', so both global.REDUX_STORE and globalThis.REDUX_STORE work.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesJavaScript expression to execute in the app
awaitPromiseNoWhether to await promises (default: true)
maxResultLengthNoMax characters in result (default: 2000, set to 0 for unlimited). Tip: For large objects like Redux stores, use inspect_global instead or set higher limit.
verboseNoDisable result truncation. Tip: Be cautious - Redux stores or large state can return 10KB+.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it executes JavaScript in the app context, returns results, handles Hermes compatibility with global polyfilling, and warns about result truncation for large objects. However, it doesn't mention potential side effects, error handling, or security implications of arbitrary code execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with two sentences that each serve distinct purposes: the first states the core functionality, the second provides technical details about Hermes compatibility. There's no wasted language, and important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, 100% schema coverage, but no annotations or output schema, the description provides good contextual completeness. It covers the tool's purpose, usage scenarios, technical compatibility details, and references alternatives. The main gap is the lack of output format description, but given the tool's REPL nature, this is somewhat mitigated by the parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter-specific information beyond the schema - it mentions Hermes compatibility for global/globalThis but doesn't provide additional semantic context for the parameters themselves. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Execute JavaScript code in the connected React Native app and return the result.' It specifies the verb ('Execute'), resource ('JavaScript code'), and context ('React Native app'), distinguishing it from sibling tools like inspect_global or get_component_tree which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines: 'Use this for REPL-style interactions, inspecting app state, or running diagnostic code.' It also mentions alternatives: 'Tip: For large objects like Redux stores, use inspect_global instead or set higher limit.' This clearly indicates when to use this tool versus other options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_componentsA

Find components matching a name pattern. TARGETED SEARCH: Use after get_component_tree(structureOnly=true) to find specific components by pattern and get their layout info. More efficient than get_screen_layout for targeted queries. Use includeLayout=true to get padding/margin/flex styles.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesRegex pattern to match component names (case-insensitive). Examples: 'Button', 'Screen$', 'List.*Item'
maxResultsNoMaximum number of results to return (default: 20)
includeLayoutNoInclude layout styles (padding, margin, flex) for each matched component
shortPathNoShow only last 3 path segments (default: true)
summaryNoReturn only component counts by name instead of full list (default: false)
formatNoOutput format: 'json' or 'tonl' (default, pipe-delimited rows, ~40% smaller)tonl

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it's a search operation (implied by 'Find'), mentions efficiency compared to get_screen_layout, and provides guidance on using includeLayout parameter for additional style information. However, it doesn't cover potential limitations like performance impacts with complex patterns or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in three sentences, each serving a distinct purpose: stating the core function, providing usage context, and offering parameter guidance. There's no wasted text, and information is front-loaded with the primary purpose stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, regex pattern matching) and lack of output schema, the description provides good contextual completeness. It explains the tool's role in the workflow, efficiency benefits, and key parameter usage. However, without an output schema, it could benefit from more detail about return format expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds minimal parameter semantics beyond the schema, only mentioning includeLayout=true to get padding/margin/flex styles. This meets the baseline expectation when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find components matching a name pattern.' It specifies the verb ('Find'), resource ('components'), and scope ('matching a name pattern'), and distinguishes it from sibling tools like get_component_tree and get_screen_layout by explaining its targeted search functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use after get_component_tree(structureOnly=true) to find specific components by pattern and get their layout info.' It also states when to use this tool versus alternatives: 'More efficient than get_screen_layout for targeted queries.' This gives clear context for when to choose this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_appsA

List currently connected React Native apps and their connection status. If no apps are connected, run scan_metro first to establish a connection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that this is a read operation (listing apps) and mentions a prerequisite action ('run scan_metro first') for when no apps are connected, adding useful behavioral context. However, it lacks details on output format, error handling, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste: the first states the purpose, and the second provides usage guidance. It is front-loaded with the core functionality and efficiently includes necessary context without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no annotations, and no output schema, the description is reasonably complete for a simple listing tool. It covers purpose, usage guidelines, and behavioral context (prerequisite action). However, it could be more complete by specifying the return format or handling of edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description does not mention any parameters, which is appropriate, and it adds value by explaining the tool's behavior and prerequisites, compensating for the lack of parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('currently connected React Native apps and their connection status'), making the purpose specific and unambiguous. It distinguishes itself from siblings like 'scan_metro' by focusing on listing rather than establishing connections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly provides when to use this tool ('List currently connected React Native apps') and when to use an alternative ('If no apps are connected, run scan_metro first to establish a connection'), naming the sibling tool 'scan_metro' as the alternative for establishing connections.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bundle_errorsA

Retrieve captured Metro bundling/compilation errors. These are errors that occur during the bundle build process (import resolution, syntax errors, transform errors) that prevent the app from loading. If no errors are captured but Metro is running without connected apps, automatically falls back to screenshot+OCR to capture the error from the device screen.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxErrorsNoMaximum number of errors to return (default: 10)
platformNoPlatform for screenshot fallback when no errors are captured via CDP. Required to enable fallback.
deviceIdNoOptional device ID for screenshot fallback. Uses first available device if not specified.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does this well by describing the fallback behavior (screenshot+OCR when no errors captured), which is a key behavioral trait not evident from the schema. It also implies this is a read operation (retrieving errors) rather than a mutation. However, it doesn't mention rate limits, authentication needs, or what happens when Metro isn't running.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly sized at two sentences, front-loaded with the primary purpose, followed by important behavioral context about the fallback mechanism. Every sentence earns its place with zero wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (retrieval with conditional fallback), no annotations, and no output schema, the description does well by explaining both the primary retrieval behavior and the fallback mechanism. However, it doesn't describe the return format (what the errors look like) or error conditions, which would be helpful since there's no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds marginal value by mentioning the screenshot fallback context for the 'platform' and 'deviceId' parameters, but doesn't provide additional semantic meaning beyond what the schema descriptions already state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('retrieve captured Metro bundling/compilation errors') and resources ('errors during bundle build process'). It distinguishes from sibling tools like 'clear_bundle_errors' (which clears rather than retrieves) and 'get_bundle_status' (which checks status rather than errors).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: to retrieve bundling errors that prevent app loading. It implicitly distinguishes from tools like 'get_logs' or 'search_logs' by focusing specifically on Metro bundling errors. However, it doesn't explicitly state when NOT to use it or name specific alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bundle_statusA

Get the current Metro bundler status including build state and any recent bundling errors. Use this to check if there are compilation/bundling errors that prevent the app from loading.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the tool as a read operation ('Get', 'check') and implies it returns status information, which is adequate. However, it lacks details on potential side effects, error handling, or response format, leaving gaps in behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with two sentences: the first states the purpose, and the second provides usage guidance. Every sentence adds value without redundancy, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is reasonably complete for a status-checking tool. However, it could be more comprehensive by detailing the return format or error conditions, which would help an agent better anticipate the output, especially without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose and usage. A baseline of 4 is applied since it avoids unnecessary repetition of schema information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get', 'check') and resources ('Metro bundler status', 'build state', 'recent bundling errors'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get_bundle_errors' or 'clear_bundle_errors', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('to check if there are compilation/bundling errors that prevent the app from loading'), which helps guide usage. However, it doesn't explicitly state when not to use it or name specific alternatives among the many sibling tools, such as 'get_bundle_errors' for error details only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_treeA

Get the React component tree from the running app. RECOMMENDED: Use focusedOnly=true with structureOnly=true for a token-efficient overview of just the active screen (~1-2KB). This skips navigation wrappers and global overlays, showing only what's actually visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusedOnlyNoReturn only the focused/active screen subtree, skipping navigation wrappers and overlays. Dramatically reduces output size. (Recommended: true)
structureOnlyNoReturn ultra-compact structure with just component names (no props, styles, or paths). Use this first for overview, then drill down with inspect_component.
maxDepthNoMaximum tree depth (default: 25 for focusedOnly+structureOnly, 40 for structureOnly, 100 for full mode)
includePropsNoInclude component props (excluding children and style). Ignored if structureOnly=true.
includeStylesNoInclude layout styles (padding, margin, flex, etc.). Ignored if structureOnly=true.
hideInternalsNoHide internal RN components (RCTView, RNS*, Animated, etc.) for cleaner output (default: true)
formatNoOutput format: 'json' or 'tonl' (default, compact indented tree). Ignored if structureOnly=true.tonl

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior regarding output size reduction, what gets skipped (navigation wrappers and global overlays), and token efficiency considerations. It doesn't mention rate limits, authentication needs, or error conditions, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with just two sentences, both of which earn their place. The first sentence states the core purpose, and the second provides crucial usage guidance with specific recommendations and quantitative benefits. No wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, 100% schema coverage, and no output schema, the description provides excellent context about usage patterns and practical considerations. It could potentially mention return format details or error cases, but given the comprehensive schema and clear behavioral guidance, it's nearly complete for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline would be 3, but the description adds significant value by explaining the interaction between parameters (focusedOnly=true with structureOnly=true) and the practical impact on output size (~1-2KB), which goes beyond the schema's technical documentation of individual parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Get') and resource ('React component tree from the running app'), distinguishing it from sibling tools like inspect_component or find_components by focusing on the entire tree structure rather than individual components or search operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool, recommending specific parameter combinations (focusedOnly=true with structureOnly=true) for token-efficient overviews, and mentions an alternative (drill down with inspect_component) for detailed inspection after getting the overview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_connection_statusA

Get detailed connection health status including uptime, recent disconnects/reconnects, and connection gaps that may indicate missing data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool retrieves health status and identifies potential data gaps, which is useful behavioral context. However, it does not mention performance characteristics (e.g., latency), error handling, or whether it requires active connections, leaving gaps in transparency for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and key details (uptime, disconnects/reconnects, gaps). It is front-loaded with the main action and avoids unnecessary elaboration, making every word count.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides a clear purpose but lacks details on return format, error conditions, or dependencies. For a health-check tool with zero parameters, it is minimally adequate but could benefit from mentioning output structure or usage constraints to improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage (empty schema). The description does not need to add parameter details, as there are none to document. It appropriately focuses on the tool's purpose without redundant parameter explanations, meeting the baseline for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('detailed connection health status'), specifying what information is retrieved (uptime, recent disconnects/reconnects, connection gaps). It distinguishes from sibling tools like 'ensure_connection' (which likely establishes connections) and 'get_network_stats' (which focuses on network metrics rather than connection health).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for monitoring connection health and identifying data gaps, but does not explicitly state when to use this tool versus alternatives like 'get_network_stats' or 'ensure_connection'. It provides context about what the tool does, but lacks explicit guidance on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_debug_serverA

Get the debug HTTP server URL. Use this to find where you can access logs, network requests, and other debug data via HTTP.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool retrieves a URL for accessing debug data, implying it's a read-only operation without side effects. However, it lacks details on potential errors, authentication needs, or rate limits, which are important for a tool interacting with a debug server.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and followed by usage guidance. Every word earns its place without redundancy or fluff, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, no annotations, and no output schema, the description is complete enough for its simple purpose. It explains what the tool does and when to use it, though it could benefit from mentioning the format of the returned URL or any prerequisites. For a low-complexity tool, this is largely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds value by explaining the tool's purpose and usage, which compensates for the lack of parameters. A baseline of 4 is appropriate as it provides meaningful context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get') and resource ('debug HTTP server URL'), distinguishing it from sibling tools that focus on Android/iOS operations, logs, network requests, or other debugging aspects. It explicitly identifies what the tool retrieves without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'Use this to find where you can access logs, network requests, and other debug data via HTTP.' This clearly indicates its purpose for locating a debug HTTP endpoint, differentiating it from tools like 'get_logs' or 'get_network_requests' that fetch data directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_inspector_selectionA

Get the React component at coordinates or read the current Element Inspector selection. If x/y provided: auto-enables inspector, taps at coordinates, returns component hierarchy. If no coordinates: returns current selection. Works in all React Native versions including Fabric.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX coordinate (in points). If provided with y, auto-taps at this location.
yNoY coordinate (in points). If provided with x, auto-taps at this location.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: auto-enables inspector when coordinates are given, taps at coordinates, returns component hierarchy, and works across React Native versions including Fabric. It lacks details on permissions, rate limits, or error handling, but covers essential operational traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with two sentences that efficiently convey the tool's functionality and scope. Every sentence earns its place by providing critical information without redundancy or unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (conditional behavior based on parameters), no annotations, and no output schema, the description is mostly complete. It explains the tool's behavior and compatibility but could benefit from details on return values or error cases. However, it adequately covers the core functionality for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the parameters (x and y as numbers with descriptions). The description adds some semantic context by explaining that if x/y are provided, it auto-taps at that location, but this is largely implied by the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get', 'read') and resources ('React component', 'Element Inspector selection'). It distinguishes itself from siblings like 'inspect_at_point' or 'inspect_component' by specifying it works with coordinates or current selection and supports all React Native versions including Fabric.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool based on whether coordinates are provided (x/y for auto-tap at location, no coordinates for current selection). However, it does not explicitly mention when not to use it or name specific alternatives among the many sibling tools, such as 'inspect_at_point' for similar functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_logsA

Retrieve console logs from connected React Native app. Tip: Use summary=true first for a quick overview (counts by level + last 5 messages), then fetch specific logs as needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLogsNoMaximum number of logs to return (default: 50)
levelNoFilter by log level (default: all)all
startFromTextNoStart from the first log line containing this text
maxMessageLengthNoMax characters per message (default: 500, set to 0 for unlimited). Tip: Use lower values for overview, higher when debugging specific data structures.
verboseNoDisable all truncation and return full messages. Tip: Use with lower maxLogs (e.g., 10) to avoid token overload when inspecting large objects.
formatNoOutput format: 'text' or 'tonl' (default, compact token-optimized format, ~30-50% smaller)tonl
summaryNoReturn summary statistics instead of full logs (count by level + last 5 messages). Use for quick overview.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior by explaining the summary mode functionality and providing practical tips about token management and output formats. However, it doesn't mention potential limitations like connection requirements, performance implications, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured with two sentences: the first states the core purpose, the second provides actionable usage guidance. Every word earns its place, and the information is front-loaded with the most important guidance immediately following the purpose statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no annotations and no output schema, the description does well by providing workflow guidance and practical tips. However, it could be more complete by mentioning what the tool returns (log format/structure) or any prerequisites (requires connected app). The absence of output schema means the description should ideally cover return values more explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds some value by explaining the strategic use of 'summary=true' and providing context about when to use certain parameter combinations, but doesn't add significant semantic information beyond what's already documented in the comprehensive parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Retrieve') and resource ('console logs from connected React Native app'), distinguishing it from sibling tools like 'search_logs' or 'clear_logs'. It provides a complete functional statement that leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance with the tip to 'Use summary=true first for a quick overview... then fetch specific logs as needed.' This gives clear direction on when to use this tool and how to sequence operations, addressing the common workflow of first getting an overview before detailed inspection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_requestsA

Retrieve captured network requests from connected React Native app. Shows URL, method, status, and timing. Tip: Use summary=true first for stats overview (counts by method, status, domain), then fetch specific requests as needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxRequestsNoMaximum number of requests to return (default: 50)
methodNoFilter by HTTP method (GET, POST, PUT, DELETE, etc.)
urlPatternNoFilter by URL pattern (case-insensitive substring match)
statusNoFilter by HTTP status code (e.g., 200, 401, 500)
formatNoOutput format: 'text' or 'tonl' (default, compact token-optimized format, ~30-50% smaller)tonl
summaryNoReturn statistics only (count, methods, domains, status codes). Use for quick overview.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes what data is returned (URL, method, status, timing) and suggests a usage tip, but lacks details on permissions, rate limits, or error handling. For a tool with no annotations, this is a moderate level of behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the first states the purpose and data fields, the second provides a practical tip. It's front-loaded with essential information and efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description adequately covers the tool's purpose and usage, but lacks details on return format or error cases. It's complete enough for basic use but could benefit from more behavioral context for a tool with 6 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'summary=true' in the tip, but doesn't explain parameter interactions or provide additional context. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieve') and resource ('captured network requests from connected React Native app'), specifying what data is shown (URL, method, status, timing). It distinguishes from siblings like 'get_network_stats' (statistics) and 'search_network' (search-focused) by emphasizing retrieval of captured requests with specific fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance on when to use this tool: 'Use summary=true first for stats overview (counts by method, status, domain), then fetch specific requests as needed.' This offers a clear workflow and distinguishes it from using 'get_network_stats' for summary-only purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_statsB

Get statistics about captured network requests: counts by method, status code, and domain.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool returns (statistics) but does not mention behavioral traits such as whether it requires specific permissions, if it's read-only (implied by 'Get'), how data is sourced (e.g., from a capture session), performance considerations, or error handling. This leaves gaps in understanding the tool's operation and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Get statistics') and specifies the resource and details without unnecessary words. Every part of the sentence adds value, making it well-structured and concise for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity is low (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on behavioral aspects like data freshness, scope (e.g., time range), or format of returned statistics. Without annotations or output schema, more context on the return value would be helpful for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, focusing instead on the tool's purpose. This aligns with the baseline expectation for tools without parameters, where the description need not compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'statistics about captured network requests', with specific details about what statistics are included (counts by method, status code, and domain). It distinguishes itself from siblings like 'get_network_requests' (which likely lists individual requests) and 'search_network' (which likely filters requests) by focusing on aggregated statistics rather than individual records or search functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when aggregated statistics about network requests are needed, but it does not explicitly state when to use this tool versus alternatives like 'get_network_requests' or 'search_network'. There is no guidance on prerequisites (e.g., whether network capturing must be active) or exclusions, leaving the context somewhat open-ended.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_request_detailsA

Get full details of a specific network request including headers, body, and timing. Use get_network_requests first to find the request ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdYesThe request ID to get details for
maxBodyLengthNoMax characters for request body (default: 500, set to 0 for unlimited). Tip: Large POST bodies (file uploads, base64) can be 10KB+.
verboseNoDisable body truncation. Tip: Use when you need to inspect full JSON payloads.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what information is returned (headers, body, timing) but doesn't mention authentication requirements, rate limits, error conditions, or response format. The description is accurate about the tool's purpose but lacks operational context that would help an agent use it effectively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two focused sentences that efficiently communicate purpose and usage guidance. The first sentence states what the tool does, and the second provides critical workflow context. There's no wasted verbiage or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no annotations, and no output schema, the description provides adequate purpose and usage guidance but lacks information about the return format, error handling, or operational constraints. The description is complete enough for basic understanding but would benefit from additional context about what the detailed response looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no parameter information in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get full details') and resource ('a specific network request'), explicitly listing the included information (headers, body, timing). It distinguishes from its sibling 'get_network_requests' by specifying this tool is for detailed inspection of individual requests rather than listing them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Use get_network_requests first to find the request ID'), creating a clear workflow dependency. It distinguishes this tool from its sibling by positioning it as the second step in a two-step process for network request inspection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_screen_layoutA

Get layout information for all components on screen. USE AFTER get_component_tree: First use get_component_tree(structureOnly=true) to understand structure, then use this tool OR find_components with includeLayout=true to get layout details for specific areas. This tool returns full layout data which can be large for complex screens.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxDepthNoMaximum tree depth to traverse (default: 65, balanced for most screens)
componentsOnlyNoOnly show custom components, hide host components (View, Text, etc.)
shortPathNoShow only last 3 path segments instead of full path (default: true)
summaryNoReturn only component counts by name instead of full element list (default: false)
formatNoOutput format: 'json' or 'tonl' (default, pipe-delimited rows, ~40% smaller)tonl

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing important behavioral traits: the prerequisite relationship with get_component_tree, performance characteristics ('data which can be large for complex screens'), and alternative approaches. It doesn't cover all possible behavioral aspects like error conditions or authentication needs, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with three sentences that each serve distinct purposes: stating the core function, providing usage guidance, and warning about data size. There's no wasted text, and critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with 5 well-documented parameters and no output schema, the description provides excellent context about when and how to use it, performance considerations, and alternatives. The main gap is the lack of output format details, but given the tool's relatively straightforward purpose and good parameter documentation, this is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all 5 parameters. The description doesn't add any parameter-specific information beyond what's in the schema. This meets the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Get') and resource ('layout information for all components on screen'). It distinguishes from sibling tools by specifying it returns 'full layout data' and contrasts with 'find_components with includeLayout=true' for specific areas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'USE AFTER get_component_tree' with specific parameter recommendation, and offers a clear alternative ('find_components with includeLayout=true'). It also warns about data size for complex screens, helping the agent decide when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_at_pointA

Inspect the React component at specific (x, y) coordinates. Works like React Native's Element Inspector. NOTE: This API (getInspectorDataForViewAtPoint) may not be available in newer React Native versions with Fabric. If unavailable, use ios_describe_point/android_describe_point for native element info, then find_components to locate the React component.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate (in points for iOS, pixels for Android)
yYesY coordinate (in points for iOS, pixels for Android)
includePropsNoInclude component props in the output (default: true)
includeFrameNoInclude position/dimensions (frame) in the output (default: true)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it works like React Native's Element Inspector, mentions API availability issues ('getInspectorDataForViewAtPoint' may not be available in newer versions), and outlines fallback strategies. However, it doesn't specify error handling, performance implications, or output format details, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with the core purpose stated first. It uses two sentences efficiently, with the second providing crucial context and alternatives. While concise, the second sentence is slightly dense but still earns its place by adding necessary guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is mostly complete. It covers purpose, usage guidelines, and behavioral context well. However, it lacks details on output format or error handling, which would be helpful since there's no output schema, leaving a minor gap in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add any additional meaning or context about the parameters beyond what the schema provides (e.g., it doesn't explain coordinate systems further or usage of includeProps/includeFrame). The baseline score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('inspect') and resources ('React component'), and distinguishes it from siblings by mentioning alternatives like 'ios_describe_point/android_describe_point' and 'find_components'. It explicitly identifies what it inspects and how it differs from other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool (for React component inspection) and when not to use it (if unavailable in newer React Native versions with Fabric), naming specific alternatives ('ios_describe_point/android_describe_point' then 'find_components'). This covers both usage context and exclusions clearly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_componentA

Inspect a specific React component by name. DRILL-DOWN TOOL: Use after get_component_tree(structureOnly=true) to inspect specific components. Returns props, style, state (hooks), and optionally children tree. Use childrenDepth to control how deep nested children go.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the component to inspect (e.g., 'Button', 'HomeScreen', 'FlatList')
indexNoIf multiple instances exist, which one to inspect (0-based index, default: 0)
includeStateNoInclude component state/hooks (default: true)
includeChildrenNoInclude children component tree
childrenDepthNoHow many levels deep to show children (default: 1 = direct children only, 2+ = nested tree)
shortPathNoShow only last 3 path segments (default: true)
simplifyHooksNoSimplify hooks output by hiding effects and reducing depth (default: true)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what information is returned (props, style, state, children tree) and mentions parameter-controlled behavior (childrenDepth controls nesting depth). However, it doesn't address important behavioral aspects like whether this is a read-only operation, potential performance implications, or error conditions when componentName doesn't exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise and well-structured: three sentences that each earn their place. The first states the core purpose, the second provides crucial workflow guidance, and the third explains key return values and parameter usage. No wasted words, front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, no annotations, and no output schema, the description is adequate but has gaps. It explains the purpose and workflow relationship well, but doesn't describe the return format (what does 'Returns props, style, state' actually look like?) or address error conditions. Given the complexity and lack of output schema, more detail about the return structure would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all 7 parameters. The description adds minimal value beyond the schema - it mentions 'childrenDepth to control how deep nested children go' which is already covered in the schema description. No additional parameter semantics are provided beyond what's in the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Inspect a specific React component by name' with specific details about what it returns (props, style, state, children tree). It distinguishes itself from sibling tools like 'get_component_tree' by being a drill-down tool for specific components rather than a tree overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use after get_component_tree(structureOnly=true) to inspect specific components.' This clearly indicates when to use this tool versus its sibling, establishing a workflow relationship and preventing misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_globalA

Inspect a global object to see its properties, types, and whether they are callable functions. Use this BEFORE calling methods on unfamiliar objects to avoid errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectNameYesName of the global object to inspect (e.g., '__EXPO_ROUTER__', '__APOLLO_CLIENT__')

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a read-only inspection tool (implied by 'inspect' and 'see') and provides the safety rationale ('avoid errors'). However, it doesn't describe what the output looks like, potential error conditions, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place. The first sentence states the core functionality, and the second provides crucial usage guidance. No wasted words, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter inspection tool with no output schema, the description provides excellent purpose clarity and usage guidance. The main gap is the lack of output format description, which would be helpful given the absence of an output schema. However, the description compensates well with strong behavioral context about when and why to use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'objectName' well-documented in the schema. The description adds no additional parameter information beyond what's in the schema, but the schema already provides complete documentation including examples. This meets the baseline expectation for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('inspect', 'see') and resources ('global object', 'properties, types, callable functions'). It distinguishes itself from siblings like 'list_debug_globals' (which lists objects) by focusing on detailed inspection of a single object's internal structure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'BEFORE calling methods on unfamiliar objects to avoid errors.' This creates a clear usage context and distinguishes it from other inspection tools like 'inspect_component' or 'inspect_at_point' that target different resources.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_boot_simulatorA

Boot an iOS simulator by UDID. Use list_ios_simulators to find available simulators.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidYesUDID of the simulator to boot (from list_ios_simulators)

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'boot' implies a state-changing operation, the description lacks details on permissions required, whether this is destructive to existing simulator states, timeouts, or what happens if the simulator is already booted. It mentions using 'list_ios_simulators' but doesn't explain the boot process itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste: the first states the purpose, and the second provides essential usage guidance. It's front-loaded with the core action and efficiently includes only necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter (fully documented in schema) and no annotations or output schema, the description is adequate but incomplete. It covers purpose and basic usage but lacks behavioral details (e.g., side effects, error handling) that would be important for a boot operation. Given the simplicity, it's minimally viable but could be more comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'udid' parameter fully documented in the schema. The description adds minimal value by referencing 'list_ios_simulators' as the source for UDIDs, but doesn't provide additional semantics beyond what the schema already states. This meets the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Boot') and target resource ('iOS simulator by UDID'), distinguishing it from sibling tools like 'list_ios_simulators' (which finds simulators) and other iOS tools that perform different operations (e.g., 'ios_install_app', 'ios_launch_app'). The verb 'boot' is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides when to use this tool ('Boot an iOS simulator by UDID') and directs users to an alternative tool for prerequisite information ('Use list_ios_simulators to find available simulators'). This gives clear context and distinguishes it from other iOS tools that might require a booted simulator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_buttonA

Press a hardware button on an iOS simulator. Requires IDB to be installed (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
buttonYesHardware button to press: HOME, LOCK, SIDE_BUTTON, SIRI, or APPLE_PAY
durationNoOptional button press duration in seconds
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the IDB installation requirement, which is useful context about dependencies. However, it lacks details on potential side effects (e.g., simulator state changes), error conditions, or what happens if the simulator is not booted, leaving behavioral traits partially described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero waste: the first states the core purpose, and the second adds a critical prerequisite. It is front-loaded with the main action and efficiently structured, making every sentence earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is reasonably complete. It covers the purpose and a key prerequisite, but could improve by mentioning expected outcomes (e.g., simulator response) or error handling, especially since there's no output schema to clarify returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add any parameter-specific information beyond what the schema provides (e.g., it doesn't explain what 'SIRI' or 'APPLE_PAY' buttons do in practice). Baseline 3 is appropriate as the schema handles parameter semantics adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Press a hardware button') and target resource ('on an iOS simulator'), distinguishing it from sibling tools like ios_tap or ios_key_event that perform different interactions. It precisely identifies the tool's function without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states a prerequisite ('Requires IDB to be installed') which provides clear context for when the tool can be used. However, it does not specify when to use this tool versus alternatives like ios_key_event for software-based key presses or other iOS interaction tools, leaving some ambiguity in sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_describe_allA

Get accessibility information for the entire iOS simulator screen. Returns a nested tree of UI elements with labels, values, and frames. Requires IDB to be installed (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it's a read operation (implied by 'Get'), requires external setup ('Requires IDB to be installed'), and specifies the output format. It does not mention potential errors, performance implications, or authentication needs, but covers essential operational context adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by essential behavioral and setup details. Every sentence adds value: the first defines the action and output, the second specifies prerequisites. There is no wasted text, making it highly efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (read operation with one optional parameter) and no annotations or output schema, the description provides sufficient context: it explains what the tool does, the return format, and prerequisites. It could improve by mentioning error handling or limitations, but it covers the essentials well for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'udid' fully documented in the schema. The description does not add any additional meaning or details about parameters beyond what the schema provides, so it meets the baseline score of 3 without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get accessibility information') and resource ('entire iOS simulator screen'), and distinguishes it from sibling tools like 'ios_describe_point' by specifying the scope ('entire screen'). It explicitly mentions the return format ('nested tree of UI elements with labels, values, and frames'), which further clarifies its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by specifying it's for iOS simulators and requires IDB installation, which helps determine when to use it. However, it does not explicitly state when not to use it or name alternatives (e.g., 'ios_describe_point' for specific points), which prevents a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_describe_pointA

Get accessibility information for the UI element at a specific point on the iOS simulator screen. Requires IDB to be installed (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate in pixels
yYesY coordinate in pixels
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions a prerequisite (IDB installation requirement) which is valuable context, but doesn't describe what the tool returns, error conditions, or performance characteristics. It adequately covers the basic operation but lacks depth on behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place: the first states the core functionality, the second provides critical prerequisite information. No wasted words, front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no annotations, and no output schema, the description provides adequate basic information but lacks details about return values, error handling, or performance considerations. It covers the essential 'what' and 'prerequisite' but doesn't fully address the complexity of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing clear documentation for all 3 parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without adding extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get accessibility information') and resource ('UI element at a specific point on the iOS simulator screen'). It distinguishes itself from sibling tools like 'ios_describe_all' by specifying point-based inspection rather than comprehensive description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool (for iOS simulator accessibility inspection at a specific point) and mentions a prerequisite (IDB installation). However, it doesn't explicitly state when NOT to use it or name alternatives like 'ios_describe_all' for broader inspection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_find_elementA

Find a UI element on iOS simulator by accessibility label or value. Returns element details including tap coordinates. Requires IDB (brew install idb-companion). Workflow: 1) wait_for_element, 2) find_element, 3) tap with returned coordinates. Prefer this over screenshots for button taps.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoExact accessibility label match
labelContainsNoPartial label match (case-insensitive)
valueNoExact accessibility value match
valueContainsNoPartial value match (case-insensitive)
typeNoElement type to match (e.g., 'Button', 'TextField')
indexNoIf multiple elements match, select the nth one (0-indexed, default: 0)
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the prerequisite (IDB installation) and the workflow context, which adds value. However, it lacks details on error handling, performance characteristics (e.g., timeouts), or what happens if no element is found. For a tool with 7 parameters and no annotations, more behavioral context would be helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with four sentences, each adding distinct value: purpose, prerequisite, workflow, and comparison. There is no redundant information, and it's front-loaded with the core functionality. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, no annotations, no output schema), the description is reasonably complete. It covers purpose, prerequisites, workflow, and alternatives. However, without an output schema, it could benefit from more details on the return format (e.g., structure of 'element details'), but the mention of 'tap coordinates' provides some context. The description compensates well for the lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds no additional parameter-specific information beyond what's in the schema (e.g., it doesn't clarify parameter interactions or precedence). The baseline score of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Find a UI element on iOS simulator'), the mechanism ('by accessibility label or value'), and the outcome ('Returns element details including tap coordinates'). It distinguishes from sibling tools like 'ios_screenshot' by explicitly stating 'Prefer this over screenshots for button taps.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Prefer this over screenshots for button taps'), includes a workflow context ('Workflow: 1) wait_for_element, 2) find_element, 3) tap with returned coordinates'), and mentions prerequisites ('Requires IDB (brew install idb-companion)'). It effectively distinguishes from alternatives like 'ios_screenshot' and 'ios_tap_element'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_input_textA

Type text into the active input field on an iOS simulator. Requires IDB to be installed (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type into the active input field
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully communicates that this is a write/mutation operation ('Type text') and mentions a prerequisite dependency (IDB installation). However, it doesn't describe what happens if no input field is active, whether text is appended or replaces existing content, error conditions, or what the response looks like. The description adds some behavioral context but leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place: the first states the core functionality, the second provides a critical prerequisite. No wasted words, and the most important information (what the tool does) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description provides adequate but incomplete context. It covers the basic purpose and a critical prerequisite, but doesn't address behavioral details like error conditions, what constitutes 'active input field', or what happens after typing. Given the complexity of interacting with a simulator and the lack of structured safety/behavior annotations, the description should do more to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (text and udid). The description doesn't add any parameter-specific information beyond what's in the schema descriptions. According to the scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Type text into the active input field') and target resource ('iOS simulator'), distinguishing it from sibling tools like android_input_text by specifying the iOS platform. It provides a complete verb+resource+platform combination that leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool ('on an iOS simulator') and includes an important prerequisite ('Requires IDB to be installed'). However, it doesn't explicitly mention when NOT to use it or name alternative tools (like android_input_text for Android), though the iOS context strongly implies the distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_install_appB

Install an app bundle (.app) on an iOS simulator

ParametersJSON Schema
NameRequiredDescriptionDefault
appPathYesPath to the .app bundle to install
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Install') but doesn't mention potential side effects (e.g., overwriting existing apps), permissions needed, error conditions, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose with zero wasted words. Every part of the sentence ('Install an app bundle (.app) on an iOS simulator') directly contributes to understanding the tool's function, making it appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects (e.g., what 'Install' entails operationally), error handling, or return values. While concise, it lacks the depth needed for an agent to fully understand the tool's context and implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('appPath' and 'udid') thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., file format requirements for .app bundles or UDID sourcing). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Install') and target resource ('an app bundle (.app) on an iOS simulator'), distinguishing it from sibling tools like 'android_install_app' (different platform) and 'ios_launch_app' (different action). It precisely communicates what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a booted simulator), exclusions (e.g., not for physical devices), or related tools like 'ios_boot_simulator' or 'get_apps'. Usage is implied by the action but not explicitly contextualized.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_key_eventA

Send a key event to an iOS simulator by keycode. Requires IDB to be installed (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
keycodeYesiOS keycode to send
durationNoOptional key press duration in seconds
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions a prerequisite (IDB installation) but lacks critical behavioral details such as whether this is a read/write operation, error handling, performance implications, or what happens if the simulator is not booted. The description is insufficient for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence and adds a crucial prerequisite in the second. Both sentences earn their place with no wasted words, making it appropriately sized and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation operation with no annotations and no output schema), the description is incomplete. It lacks details on behavioral traits, error conditions, return values, and how it interacts with sibling tools, leaving significant gaps for an AI agent to understand its full context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (keycode, duration, udid). The description does not add any additional meaning beyond what the schema provides, such as examples of keycodes or typical duration values, resulting in the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Send a key event'), target resource ('iOS simulator'), and mechanism ('by keycode'), distinguishing it from sibling tools like ios_key_sequence (which sends sequences) and android_key_event (which targets Android).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use this tool ('Requires IDB to be installed') and implies usage for iOS simulators, but does not specify when to choose it over alternatives like ios_key_sequence or when not to use it (e.g., for physical devices).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_key_sequenceB

Send a sequence of key events to an iOS simulator. Requires IDB to be installed (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
keycodesYesArray of iOS keycodes to send in sequence
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the IDB installation requirement, which is useful context about dependencies. However, it fails to describe critical behavioral aspects such as whether this operation is safe/read-only or destructive, what happens if the simulator isn't running, error conditions, or the expected response format. For a tool that interacts with simulators, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just two sentences that each serve a distinct purpose: the first states the core functionality, and the second provides a critical prerequisite. There's no wasted language, and the information is front-loaded with the primary action. This is an excellent example of efficient communication.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of interacting with iOS simulators and the absence of both annotations and an output schema, the description is insufficiently complete. It mentions the IDB requirement but omits other critical context such as error handling, what constitutes valid keycodes, whether the tool waits for completion, or what the return value looks like. For a tool with no structured safety or output information, the description should provide more operational guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with both parameters ('keycodes' and 'udid') clearly documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema descriptions. According to the scoring rules, when schema coverage is high (>80%), the baseline score is 3 even without parameter details in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send a sequence of key events') and target resource ('to an iOS simulator'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'ios_key_event' (which likely sends single key events rather than sequences), leaving some ambiguity about when to choose this specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context by mentioning the prerequisite ('Requires IDB to be installed'), which is helpful for setup. However, it offers no guidance on when to use this tool versus alternatives like 'ios_key_event' or 'ios_input_text', nor does it specify scenarios where key sequences are preferred over other input methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_launch_appB

Launch an app on an iOS simulator by bundle ID

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdYesBundle ID of the app (e.g., com.example.myapp)
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the action ('Launch') but doesn't disclose behavioral traits like whether it waits for app launch completion, handles errors if the app isn't installed, requires specific simulator states, or returns any output. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavior (e.g., success/failure handling), prerequisites, and output expectations. Given the complexity of launching an app in a simulator environment, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters (bundleId, udid) well-documented in the schema. The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Launch') and target resource ('an app on an iOS simulator by bundle ID'), distinguishing it from sibling tools like ios_terminate_app or android_launch_app. It specifies the platform (iOS simulator) and mechanism (bundle ID), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a booted simulator or installed app), exclusions (e.g., not for real devices), or comparisons to siblings like ios_open_url. Usage is implied but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_open_urlA

Open a URL in the iOS simulator (opens in default handler or Safari)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to open (e.g., https://example.com or myapp://path)
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that URLs open in 'default handler or Safari', which adds useful behavioral context beyond basic functionality. However, it doesn't cover potential errors, permissions, or simulator state requirements, leaving gaps for a mutation-like tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Open a URL in the iOS simulator') and adds clarifying detail ('opens in default handler or Safari') without waste. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, 100% schema coverage, and no output schema, the description is adequate but minimal. It covers the basic action and some behavioral context, but lacks details on return values, error conditions, or integration with sibling tools, making it functional but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any parameter-specific details beyond what's in the schema (e.g., URL examples or UDID usage), meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Open a URL') and target ('in the iOS simulator'), specifying the verb and resource. It distinguishes from sibling tools by focusing on URL opening rather than app control or UI interaction, though it doesn't explicitly contrast with specific alternatives like 'ios_launch_app'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for opening URLs in the iOS simulator, but doesn't provide explicit guidance on when to use this versus alternatives like 'ios_launch_app' for deep links or other URL-handling methods. It mentions 'default handler or Safari' which gives some context but lacks clear when/when-not rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_screenshotB

Take a screenshot from an iOS simulator. Returns the image data that can be displayed.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathNoOptional path to save the screenshot. If not provided, saves to temp directory.
udidNoOptional simulator UDID (from list_ios_simulators). Uses booted simulator if not specified.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return value ('Returns the image data that can be displayed') but doesn't address important behavioral aspects like whether this requires a running simulator, what happens if no simulator is available, error conditions, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences that each serve a clear purpose: stating the action and describing the return value. There's no wasted text, though it could be slightly more comprehensive given the lack of annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description provides basic purpose and return information but lacks important context about behavioral characteristics, error handling, and usage guidelines relative to sibling tools. It's minimally adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no additional parameter semantics beyond what's in the schema. Baseline score of 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Take a screenshot') and target resource ('from an iOS simulator'), distinguishing it from sibling tools like 'android_screenshot' and 'ocr_screenshot'. It provides a complete purpose statement with verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'android_screenshot' or 'ocr_screenshot'. It mentions the return value but gives no context about prerequisites, timing, or comparison with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_swipeB

Swipe gesture on an iOS simulator screen. Requires IDB to be installed (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
startXYesStarting X coordinate in pixels
startYYesStarting Y coordinate in pixels
endXYesEnding X coordinate in pixels
endYYesEnding Y coordinate in pixels
durationNoOptional swipe duration in seconds
deltaNoOptional delta between touch events (step size)
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions a prerequisite (IDB installation) which is useful context, but fails to describe what the tool actually does behaviorally—e.g., whether it simulates a swipe, returns success/failure, or has side effects like screen changes. This leaves significant gaps in understanding the tool's operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with only two sentences: one stating the core purpose and another providing a critical prerequisite. Every word earns its place, and the information is front-loaded with no wasted text, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (interactive gesture simulation with 7 parameters), no annotations, and no output schema, the description is incomplete. It lacks details on what the tool returns, error conditions, or behavioral outcomes, which are essential for an agent to use it effectively in a testing or automation context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 7 parameters with clear descriptions. The description adds no additional parameter semantics beyond what the schema provides, such as explaining coordinate systems or typical duration values. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Swipe gesture') and target ('iOS simulator screen'), which is specific and unambiguous. However, it doesn't explicitly differentiate from its sibling 'android_swipe' or other iOS gesture tools like 'ios_tap', missing full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning the prerequisite 'Requires IDB to be installed', which helps determine when this tool is applicable. However, it provides no guidance on when to choose this over alternatives like 'android_swipe' or other iOS interaction tools, leaving usage decisions ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_tapA

Tap at specific coordinates on an iOS simulator screen. WORKFLOW: Use ocr_screenshot first to get tap coordinates, then use this tool with the returned tapX/tapY values. Requires IDB (brew install idb-companion).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate in pixels
yYesY coordinate in pixels
durationNoOptional tap duration in seconds (for long press)
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: tapping at coordinates, with optional duration for long press, and using a booted simulator by default unless UDID is specified. It also mentions the IDB dependency requirement. However, it doesn't cover error conditions or what happens if coordinates are out of bounds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and concise: three sentences that each earn their place. The first states the purpose, the second provides workflow guidance, and the third specifies prerequisites. There's zero waste or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description does an excellent job covering the essential context: purpose, workflow, prerequisites, and behavioral aspects. The main gap is the lack of information about return values or error conditions, which would be helpful given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter semantics beyond the schema - it mentions using tapX/tapY values from ocr_screenshot, which provides context for the x and y parameters, but doesn't add significant value beyond what's already in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'Tap at specific coordinates on an iOS simulator screen.' This is a specific verb+resource combination that clearly distinguishes it from sibling tools like 'ios_tap_element' (which taps elements rather than coordinates) and 'android_tap' (which targets Android instead of iOS).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit workflow guidance: 'Use ocr_screenshot first to get tap coordinates, then use this tool with the returned tapX/tapY values.' It also specifies prerequisites: 'Requires IDB (brew install idb-companion).' This gives clear when-to-use instructions and mentions a required dependency.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_tap_elementA

Tap an element by its accessibility label. Requires IDB (brew install idb-companion). TIP: Consider using ocr_screenshot first - it returns ready-to-use tap coordinates for all visible text and works without requiring accessibility labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoExact accessibility label to match (e.g., 'Home', 'Settings')
labelContainsNoPartial label match, case-insensitive (e.g., 'Circular' matches 'Circulars, 3, 12 total')
indexNoIf multiple elements match, tap the nth one (0-indexed, default: 0)
durationNoOptional tap duration in seconds (for long press)
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral requirements: it states the prerequisite 'Requires IDB (brew install idb-companion)' and explains the alternative approach's advantage. However, it doesn't mention error conditions, timeout behavior, or what happens if no matching element is found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly front-loaded with the core purpose, followed by prerequisite information, then alternative usage guidance. Every sentence earns its place: the first states what the tool does, the second provides essential setup information, and the third offers valuable comparative guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description does well by covering purpose, prerequisites, and alternatives. However, it doesn't describe what happens on success/failure or the return format. Given the 5 parameters and mutation nature (tapping implies interaction), more behavioral context would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description doesn't add any parameter-specific information beyond what's already documented in the schema (which thoroughly describes all 5 parameters). No additional syntax, format, or constraint details are provided in the description text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Tap an element') and target ('by its accessibility label'), distinguishing it from sibling tools like ios_tap (which likely taps by coordinates) and ios_find_element (which finds but doesn't tap). The verb+resource combination is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use alternatives: it directly recommends 'Consider using ocr_screenshot first' as an alternative approach that 'works without requiring accessibility labels.' This creates clear decision criteria between two different interaction methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_terminate_appB

Terminate a running app on an iOS simulator

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdYesBundle ID of the app to terminate
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose whether termination is graceful or forceful, if it requires specific permissions, what happens to app state/data, error conditions, or side effects. 'Terminate' implies a destructive operation, but behavioral details are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and target, making it immediately understandable. Every word earns its place in conveying the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'terminate' entails behaviorally, what happens on success/failure, or return values. Given the complexity of app termination and lack of structured safety hints, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (bundleId and udid). The description adds no additional parameter semantics beyond what's in the schema. The baseline score of 3 reflects adequate coverage through the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('terminate') and target resource ('a running app on an iOS simulator'), distinguishing it from sibling tools like ios_launch_app or ios_install_app. It uses precise technical terminology (iOS simulator) that differentiates it from Android tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the app must be running), when termination is appropriate versus other actions like relaunching, or what happens after termination. No exclusions or sibling tool comparisons are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ios_wait_for_elementA

Wait for a UI element to appear on iOS simulator. Polls until found or timeout. Requires IDB (brew install idb-companion). Use this FIRST after navigation to ensure screen is ready, then use find_element + tap.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoExact accessibility label match
labelContainsNoPartial label match (case-insensitive)
valueNoExact accessibility value match
valueContainsNoPartial value match (case-insensitive)
typeNoElement type to match (e.g., 'Button', 'TextField')
indexNoIf multiple elements match, select the nth one (0-indexed, default: 0)
timeoutMsNoMaximum time to wait in milliseconds (default: 10000)
pollIntervalMsNoTime between polls in milliseconds (default: 500)
udidNoOptional simulator UDID. Uses booted simulator if not specified.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses key behavioral traits: polling mechanism, timeout behavior, and external dependency ('Requires IDB'). However, it doesn't mention error handling, what happens on timeout, or the return format/value when element is found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly front-loaded and concise. Three sentences cover purpose, mechanism, dependency, and usage sequence with zero wasted words. Every sentence earns its place by adding distinct value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no annotations and no output schema, the description provides good purpose and usage context but lacks details about return values, error conditions, and timeout behavior. It's adequate but has clear gaps given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Wait for') and resource ('UI element on iOS simulator'), including the polling mechanism. It distinguishes from sibling tools like 'ios_find_element' by emphasizing the waiting behavior and positioning it as a prerequisite step for element interaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use this FIRST after navigation to ensure screen is ready, then use find_element + tap.' It names the alternative tool ('find_element') and specifies the temporal sequence, giving clear when-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_android_devicesB

List connected Android devices and emulators via ADB

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the mechanism ('via ADB') but doesn't disclose behavioral traits like output format (e.g., list of device IDs), potential errors (e.g., no devices found), side effects (e.g., none), or dependencies (e.g., ADB server running). This is inadequate for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part ('List connected Android devices and emulators via ADB') earns its place by specifying scope and method.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 0 parameters, the description is minimal. It states what the tool does but lacks completeness for effective use: no output details, error handling, or integration context with siblings. For a tool in a complex Android/iOS testing environment, this leaves significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description adds no parameter information, which is appropriate. Baseline is 4 for zero parameters, as no compensation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and target resources ('connected Android devices and emulators') with the mechanism 'via ADB'. It distinguishes from siblings by focusing on device enumeration rather than interaction or inspection. However, it doesn't explicitly differentiate from 'list_ios_simulators' or other listing tools, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., ADB setup), timing (e.g., before device-specific operations), or exclusions (e.g., iOS devices). With many sibling tools for Android operations, this lack of context leaves the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_debug_globalsA

List globally available debugging objects in the connected React Native app (Apollo Client, Redux store, React DevTools, etc.). Use this to discover what state management and debugging tools are available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It indicates this is a discovery/listing operation, implying it's read-only and non-destructive, but doesn't specify behavioral details like whether it requires an active app connection, what format the output returns, or if there are any rate limits. It adds some context but lacks operational specifics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero waste. The first sentence states the purpose with specific details, and the second provides usage guidance. Every word earns its place, and it's front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (discovery operation in a debugging context), no annotations, and no output schema, the description is adequate but incomplete. It explains what the tool does and why to use it, but lacks details on output format, connection requirements, or error handling, which would be helpful for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose. A baseline of 4 is applied since no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('globally available debugging objects'), specifying the target environment ('connected React Native app') and providing concrete examples ('Apollo Client, Redux store, React DevTools, etc.'). It distinguishes from siblings by focusing on debugging objects rather than UI elements, logs, or network requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('to discover what state management and debugging tools are available'), but does not explicitly mention when not to use it or name specific alternatives among the many sibling tools. The guidance is helpful but could be more comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ios_simulatorsC

List available iOS simulators

ParametersJSON Schema
NameRequiredDescriptionDefault
onlyBootedNoOnly show currently running simulators (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists simulators but doesn't describe what information is returned (e.g., names, UDIDs, states), whether it requires specific permissions or environment setup, or if there are rate limits or side effects. This leaves significant gaps for a tool that likely interacts with system resources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It front-loads the core purpose ('List available iOS simulators') without unnecessary elaboration, making it easy to parse and understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool that likely returns structured data about simulators. It doesn't explain the return format (e.g., list of objects with properties), error conditions, or dependencies, leaving the agent with insufficient context to use the tool effectively beyond basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'onlyBooted' parameter fully documented in the schema itself. The description adds no additional parameter semantics beyond implying a listing action, so it meets the baseline of 3 where the schema does the heavy lifting without compensating for any gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('available iOS simulators'), making the purpose immediately understandable. It distinguishes this tool from sibling tools like 'list_android_devices' by specifying iOS simulators, but doesn't explicitly differentiate from other iOS tools like 'ios_boot_simulator' or 'ios_describe_all' beyond the listing function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing Xcode or a running simulator service), compare it to 'list_android_devices' for cross-platform scenarios, or indicate when filtering with 'onlyBooted' is appropriate versus other listing methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ocr_screenshotA

RECOMMENDED: Use this tool FIRST when you need to find and tap UI elements. Takes a screenshot and extracts all visible text with tap-ready coordinates using OCR. ADVANTAGES over accessibility trees: (1) Works on ANY visible text regardless of accessibility labels, (2) Returns ready-to-use tapX/tapY coordinates - no conversion needed, (3) Faster than parsing accessibility hierarchies, (4) Works consistently across iOS and Android. USE THIS FOR: Finding buttons, labels, menu items, tab bars, or any text you need to tap. Simply find the text in the results and use its tapX/tapY with the tap command.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform to capture screenshot from
deviceIdNoOptional device ID (Android) or UDID (iOS). Uses first available device if not specified.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it's a read-only operation (implied by 'takes a screenshot'), returns coordinates ('tapX/tapY'), and has performance and compatibility advantages ('Faster than parsing accessibility hierarchies', 'Works consistently across iOS and Android'). However, it doesn't mention potential limitations like OCR accuracy, screen resolution dependencies, or error handling, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose and recommendation. It uses bullet-like advantages and clear usage instructions. However, it could be slightly more concise by integrating the advantages into a smoother narrative, and some phrasing is repetitive (e.g., 'tap-ready coordinates' mentioned multiple times).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (OCR-based UI interaction) and lack of annotations or output schema, the description does a good job of explaining what the tool does, when to use it, and its benefits. It covers the core functionality and differentiation from siblings. However, it doesn't detail the output format (e.g., structure of extracted text and coordinates) or error cases, which would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (platform and deviceId) with descriptions. The description adds no additional parameter semantics beyond what's in the schema. It doesn't explain how these parameters affect OCR processing or coordinate extraction. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'Takes a screenshot and extracts all visible text with tap-ready coordinates using OCR.' It specifies the verb ('takes', 'extracts'), resource ('screenshot', 'visible text'), and output ('tap-ready coordinates'). It clearly distinguishes from sibling tools like android_describe_all or ios_describe_point by emphasizing OCR-based text extraction with coordinates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines: 'RECOMMENDED: Use this tool FIRST when you need to find and tap UI elements' and 'USE THIS FOR: Finding buttons, labels, menu items, tab bars, or any text you need to tap.' It contrasts with alternatives by listing advantages over accessibility trees (e.g., 'Works on ANY visible text regardless of accessibility labels'), guiding the agent on when to prefer this tool over others like android_find_element or ios_find_element.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reload_appA

Reload the React Native app (triggers JavaScript bundle reload like pressing 'r' in Metro). Will auto-connect to Metro if no connection exists. IMPORTANT: React Native has Fast Refresh enabled by default - code changes are automatically applied without needing reload. Only use when: (1) logs/behavior don't reflect code changes after a few seconds, (2) app is in broken/error state, or (3) need to reset app state completely (navigation stack, context, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it triggers a JavaScript bundle reload, auto-connects to Metro if needed, and explains the impact (resets app state like navigation stack). However, it doesn't mention potential side effects like app downtime or error handling, leaving some gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: it starts with the core action, adds important behavioral context (auto-connect, Fast Refresh note), and ends with specific usage guidelines. Every sentence adds value without redundancy, making it easy to parse and apply.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation with side effects) and lack of annotations/output schema, the description does well by covering purpose, behavior, and usage guidelines. However, it doesn't detail the return value or error responses, which could be useful for an agent handling edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately focuses on usage context rather than parameters, earning a baseline score of 4 since it doesn't need to compensate for any schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Reload the React Native app') and the mechanism ('triggers JavaScript bundle reload like pressing 'r' in Metro'). It distinguishes this tool from siblings like 'connect_metro' or 'restart_http_server' by focusing on app reloading rather than connection management or server operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool vs. relying on Fast Refresh: it lists three specific scenarios (logs/behavior not reflecting changes, broken app state, need to reset app state). It also clarifies when NOT to use it (since Fast Refresh handles most code changes automatically), offering clear alternatives to avoid unnecessary reloads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restart_http_serverA

Note: HTTP server now runs in-process to share state. To apply code changes, restart the MCP session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the HTTP server runs in-process to share state and that restarting is needed for code changes, which adds useful context about the tool's effect and prerequisites. However, it doesn't mention potential side effects (e.g., temporary downtime, impact on other tools), rate limits, or error handling, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the key information (server runs in-process, restart for changes). Every sentence earns its place by providing essential context and usage guidance, with no wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (simple restart with no parameters), lack of annotations, and no output schema, the description is reasonably complete. It explains the purpose, when to use it, and the underlying reason (in-process server). However, it could benefit from mentioning what 'restart' entails (e.g., stops and starts the server) or confirmation of success, slightly reducing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description doesn't discuss parameters, which is appropriate, but it could briefly note the lack of inputs for clarity. Baseline for 0 params is 4, as it adequately handles the absence of parameters without adding unnecessary details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to restart the HTTP server, which is necessary to apply code changes due to the server running in-process. It specifies the verb ('restart') and resource ('HTTP server'), though it doesn't explicitly differentiate from sibling tools like 'reload_app' or 'connect_metro', which is why it's not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'To apply code changes, restart the MCP session.' It directly states the trigger condition (code changes) and implies an alternative (not using it when changes aren't needed), making it clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_metroA

Scan for running Metro bundler servers and automatically connect to any found React Native apps. This is typically the FIRST tool to call when starting a debugging session - it establishes the connection needed for other tools like get_logs, execute_in_app, and reload_app.

ParametersJSON Schema
NameRequiredDescriptionDefault
startPortNoStart port for scanning (default: 8081)
endPortNoEnd port for scanning (default: 19002)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explains the scanning behavior and connection establishment, but doesn't disclose important behavioral traits like error handling, timeout behavior, what happens if no servers are found, or whether this tool modifies system state. The description implies it's a setup/connection tool but lacks operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured with two sentences: the first states the core functionality, the second provides crucial usage context. Every word earns its place, and the most important information (purpose and when to use) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description does well by explaining the tool's role in the debugging workflow and its relationship to other tools. However, it doesn't describe what the tool returns (e.g., connection status, found servers list) or error conditions, leaving some gaps for a tool that establishes critical debugging connections.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (startPort, endPort) with defaults and descriptions. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('scan for running Metro bundler servers', 'automatically connect to any found React Native apps'), identifies the resource (Metro servers, React Native apps), and distinguishes it from siblings by establishing connections needed for other tools like get_logs, execute_in_app, and reload_app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('typically the FIRST tool to call when starting a debugging session') and why ('establishes the connection needed for other tools'), clearly positioning it as an initialization step before using sibling tools for debugging operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_logsC

Search console logs for text (case-insensitive)

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to search for in log messages
maxResultsNoMaximum number of results to return (default: 50)
maxMessageLengthNoMax characters per message (default: 500, set to 0 for unlimited)
verboseNoDisable all truncation and return full messages
formatNoOutput format: 'text' or 'tonl' (default, compact token-optimized format)tonl

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions case-insensitive matching, which is useful, but omits critical details: whether this is a read-only operation, how results are ordered or limited, potential performance impacts, or what the output looks like. For a search tool with 5 parameters and no output schema, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and includes a useful behavioral note (case-insensitivity). Every element earns its place, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no output schema, no annotations), the description is insufficient. It lacks details on output format, result structure, error conditions, or operational constraints. While concise, it doesn't provide enough context for an agent to confidently invoke the tool without guessing about its behavior or results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no parameter-specific information beyond implying text search functionality. This meets the baseline of 3, as the schema handles the heavy lifting, but the description doesn't enhance understanding of parameter interactions or use cases.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search console logs for text (case-insensitive)'. It specifies the verb ('search'), resource ('console logs'), and a key behavioral trait (case-insensitive matching). However, it doesn't explicitly differentiate from sibling tools like 'get_logs' or 'clear_logs', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_logs' (which likely retrieves logs without filtering) and 'clear_logs' (which modifies logs), the agent receives no explicit or implied direction about appropriate contexts, prerequisites, or trade-offs for choosing this search function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_networkC

Search network requests by URL pattern (case-insensitive)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlPatternYesURL pattern to search for
maxResultsNoMaximum number of results to return (default: 50)
formatNoOutput format: 'text' or 'tonl' (default, compact token-optimized format)tonl

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'case-insensitive' searching, which adds some context, but fails to describe critical behaviors: whether this is a read-only operation, what the output format entails (especially 'tonl'), potential rate limits, or error conditions. For a search tool with no annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core functionality. There is no wasted verbiage, and it directly communicates the tool's purpose without redundancy or unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., list of requests, details), how results are structured, or behavioral aspects like pagination or limitations. For a search tool with three parameters and no structured output documentation, more contextual information is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds minimal value beyond the schema by implying the search is 'case-insensitive', which relates to 'urlPattern' behavior. However, it doesn't explain parameter interactions or provide additional semantic context, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search network requests by URL pattern (case-insensitive)'. It specifies the verb ('Search'), resource ('network requests'), and key constraint ('by URL pattern, case-insensitive'). However, it doesn't explicitly differentiate from siblings like 'get_network_requests' or 'get_request_details', which may offer similar functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_network_requests' or 'search_logs', nor does it specify prerequisites, exclusions, or appropriate contexts. The agent must infer usage from the name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toggle_element_inspectorA

Toggle React Native's Element Inspector overlay programmatically. This is the same as manually doing: Dev Menu > Toggle Element Inspector. Useful for enabling inspector features without user interaction.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool toggles the inspector programmatically and mimics a manual action, which is helpful context. However, it lacks details on behavioral traits like side effects (e.g., whether it affects app state), permissions needed, or error conditions. The description does not contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by a practical analogy and use case. Both sentences earn their place by clarifying functionality and utility, with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is complete enough for basic understanding. It explains what the tool does and why to use it. However, it could be more complete by addressing potential behavioral nuances like toggle state persistence or compatibility issues, which are relevant for a debugging tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, maintaining focus on the tool's purpose. Baseline is 4 for 0 parameters, as the description adds value without unnecessary details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Toggle React Native's Element Inspector overlay programmatically') and the resource involved ('Element Inspector overlay'). It distinguishes from siblings by focusing on toggling the inspector rather than other debugging or interaction tools like 'get_inspector_selection' or 'inspect_component'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage ('Useful for enabling inspector features without user interaction') and references manual alternative ('same as manually doing: Dev Menu > Toggle Element Inspector'). However, it does not explicitly state when NOT to use this tool or name specific alternative tools from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 64 tool updatesv1.0.32
    • First observedandroid_describe_all
    • First observedandroid_describe_point
    • First observedandroid_find_element
    • First observedandroid_get_screen_size
    • First observedandroid_input_text
    • First observedandroid_install_app
    • First observedandroid_key_event
    • First observedandroid_launch_app
    • First observedandroid_list_packages
    • First observedandroid_long_press
    • First observedandroid_screenshot
    • First observedandroid_swipe
    • First observedandroid_tap
    • First observedandroid_tap_element
    • First observedandroid_wait_for_element
    • First observedclear_bundle_errors
    • First observedclear_logs
    • First observedclear_network
    • First observedconnect_metro
    • First observedensure_connection
    • First observedexecute_in_app
    • First observedfind_components
    • First observedget_apps
    • First observedget_bundle_errors
    • First observedget_bundle_status
    • First observedget_component_tree
    • First observedget_connection_status
    • First observedget_debug_server
    • First observedget_inspector_selection
    • First observedget_logs
    • First observedget_network_requests
    • First observedget_network_stats
    • First observedget_request_details
    • First observedget_screen_layout
    • First observedinspect_at_point
    • First observedinspect_component
    • First observedinspect_global
    • First observedios_boot_simulator
    • First observedios_button
    • First observedios_describe_all
    • First observedios_describe_point
    • First observedios_find_element
    • First observedios_input_text
    • First observedios_install_app
    • First observedios_key_event
    • First observedios_key_sequence
    • First observedios_launch_app
    • First observedios_open_url
    • First observedios_screenshot
    • First observedios_swipe
    • First observedios_tap
    • First observedios_tap_element
    • First observedios_terminate_app
    • First observedios_wait_for_element
    • First observedlist_android_devices
    • First observedlist_debug_globals
    • First observedlist_ios_simulators
    • First observedocr_screenshot
    • First observedreload_app
    • First observedrestart_http_server
    • First observedscan_metro
    • First observedsearch_logs
    • First observedsearch_network
    • First observedtoggle_element_inspector

TDQS

B3.4/5.0
Disambiguation3/5

The tool set has clear groupings (Android, iOS, React Native debugging, Metro connection, etc.) with distinct purposes within each group, but there is significant overlap between similar tools across platforms (e.g., android_describe_all and ios_describe_all) and between alternative methods (e.g., ocr_screenshot vs. accessibility-based tools). Descriptions help clarify, but agents may struggle to choose between overlapping options without deep domain knowledge.

Naming Consistency4/5

Tool names follow a consistent snake_case pattern throughout, with clear verb_noun structures (e.g., android_tap, get_logs, scan_metro). Minor deviations exist, such as ocr_screenshot using an acronym prefix and some tools having longer names (e.g., toggle_element_inspector), but the overall naming is predictable and readable.

Tool Count2/5

With 64 tools, the count is excessive for a single server, making it overwhelming and difficult to navigate. While the domain (React Native debugging with Android/iOS support) is broad, many tools are redundant or highly specialized, leading to a bloated interface that could be streamlined without losing functionality.

Completeness5/5

The tool set provides comprehensive coverage for React Native debugging, including connection management, log retrieval, network monitoring, component inspection, and device interaction for both Android and iOS. It supports full CRUD-like operations (e.g., install/launch/terminate apps, input text, swipe/tap) and handles edge cases like error recovery and OCR alternatives, leaving no obvious gaps for the intended purpose.

Maintenance

ActivityActive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Captures and stores console output from any process in SQLite with full-text search, enabling AI assistants to search logs, monitor errors, and analyze multi-process activity through natural language queries.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bridges React Native DevTools, enabling AI assistants to debug, profile, and inspect React Native applications through a standardized protocol.
    19
    4
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Acts as a proxy between your app and Reactotron, enabling AI assistants to read logs, inspect state, monitor network requests, and trigger custom commands.
    30
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server for tailing Re.Pack/Rspack dev server logs. Enables AI assistants to query build logs, find errors, and monitor compilation status.
    5
    10
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/igorzheludkov/execbro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server