MCP Mobile Server
Provides tools for Android development including device management, emulator control, APK installation, logcat debugging, and screenshot capture.
Integrates with Android Studio SDK for environment setup, virtual device creation and management, and build automation.
Offers comprehensive Flutter development tools including project creation, hot reload sessions, building, testing, dependency management, performance profiling, and automated environment setup.
Enables iOS development workflows with simulator management, device listing, screenshot capture, and app installation capabilities.
Integrates with Xcode for iOS simulator management, device orchestration, and iOS build processes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Mobile Serverstart a Flutter development session with hot reload"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Mobile Server — AI-Powered Mobile Development for Android, iOS, and Flutter
36 tools for mobile development automation, ready to use inside Claude Desktop and any MCP-compatible AI client.
What is this?
MCP Mobile Server is a Model Context Protocol server that gives AI assistants direct, structured access to your mobile development toolchain. It bridges Claude Desktop (and other MCP clients) to Flutter, Android SDK, and iOS/Xcode workflows through 36 typed tools and 10 high-level "super-tools" that orchestrate complete multi-step workflows.
Instead of switching between terminals and docs, you describe what you want in natural language and the server executes the right commands — with validation, error handling, and fallback strategies built in.
Supported platforms: Android · iOS · Flutter · macOS · Linux · Windows (partial)
Related MCP server: Specter MCP
Features
Category | Tools | What you can do |
Core / Health | 5 | Environment diagnostics, Flutter doctor, device discovery |
Device Management | 9 | List, create, start, and stop Android emulators and iOS simulators |
Flutter Development | 6 | Hot reload sessions, builds, tests, dependency management |
Utilities | 4 | Logcat, screenshots, simulator boot/shutdown |
Setup & Configuration | 2 | Automated Flutter and Android SDK environment setup |
Super-Tools (workflows) | 10 | Complete end-to-end workflows combining multiple atomic tools |
Super-Tools — complete workflows in one call
Tool | What it does |
| Selects best available device, runs doctor, starts hot reload — one command |
| Unit + widget + integration tests with coverage reporting |
| Multi-platform release builds (APK, App Bundle, IPA) |
| End-to-end: test → build → sign |
| Diagnoses and auto-fixes common Flutter build errors |
| Widget inspection session |
| Intelligent device orchestration across platforms |
| Device selection → APK install → launch → logcat in one step |
| AVD create → start → wait → ready |
| Boot → wait → ready → screenshot lifecycle management |
Security built in
All shell commands are validated against an allowlist before execution
Dangerous pattern detection blocks injection attempts
Path traversal protection on all file arguments
Runtime input validation via Zod
Configurable timeouts on long-running processes
Requirements
Requirement | Version |
Node.js | 18.0.0 or later |
npm or yarn | any recent version |
Flutter SDK | 3.0+ (for Flutter tools) |
Android SDK / Android Studio | any recent (for Android tools) |
Xcode | 14+ on macOS (for iOS tools) |
You only need the SDKs for the platforms you work on. The server starts and serves tools even when some SDKs are absent.
Installation
Option 1 — Run with npx (no install needed)
npx @cristianoaredes/mcp-mobile-serverOption 2 — Install globally
npm install -g @cristianoaredes/mcp-mobile-server
mcp-mobile-serverOption 3 — Build from source
git clone https://github.com/cristianoaredes/mcp-mobile-server.git
cd mcp-mobile-server
npm install
npm run build
npm startClaude Desktop Setup
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"mobile-dev": {
"command": "npx",
"args": ["@cristianoaredes/mcp-mobile-server"]
}
}
}Restart Claude Desktop after saving. The 36 mobile development tools will appear automatically.
Usage Examples
Check your environment
Use the health_check tool to verify the mobile development server is workingRun flutter_doctor to check my Flutter setupWork with devices
List all connected Android devices and iOS simulatorsStart a Flutter development session with hot reload on the best available deviceBuild and test
Run the full test suite for my Flutter project at /path/to/projectBuild release versions for Android and iOSFix build problems
My Flutter app won't build. Use flutter_fix_common_issues to diagnose and fix it.Validate the installation from the command line
# After building from source:
npm run mcp:validate
# Expected output:
# ✅ Server configuration is valid
# ✅ 36 tools registeredProject Structure
src/
server.ts # MCP server entry point
tools/
android.ts # Android SDK tools
ios.ts # iOS / Xcode / Simulator tools
flutter.ts # Flutter SDK tools
super-tools.ts # High-level workflow automation
setup-tools.ts # Environment setup tools
utils/
process.ts # Process execution and tracking
security.ts # Command validation and sandboxing
fallbacks.ts # Fallback strategies (ADB → native-run, etc.)
tool-categories.ts # Tool registryThe server communicates over stdio using JSON-RPC 2.0, the standard MCP transport.
Contributing
# Clone and install
git clone https://github.com/cristianoaredes/mcp-mobile-server.git
cd mcp-mobile-server
npm install
# Run in development mode (watch)
npm run dev
# Run tests
npm test
# Run linter and full CI check
npm run ciSee CONTRIBUTING.md for guidelines and docs/ for the full documentation set.
Documentation
Resource | Description |
Get running in under 5 minutes | |
All 36 tools with parameters and examples | |
System design, security layer, and ADRs | |
Android development guide | |
iOS development guide | |
Flutter development guide | |
Common issues and solutions |
Troubleshooting
Flutter not found
# Run the automated setup tool
# In Claude Desktop: "Use flutter_setup_environment to install Flutter"Android SDK not configured
# In Claude Desktop: "Use android_sdk_setup to configure Android"No devices available
# List what's available
# "Use android_list_emulators and ios_list_simulators to see available devices"
# Or start a new one
# "Use android_start_emulator to launch an Android emulator"Claude Desktop not recognizing the server
Verify the config file path is correct for your OS
Check the JSON is valid (no trailing commas)
Restart Claude Desktop completely
Ask Claude: "Use health_check to verify the mobile server"
License
MIT — free to use, modify, and distribute.
Available Tools
31 toolsandroid_create_avdC
Create a new Android Virtual Device (AVD)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | AVD name (alphanumeric and underscores only) | |
| systemImageId | Yes | System image package ID | |
| device | No | Device definition (optional) | |
| sdcard | No | SD card size (e.g., 512M, 1G) |
TDQS
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 action ('Create') but does not explain what happens after creation (e.g., whether the AVD is started automatically, if it persists, or any permissions required). For a creation tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 is front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of creating an AVD (which may involve dependencies like system images or SDK setup), the description is insufficient. No annotations exist to cover behavioral aspects, and there is no output schema to explain return values. The description alone does not provide enough context for effective use, especially compared to sibling tools that might interact with AVDs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for all 4 parameters (e.g., 'name' and 'systemImageId' are required, 'device' is optional). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('Android Virtual Device (AVD)'), making the purpose immediately understandable. However, it does not differentiate from sibling tools like 'android_start_emulator' or 'flutter_launch_emulator', which might involve AVDs in different contexts, so it lacks explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 does not mention prerequisites (e.g., needing an installed Android SDK or system images), nor does it clarify scenarios where this tool is appropriate compared to siblings like 'android_list_emulators' or 'flutter_setup_environment'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_install_apkC
Install an APK file to an Android device or emulator
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | Device serial number | |
| apkPath | Yes | Path to APK file | |
| options | No |
TDQS
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 'Install' which implies a write/mutation operation, but doesn't disclose critical behavioral aspects: whether this requires device permissions, if it's destructive to existing apps, what happens on failure, or any rate limits. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with this level of complexity and is perfectly front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 inadequate. It doesn't cover what happens after installation (success/failure indicators), doesn't mention dependencies like ADB availability, and provides minimal context about the three parameters. Given the complexity of device operations, more completeness is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 of 3 parameters documented), so the baseline is 3. The description mentions 'APK file' which aligns with the 'apkPath' parameter, but adds no additional semantic context beyond what the schema provides for any parameters. It doesn't explain the significance of device serial numbers or option behaviors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Install') and target ('APK file to an Android device or emulator'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'native_run_install_app' or 'flutter_run', which might have overlapping functionality in mobile app deployment contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings like 'native_run_install_app' and 'flutter_run' that might handle app installation in different ways, there's no indication of prerequisites, target scenarios, or exclusions for this Android-specific APK installer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_list_devicesA
List connected Android devices and emulators (supports ADB fallback to native-run)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the tool's behavior of listing connected items and mentions fallback support, which adds some context. However, it lacks details on output format, error handling, or performance characteristics, leaving gaps in behavioral understanding for a tool with potential environment dependencies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List connected Android devices and emulators') and adds a useful behavioral note ('supports ADB fallback to native-run') without any wasted words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 minimally adequate. It covers the basic purpose and a key behavioral trait, but for a tool that interacts with development environments, more context on output format or error cases would enhance completeness, though not strictly required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 here. A baseline of 4 is applied as it doesn't need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('connected Android devices and emulators'), making the purpose immediately understandable. It distinguishes from some siblings like 'android_list_emulators' by including both devices and emulators, but doesn't explicitly differentiate from 'flutter_list_devices' or 'native_run_list_devices' in terms of scope or method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'ADB fallback to native-run', suggesting it's for Android development environments. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'flutter_list_devices' or 'native_run_list_devices', leaving the choice ambiguous for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_list_emulatorsB
List available Android emulators
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 what the tool does but lacks behavioral details: it doesn't specify output format (e.g., list of names, statuses), whether it requires specific permissions or setup, if it's read-only (implied but not stated), or any rate limits. The description is minimal and doesn't add meaningful context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action ('List available Android emulators') and doesn't include unnecessary details. Every word earns its place, making it highly concise and well-structured for such a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is minimal but incomplete. It doesn't explain what 'available' means (e.g., installed, running), the return format, or any dependencies. For a tool in a context with many siblings (like Android/Flutter development), more detail would help the agent understand its role and output, but it lacks this contextual richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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% (since there are no parameters to describe). The description doesn't need to add parameter information, so it meets the baseline of 4 for having no parameters. No additional semantics are required or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Android emulators') with the qualifier 'available' indicating current status. It distinguishes from sibling tools like android_list_devices (which lists physical devices) and android_start_emulator (which starts one), though not explicitly. However, it doesn't fully differentiate from all siblings like flutter_list_devices which might overlap in concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 Android SDK setup), when it's appropriate (e.g., before starting an emulator), or contrast with siblings like android_list_devices or flutter_list_devices. Usage is implied by the name 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.
android_logcatC
Capture Android logcat output from device or emulator
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | Device serial number | |
| filter | No | Log filter (e.g., *:E for errors only) | |
| lines | No | Number of log lines to capture | |
| clear | No | Clear logcat buffer before capturing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but provides minimal behavioral context. It mentions capturing output but doesn't disclose what happens during capture (e.g., blocking vs. streaming, timeout behavior, permission requirements, or what 'capture' entails operationally). The description is accurate but insufficient for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 resource, making it immediately understandable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the captured output looks like, potential side effects (like buffer clearing), error conditions, or dependencies. The context demands more detail for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional parameter semantics beyond implying capture action. Baseline 3 is appropriate since the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('capture') and resource ('Android logcat output'), specifying it works from 'device or emulator'. It distinguishes from obvious non-siblings like screenshot or installation tools, but doesn't explicitly differentiate from other log-related tools (though none appear 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites (e.g., device must be connected/available), nor does it suggest when other tools might be more appropriate for related tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_screenshotC
Capture screenshot from Android device or emulator
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | Device serial number (use android_devices_list to get available devices) | |
| outputPath | Yes | Local path where screenshot will be saved (e.g., ./screenshot.png) | |
| options | No |
TDQS
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 the action ('Capture screenshot') but lacks details on behavioral traits: it doesn't specify if this requires device permissions, whether it's a blocking operation, potential errors (e.g., device not found), or what happens on success (e.g., file saved locally). For a tool with no annotations, 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.
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 and appropriately sized, with every word contributing to understanding the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 tool that performs an action (screenshot capture) with potential side effects, the description is incomplete. It lacks details on prerequisites, error handling, output behavior (e.g., file saved confirmation), and doesn't compensate for the missing structured data, making it inadequate for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, with parameters like 'serial' and 'outputPath' well-documented in the schema. The description adds no parameter-specific semantics beyond implying screenshot capture. It doesn't explain the 'options' object or provide context beyond what the schema offers, so it meets the baseline for moderate schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Capture screenshot') and target ('from Android device or emulator'), which is specific and unambiguous. It distinguishes from iOS screenshot tools (like ios_take_screenshot) but doesn't explicitly differentiate from other Android tools like android_list_devices or android_logcat, though the purpose is distinct by nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites (e.g., device must be connected or emulator running), nor does it compare to similar tools like ios_take_screenshot or other Android utilities. Usage is implied by the tool name and purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_sdk_setupC
Setup Android SDK and configure environment for Android development
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform | check |
| components | No | SDK components to install (platform-tools, build-tools, platforms, etc.) |
TDQS
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 sets up and configures the Android SDK, implying it may install software or modify system settings, but doesn't disclose critical details like whether it requires admin permissions, has side effects, is idempotent, or handles errors. This is inadequate for a tool that likely performs system-level operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words, though it could be slightly more specific (e.g., mentioning typical use cases) to improve clarity without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (likely involving system changes), lack of annotations, and no output schema, the description is insufficient. It doesn't explain what 'setup' entails (e.g., downloads, path configuration), potential outcomes, or error handling, leaving significant gaps for an agent to use it safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for both parameters (action and components), including enums and defaults. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Setup') and resource ('Android SDK'), and mentions configuring the environment for Android development. However, it doesn't explicitly differentiate from sibling tools like 'flutter_setup_environment' or 'android_create_avd', which reduces clarity about its unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., before other Android/Flutter tools), or exclusions, leaving the agent to infer usage from the tool name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_start_emulatorC
Start an Android emulator
| Name | Required | Description | Default |
|---|---|---|---|
| avdName | Yes | AVD name to start | |
| options | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states the action ('Start') without mentioning potential side effects (e.g., resource consumption, startup time), success/failure conditions, or interactions with other tools like 'android_stop_emulator'. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words, making it highly concise and front-loaded. It efficiently communicates the core action without unnecessary elaboration, earning a top score for brevity and clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (starting an emulator with configurable options), lack of annotations, and no output schema, the description is incomplete. It omits critical context such as expected outcomes (e.g., emulator boot success), error handling, or dependencies on other tools like 'android_create_avd'. This leaves the agent with insufficient information for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, with the 'avdName' parameter well-documented but the 'options' object lacking descriptions for its nested properties. The description adds no parameter semantics beyond the schema, failing to compensate for the coverage gap. However, with two parameters and some schema documentation, it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Start an Android emulator' clearly states the verb ('Start') and resource ('Android emulator'), making the purpose immediately understandable. However, it does not distinguish this tool from its sibling 'flutter_launch_emulator', which likely serves a similar function in a different context, preventing a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_list_emulators' (for checking status) or 'flutter_launch_emulator' (for Flutter-specific workflows). It also lacks prerequisites, such as requiring an existing AVD or proper SDK setup, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_stop_emulatorC
Stop a running Android emulator
| Name | Required | Description | Default |
|---|---|---|---|
| avdName | Yes | AVD name to stop |
TDQS
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 the action ('Stop') but doesn't describe what happens during the stop process (e.g., graceful shutdown vs. force kill), whether it requires specific permissions, potential side effects, or what the response looks like (e.g., success/failure message). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It front-loads the core action and target, making it easy to parse quickly. Every word earns its place by conveying essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., how stopping works, error handling), usage context, and expected outcomes, which are critical for an agent to invoke it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'avdName' parameter clearly documented as 'AVD name to stop'. The description doesn't add any meaning beyond this, such as explaining what an AVD is or providing examples. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Stop') and target ('a running Android emulator'), making the purpose immediately understandable. It distinguishes from siblings like 'android_start_emulator' by specifying the opposite operation, though it doesn't explicitly differentiate from other stopping tools like 'ios_shutdown_simulator' 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.
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 emulator must be running), when not to use it, or how it relates to siblings like 'android_list_emulators' for checking status or 'ios_shutdown_simulator' for iOS devices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_buildC
Build Flutter app for specific target platform
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) | |
| target | Yes | Build target platform | |
| buildMode | No | Build mode | |
| flavor | No | Build flavor |
TDQS
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. 'Build' implies a potentially long-running, resource-intensive process that generates output files, but the description doesn't mention execution time, side effects (e.g., creating build artifacts), error handling, or output location. It lacks critical context for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 word earns its place, making it easy to parse quickly. No structural issues or redundancy are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a build tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success status, build artifacts, error messages), behavioral traits like timeouts or file system changes, or how it differs from siblings like flutter_release_build. This leaves significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for all parameters (cwd, target, buildMode, flavor). The description adds no additional parameter semantics beyond implying that 'target platform' relates to the 'target' parameter. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Build') and resource ('Flutter app') with the specific scope 'for specific target platform'. It distinguishes from siblings like flutter_clean, flutter_run, and flutter_test by focusing on compilation rather than cleaning, execution, or testing. However, it doesn't explicitly differentiate from flutter_release_build, which appears to be a specialized sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 flutter_release_build or flutter_run. It doesn't mention prerequisites (e.g., Flutter project setup), exclusions, or contextual triggers. The agent must infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_cleanB
Clean Flutter build cache and generated files
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) |
TDQS
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 action ('clean') but doesn't describe what 'clean' entails (e.g., irreversible deletion, time-consuming operation, potential side effects on project state), nor does it mention permissions, rate limits, or output behavior. This is inadequate for a tool that likely modifies the file system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('clean') and resources. There is no wasted verbiage, repetition, or unnecessary elaboration, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a tool that likely performs file system operations), lack of annotations, and no output schema, the description is incomplete. It fails to address critical aspects like what 'clean' means in practice, safety considerations, or expected outcomes, leaving significant gaps for the agent to infer behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what the schema provides (schema coverage is 100% with a clear description for 'cwd'). However, with only one parameter, the baseline is high, and the description doesn't contradict or confuse the schema, so it scores well despite not adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('clean') and the resources ('Flutter build cache and generated files'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'flutter_fix_common_issues' or 'flutter_doctor' which might also perform cleanup operations, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 build failures, before releases), exclusions, or how it compares to siblings like 'flutter_fix_common_issues' for cache-related issues. This leaves the agent with minimal context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_dev_sessionB
Complete Flutter dev setup: check env, list devices, select best device, run with hot reload
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) | |
| target | No | Target dart file (e.g., lib/main.dart) | |
| preferPhysical | No | Prefer physical device over emulator |
TDQS
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 actions like 'run with hot reload' but lacks details on permissions needed, whether it modifies files, error handling, or output format. For a multi-step setup 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the main purpose ('Complete Flutter dev setup') followed by key actions. Every phrase earns its place with no wasted words, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multi-step setup) and lack of annotations or output schema, the description is minimally adequate. It outlines the sequence of actions but misses details like what 'best device' means, how errors are handled, or what the output contains. It meets basic needs but leaves gaps for an agent to operate effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how 'preferPhysical' affects device selection. 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.
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 ('check env, list devices, select best device, run with hot reload') and identifies the resource as Flutter development setup. It distinguishes from siblings like 'flutter_run' by emphasizing comprehensive setup rather than just execution, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('Complete Flutter dev setup') but doesn't explicitly state when to use this tool versus alternatives like 'flutter_run' or 'flutter_setup_environment'. No exclusions or prerequisites are mentioned, leaving the agent to infer based on the described functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_doctorB
Run Flutter doctor to check development environment setup
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but only states what the tool does without disclosing behavioral traits. It doesn't mention if this is a read-only check, if it modifies settings, requires specific permissions, has side effects, or provides output details, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's action and purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 adequate but lacks depth. It explains the basic purpose but doesn't cover behavioral aspects or usage context, which could be improved for better agent guidance, though it meets the minimum for such a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 information is needed. The description doesn't add any parameter details, which is acceptable given the baseline, but it could have mentioned if any implicit inputs are involved, though not required for a high score in this case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Run') and resource ('Flutter doctor'), explaining it checks development environment setup. However, it doesn't explicitly differentiate from sibling tools like 'flutter_setup_environment' or 'health_check', which might have overlapping functionality, so it misses 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify if this should be used before other Flutter commands, or how it differs from 'flutter_setup_environment' or 'health_check' in the sibling list, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_fix_common_issuesC
Auto-fix common issues: clean, pub get, pod install, gradle sync, invalidate caches
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) | |
| deep | No | Perform deep cleaning (slower but more thorough) |
TDQS
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 lists actions but lacks behavioral details: it doesn't specify execution order, whether operations are sequential/parallel, error handling, time estimates, or side effects (e.g., data loss from cleaning). The description is functional but misses critical operational context for a multi-step tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: the first phrase ('Auto-fix common issues') captures the core purpose, followed by a comma-separated list of actions. Every word earns its place with zero redundancy, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple operations) and lack of annotations/output schema, the description is incomplete. It omits behavioral transparency details, usage context, and result expectations. For a tool that performs several potentially destructive actions, more guidance is needed to ensure safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters (cwd, deep). The description adds no parameter-specific information beyond what's in the schema, such as how 'deep' affects each sub-action. Baseline 3 is appropriate as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Auto-fix common issues') and lists the concrete actions it performs (clean, pub get, pod install, gradle sync, invalidate caches). It distinguishes itself from siblings like 'flutter_clean' or 'flutter_pub_get' by bundling multiple fixes, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 specify scenarios (e.g., after dependency changes, build failures) or prerequisites, nor does it mention when to use individual sibling tools like 'flutter_clean' instead. Usage is implied but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_launch_emulatorC
Launch a Flutter emulator
| Name | Required | Description | Default |
|---|---|---|---|
| emulatorId | Yes | Emulator ID to launch |
TDQS
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 ('launch') but doesn't describe what happens during launch (e.g., startup time, potential errors, whether it's blocking/non-blocking), what permissions are needed, or what happens if the emulator is already running. This leaves significant gaps for a tool that performs a system operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool with one parameter 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that launches system emulators with no annotations and no output schema, the description is insufficient. It doesn't explain what constitutes a successful launch, what errors might occur, whether the tool waits for emulator readiness, or what the expected outcome should be. Given the complexity of emulator operations and lack of structured metadata, more behavioral context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, with the single parameter 'emulatorId' clearly documented in the schema. The description doesn't add any additional parameter context beyond what's already in the schema, 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.
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 ('Flutter emulator'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from the sibling 'android_start_emulator' or explain the difference between Flutter and Android emulators in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'android_start_emulator' or 'flutter_run'. The description doesn't mention prerequisites (e.g., needing an emulator ID from 'flutter_list_devices' or 'android_list_emulators') or contextual constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_list_devicesB
List connected devices and emulators available for Flutter development
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 the tool lists devices and emulators but does not specify whether this includes only active ones, the format of the output, potential errors, or any side effects. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's purpose without any unnecessary words or fluff. It is appropriately sized and front-loaded, making it efficient and easy to understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 adequate as a basic overview. However, it lacks details on output format, error handling, or differentiation from siblings, which would be helpful for an AI agent. It meets the minimum viable standard but has clear gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description does not need to add parameter details, so it meets the baseline expectation for such cases. No additional semantic information is required or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the target resources ('connected devices and emulators available for Flutter development'), providing a specific verb+resource combination. However, it does not explicitly distinguish this tool from its sibling 'android_list_devices' or 'ios_list_simulators', which reduces the score from a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_list_devices' or 'ios_list_simulators', nor does it mention any prerequisites or context for usage. It merely states what the tool does without indicating appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_pub_getC
Install Flutter project dependencies (pub get)
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) |
TDQS
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 the action ('Install') but doesn't describe what 'pub get' does beyond that (e.g., downloads packages, updates lockfile, may require internet). It lacks details on side effects, error handling, or typical runtime. This is inadequate for a tool with potential network/disk operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 information. It's front-loaded and appropriately sized for a simple command-line tool, with every word earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (executing a Flutter command with potential side effects), no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns (e.g., success/failure, output logs) or behavioral aspects like idempotency. For a dependency installation tool, more context on outcomes and errors is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'cwd' well-documented in the schema as 'Working directory (Flutter project root)'. The description adds no parameter-specific information beyond what the schema provides, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Flutter project dependencies') with the specific command 'pub get'. It distinguishes from siblings like 'flutter_clean' or 'flutter_build' by focusing on dependency installation. However, it doesn't explicitly differentiate from similar tools like 'flutter_setup_environment' which might also handle dependencies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 valid Flutter project), when to run it (e.g., after adding dependencies), or what happens if dependencies are already installed. There's no comparison to siblings like 'flutter_fix_common_issues' for dependency resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_release_buildC
Build release versions for all platforms: APK, AAB, IPA with signing
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) | |
| platforms | No | Platforms to build for | |
| obfuscate | No | Obfuscate Dart code |
TDQS
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 'with signing', hinting at authentication or key requirements, but doesn't specify what signing entails (e.g., needing keystore files or certificates). It also omits critical details like whether this is a destructive operation (e.g., overwriting files), expected runtime, output locations, or error handling. For a build tool with no annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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. It directly states what the tool does, making it easy to scan and understand quickly. Every part of the sentence earns its place by specifying key details like platforms and signing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a build tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., side effects, runtime), output details (e.g., where built files are saved), and usage context (e.g., dependencies or prerequisites). While concise, it doesn't provide enough context for an agent to confidently invoke this tool without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 (cwd, platforms, obfuscate) with descriptions and defaults. The description adds no parameter-specific information beyond implying platforms via 'APK, AAB, IPA', which aligns with the schema's enum values. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Build release versions for all platforms: APK, AAB, IPA with signing'. It specifies the verb ('Build'), resource ('release versions'), and target platforms, distinguishing it from sibling tools like 'flutter_build' (which likely handles general builds) and 'flutter_run' (which runs apps). However, it doesn't explicitly differentiate from 'flutter_build' beyond mentioning release versions and signing, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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., requiring a Flutter project setup or signing keys), when not to use it (e.g., for debug builds), or direct alternatives among siblings like 'flutter_build'. This lack of context makes it unclear how to choose between this and other build-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_runC
Start a Flutter development session (hot reload enabled)
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) | |
| deviceId | No | Target device ID | |
| target | No | Target dart file (e.g., lib/main.dart) | |
| flavor | No | Build flavor | |
| debugPort | No | Debug port number |
TDQS
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 'hot reload enabled', which hints at interactive development behavior, but lacks details on permissions, side effects (e.g., if it starts a server or modifies files), error handling, or runtime characteristics. This is inadequate for a tool that likely initiates a complex development process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and key feature ('hot reload enabled') with zero wasted words. It is appropriately sized for the tool's complexity and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of starting a Flutter development session, no annotations, and no output schema, the description is insufficient. It lacks details on what the tool returns (e.g., process ID, logs), how it behaves over time, or dependencies, making it incomplete for effective agent use in a development context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 five parameters. The description adds no parameter-specific information beyond what's in the schema, such as examples or constraints. Baseline 3 is appropriate as the schema handles the heavy lifting, but the description doesn't enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start') and resource ('Flutter development session') with a specific feature ('hot reload enabled'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'flutter_dev_session' or 'flutter_build', which could have overlapping or related functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 many sibling tools like 'flutter_dev_session', 'flutter_build', and 'flutter_test', there is no indication of context, prerequisites, or exclusions for using 'flutter_run', leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_setup_environmentC
Complete Flutter SDK installation and environment setup with automatic path configuration
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform (check status, install Flutter, configure paths, or full setup) | check |
| channel | No | Flutter channel to install | stable |
| installPath | No | Custom installation path (default: ~/development/flutter) | |
| autoConfig | No | Automatically configure shell environment |
TDQS
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 'automatic path configuration,' which hints at system-level changes, but doesn't specify whether this requires admin permissions, is reversible, or has side effects like modifying shell files. For a setup tool that likely involves system modifications, this lack of detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality: 'Complete Flutter SDK installation and environment setup with automatic path configuration.' It wastes no words and directly communicates the tool's purpose, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a setup tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, side effects, or what happens on failure, nor does it explain the return values or success criteria. For a tool that performs system-level operations, more context is needed to ensure safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for all 4 parameters, including enums and defaults. The description adds no additional parameter semantics beyond what's in the schema, such as explaining interactions between parameters or usage examples. Given the high schema coverage, a 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Complete Flutter SDK installation and environment setup with automatic path configuration.' It specifies the verb ('installation and environment setup') and resource ('Flutter SDK'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'flutter_doctor' or 'android_sdk_setup', which might have overlapping functionality, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 any prerequisites, conditions, or comparisons with sibling tools such as 'flutter_doctor' (which checks Flutter setup) or 'android_sdk_setup' (which handles Android SDK). Without this context, users might struggle to choose the right tool for their needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_testC
Run Flutter tests with optional coverage
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) | |
| testFile | No | Specific test file to run (optional) | |
| coverage | No | Enable test coverage |
TDQS
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 mentions running tests with optional coverage but lacks details on execution behavior (e.g., output format, error handling, or dependencies like Flutter SDK). This is insufficient for a tool with potential side effects like test execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Run Flutter tests') and adds a useful qualifier ('with optional coverage'). There is no wasted verbiage, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. It doesn't explain what happens during test execution, what outputs or errors to expect, or how it interacts with other tools like 'flutter_test_suite'. For a tool that runs tests, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional semantic context beyond implying coverage is optional, which is already covered by the schema. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run Flutter tests') and resource ('Flutter tests'), with an optional feature ('with optional coverage'). It distinguishes from siblings like 'flutter_test_suite' by focusing on running tests rather than managing test suites, though the distinction could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'flutter_test_suite' or other testing-related tools. The description mentions coverage as optional but doesn't specify scenarios or prerequisites for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_test_suiteC
Run complete test suite: unit tests, widget tests, integration tests with coverage report
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) | |
| coverage | No | Generate coverage report | |
| integrationTests | No | Include integration tests |
TDQS
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 coverage reports and test types but lacks critical details like execution time, resource requirements, output format, error handling, or whether it modifies project files. For a tool that runs comprehensive tests, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and lists key features without unnecessary words. Every part of the sentence contributes directly to understanding the tool's scope and capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of running a complete test suite with multiple test types and coverage, and with no annotations or output schema, the description is inadequate. It doesn't explain what the tool returns, how results are presented, or any behavioral nuances, leaving significant gaps for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaning about parameters beyond implying that 'coverage' and 'integrationTests' are part of the suite, which aligns with the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run complete test suite') and specifies the scope ('unit tests, widget tests, integration tests with coverage report'), which distinguishes it from the sibling 'flutter_test' tool that likely runs a subset. However, it doesn't explicitly differentiate from 'flutter_test' in the description text itself, 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.
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 'flutter_test' or other testing-related tools. It mentions what the tool does but offers no context about prerequisites, dependencies, or scenarios where it's preferred over simpler options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flutter_versionB
Get Flutter SDK version information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 what the tool does but doesn't describe how it behaves—such as whether it requires Flutter installation, returns structured data, or has any side effects. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's function without any unnecessary words. It is front-loaded and efficiently communicates the essential information, making it perfectly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose but lacks details on behavior, output format, or integration context, which could be helpful for an agent to use it effectively in a broader workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100%, so no parameter documentation is needed. The description appropriately focuses on the tool's purpose without redundant parameter details, earning a high baseline score for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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') and resource ('Flutter SDK version information'), making it immediately understandable. However, it doesn't differentiate itself from potential sibling tools like 'flutter_doctor' which might also provide version information, 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.
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 'flutter_doctor' that might overlap in functionality, there's no indication of when this specific version check is preferred or what context warrants its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkB
Check server health, tool availability and environment status
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | Include detailed tool analysis and recommendations |
TDQS
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 what the tool checks but doesn't describe how it performs these checks, what permissions are required, whether it's read-only or has side effects, what the output format is, or any rate limits. For a diagnostic tool with zero annotation coverage, this leaves significant 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence with three clear components. Every word earns its place, and it's front-loaded with the core purpose. There's no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (health checking can involve multiple subsystems), no annotations, no output schema, and 100% parameter schema coverage, the description is minimally adequate. It tells what the tool does but lacks details about what 'health' means specifically, what tools are checked, or what the environment status includes. For a diagnostic tool in a mobile development context, more context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description doesn't mention the 'verbose' parameter at all, but with 100% schema description coverage and only one optional parameter, the schema adequately documents it. The baseline for high schema coverage is 3, but with just one parameter that's well-described in the schema, the description's omission is less critical, warranting a slightly higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('check') and resources ('server health, tool availability and environment status'). It distinguishes from sibling tools by focusing on system diagnostics rather than Android/iOS/Flutter development operations. However, it doesn't explicitly differentiate from potential alternative health-check tools that might exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 considerations, or what scenarios warrant its use. Given the sibling tools are all mobile development related, this health check tool likely serves a different context, but this isn't explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ios_boot_simulatorC
Boot an iOS simulator
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Simulator UDID |
TDQS
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 the action ('Boot') but doesn't explain what booting entails (e.g., starting a virtual device, potential delays, or system requirements), whether it's idempotent, or what happens on failure. 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.
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 resource, making it easy to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 like error handling, side effects, or return values, leaving the agent with insufficient context to use the tool effectively beyond the basic action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 clearly documented as 'Simulator UDID'. The description doesn't add any additional meaning beyond this, such as where to obtain the UDID or format details, which aligns with the baseline score when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Boot an iOS simulator' clearly states the verb ('Boot') and resource ('iOS simulator'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'ios_shutdown_simulator' or 'flutter_launch_emulator' beyond the iOS focus, 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.
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 simulator UDID from 'ios_list_simulators'), when not to use it (e.g., if already booted), or how it relates to sibling tools like 'ios_shutdown_simulator' or 'flutter_launch_emulator'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ios_list_simulatorsB
List available iOS simulators
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 'List' implies a read-only operation, it doesn't specify whether this requires specific permissions, how the data is formatted (e.g., JSON list, table), if there are rate limits, or what happens if no simulators are available. 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.
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 any fluff. It's front-loaded with the core action ('List') and resource ('iOS simulators'), making it immediately scannable. Every word earns its place, and there's no redundancy or wasted verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations, no output schema), the description is minimally adequate. It states what the tool does but lacks context about behavioral traits, output format, or integration with sibling tools. Without annotations or an output schema, the description should ideally provide more guidance on what to expect, but it meets the bare minimum for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 compensate for any parameter gaps, and it correctly implies no inputs are required. A baseline of 4 is appropriate since the description aligns with the empty schema without adding unnecessary detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List available iOS simulators' clearly states the verb ('List') and resource ('iOS simulators'), making the purpose immediately understandable. It distinguishes from sibling tools like 'ios_boot_simulator' and 'ios_shutdown_simulator' by focusing on listing rather than controlling simulators. However, it doesn't specify the scope (e.g., all simulators vs. only booted ones) 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.
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., whether Xcode must be installed), differentiate from similar tools like 'flutter_list_devices' or 'native_run_list_devices', or indicate when this tool is preferred over others. The agent must 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.
ios_shutdown_simulatorC
Shutdown an iOS simulator
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Simulator UDID |
TDQS
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 action without behavioral details. It doesn't disclose if shutdown is destructive, requires specific simulator states, has side effects, or what happens on success/failure, leaving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. Every word contributes to stating the tool's purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 no annotations and no output schema), the description is incomplete. It lacks details on behavioral traits, usage context, and expected outcomes, failing to provide enough information for safe and 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the parameter 'udid' documented as 'Simulator UDID', so the schema provides complete parameter info. The description adds no additional meaning beyond the schema, resulting in a baseline score of 3 as it doesn't compensate but schema is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Shutdown an iOS simulator' clearly states the action (shutdown) and target resource (iOS simulator), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'android_stop_emulator' or 'ios_boot_simulator' beyond the iOS platform mention, missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'android_stop_emulator' or 'ios_boot_simulator', nor does it mention prerequisites such as needing a booted simulator. The description only states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ios_take_screenshotC
Take a screenshot of an iOS simulator
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Simulator UDID | |
| path | Yes | Absolute path to save screenshot |
TDQS
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 the action but doesn't mention critical details like whether the simulator must be running, if it requires specific permissions, potential side effects (e.g., file overwriting), or error handling. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It's front-loaded with the core action and target, making it highly efficient and easy to parse, which is ideal for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that performs a mutation (screenshot capture) with no annotations and no output schema, the description is incomplete. It doesn't explain what happens on success (e.g., file saved confirmation) or failure, nor does it cover behavioral aspects like simulator state requirements, leaving the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters (UDID and path). The description adds no additional semantic context beyond implying these are needed, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Take a screenshot') and target ('of an iOS simulator'), which is specific and unambiguous. However, it doesn't differentiate from the sibling 'android_screenshot' tool, which performs a similar function for Android, so it doesn't fully distinguish from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'ios_list_simulators' for checking available simulators. It lacks context about prerequisites (e.g., needing a booted simulator) or exclusions, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mobile_device_managerC
Smart device management: list all, recommend best, auto-start if needed
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform | recommend |
| platform | No | Target platform | any |
TDQS
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 mentions 'auto-start if needed' which hints at a potential mutation (starting devices), but doesn't disclose behavioral traits like permissions required, side effects, rate limits, or what 'recommend best' entails. For a tool with actions that could include mutations (ensure/auto-start), this lack of transparency is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a single phrase listing three actions, which is efficient and front-loaded. However, it could be more structured by separating the actions or providing slight elaboration. There's no wasted text, but it borders on being too terse for a tool with multiple functionalities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple actions including potential mutations), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'recommend best' means, what 'auto-start if needed' entails, or how results are returned. For a tool that could perform different operations, more context is needed to guide the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (action and platform) well-documented in the schema including enums and defaults. The description adds no additional meaning beyond what the schema provides, such as explaining the semantics of 'ensure' or how 'recommend' works. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool performs 'smart device management' with three actions (list, recommend, auto-start), which gives a general purpose. However, it's vague about what 'smart device management' entails and doesn't clearly distinguish this tool from sibling tools like android_list_devices, flutter_list_devices, or ios_list_simulators that also list devices. The phrase 'smart device management' is somewhat ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 any prerequisites, context for choosing between actions, or how it relates to sibling tools such as android_list_devices or flutter_list_devices. There's no explicit when/when-not usage advice, leaving the agent to infer based on the action names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
native_run_install_appC
Install app on device using native-run (works for Android APK & iOS app)
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | android | |
| appPath | Yes | ||
| deviceId | No |
TDQS
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 function. It doesn't disclose behavioral traits such as required permissions, whether installation is destructive, error handling, or output format. This leaves significant gaps for a tool that performs device-level operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It front-loads the core purpose ('Install app on device') and adds necessary technical context ('using native-run') and scope ('works for Android APK & iOS app').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, 0% schema coverage, no annotations, and no output schema, the description is inadequate. It lacks details on parameter usage, behavioral expectations, error cases, and output, making it incomplete for safe and effective agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal semantics beyond the schema: it implies 'appPath' is for Android APK or iOS app files, and 'platform' selects between them. However, with 0% schema description coverage, it doesn't fully compensate for undocumented parameters like 'deviceId' or provide format details for 'appPath'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Install app') and target ('on device'), specifying it uses 'native-run' and works for both Android APK and iOS app. It distinguishes from siblings like 'android_install_apk' by mentioning cross-platform capability, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'android_install_apk' or 'ios_boot_simulator'. The description mentions it works for both platforms, but doesn't specify scenarios, prerequisites, or exclusions for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
native_run_list_devicesC
List connected devices using native-run (Android & iOS support)
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | android |
TDQS
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 'Android & iOS support' but fails to describe critical behaviors like whether it lists physical devices only, emulators/simulators, output format, permissions required, or error handling. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 details. Every word contributes to understanding the tool's scope, 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.
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 omits details about return values, error conditions, and how it differs from similar sibling tools. For a tool in a context with many device-related alternatives, more contextual information 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the 'platform' parameter at all, and with 0% schema description coverage, the schema alone provides minimal context (only enum values and default). However, since there is only one optional parameter, the baseline is higher, but the description adds no value beyond what's inferred from the tool name and schema, resulting in an average score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List connected devices') and the technology scope ('using native-run (Android & iOS support)'), which distinguishes it from generic device listing tools. However, it doesn't explicitly differentiate from sibling tools like 'android_list_devices' or 'flutter_list_devices', which reduces the score from a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as 'android_list_devices' or 'flutter_list_devices', nor does it mention prerequisites or context for usage. It only states what the tool does, not when or why to choose it.
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.
31 tool updates
- First observed
android_create_avd - First observed
android_install_apk - First observed
android_list_devices - First observed
android_list_emulators - First observed
android_logcat - First observed
android_screenshot - First observed
android_sdk_setup - First observed
android_start_emulator - First observed
android_stop_emulator - First observed
flutter_build - First observed
flutter_clean - First observed
flutter_dev_session - First observed
flutter_doctor - First observed
flutter_fix_common_issues - First observed
flutter_launch_emulator - First observed
flutter_list_devices - First observed
flutter_pub_get - First observed
flutter_release_build - First observed
flutter_run - First observed
flutter_setup_environment - First observed
flutter_test - First observed
flutter_test_suite - First observed
flutter_version - First observed
health_check - First observed
ios_boot_simulator - First observed
ios_list_simulators - First observed
ios_shutdown_simulator - First observed
ios_take_screenshot - First observed
mobile_device_manager - First observed
native_run_install_app - First observed
native_run_list_devices
TDQS
Most tools have distinct purposes, but there is some overlap between Android and Flutter device listing tools (e.g., android_list_devices vs. flutter_list_devices vs. native_run_list_devices) that could cause confusion. The descriptions help differentiate, but the boundaries are not perfectly clear.
Tool names follow a consistent snake_case pattern with clear prefixes (android_, flutter_, ios_, etc.) and verb_noun structure throughout. This makes the set predictable and easy to navigate, with no deviations in naming conventions.
With 31 tools, the count is borderline high for a mobile development server, feeling heavy and potentially overwhelming. While the tools cover Android, Flutter, and iOS comprehensively, the number could be streamlined without losing functionality.
The tool surface provides complete coverage for mobile development workflows, including setup, device management, building, testing, and debugging across Android, Flutter, and iOS. There are no obvious gaps, and agents can handle typical tasks without dead ends.
Maintenance
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
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Drive real Android & iOS devices and web browsers from natural language for mobile + web QA. 290+ tools across device control, app management, automation sessions, browser automation, and flow recording / replay. Bearer-auth — get a token at robotactions.com → Profile → API Tokens.
Cloud iOS simulators and Android emulators your agent can create, drive, and throw away.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables comprehensive control of Android devices via ADB for Flutter development, UI testing, and visual QA workflows. Provides 60+ tools for device management, UI inspection, app testing, performance profiling, and debugging through natural language.77MIT
- AlicenseAqualityCmaintenanceEnables AI agents to build, test, debug, and interact with Kotlin Multiplatform Mobile (Android/iOS) applications through automated build pipelines, UI automation, crash analysis, and app state inspection.15181MIT

MCP Appiumofficial
AlicenseBqualityAmaintenanceEnables AI assistants to automate mobile app testing and development for iOS and Android through natural language interactions. Supports intelligent element identification, session management, automated test generation, and comprehensive device interactions including clicks, swipes, screenshots, and app management.3112,466467Apache 2.0
Argentofficial
AlicenseAqualityAmaintenanceEnables AI assistants to interact with iOS Simulators and Android Emulators, allowing autonomous app development, UI interaction, profiling, and debugging through natural language.752,378Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/cristianoaredes/mcp-mobile-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server