Skip to main content
Glama

native-devtools-status

Verify if native devtools are connected to a specific app and if the next launch is prepared for injection, ensuring readiness before using other native tools.

Instructions

Check whether native devtools are connected to a specific app and whether the next launch is prepared for injection. Use when you need to verify native devtools readiness before calling native-full-hierarchy, native-describe-screen, or native-network-logs.

Returns { envSetup, appRunning, connected, requiresRestart, nextLaunchWillBeInjected, injectable }:

  • envSetup: DYLD_INSERT_LIBRARIES is configured in the simulator's launchd environment

  • appRunning: the target bundle currently has a running UIKit process on the simulator

  • connected: the dylib is active in the current running process for this bundleId

  • requiresRestart: the app is already running but its current process does not have native devtools injected (always false for a non-injectable app)

  • nextLaunchWillBeInjected: if you launch this bundle now, native devtools env setup is already in place (always false for a non-injectable app)

  • injectable: whether native devtools can ever be injected into this app. Apple system apps (bundle ids under com.apple.) are platform binaries with library validation, so the dylib can never load into them.

Call this before using app-scoped native hierarchy tools or native-network-logs. If injectable is false: this is a TERMINAL state — the app can never be injected. Do NOT restart/retry. Use the standard describe tool (its accessibility path reads the screen without injection) or screenshot (then interact by coordinate). Do not fall back to the native-devtools feature tools (native-describe-screen, native-find-views, native-full-hierarchy, native-network-logs, native-view-at-point, native-user-interactable-view-at-point) — they run the same injection precheck and fail with the same non-injectable error. If appRunning is false and nextLaunchWillBeInjected is true: use launch-app normally. If requiresRestart is true: call restart-app, then proceed with the native feature. Returns { status: "init_failed", message, attempts } instead when the simulator's native-devtools environment failed to initialize. Fails if the simulator server is not running for the given UDID.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
udidYesSimulator UDID
bundleIdYesBundle ID of the app to check (e.g. com.example.MyApp)
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits. It explains each return field (envSetup, appRunning, connected, etc.) and their meanings, including edge cases like non-injectable apps (Apple system apps) and failure states (init_failed with attempts). It also describes required preconditions (simulator server running) and consequences of different statuses.

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

Conciseness4/5

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

The description is verbose but well-structured. It is front-loaded with the core purpose, then provides detailed behavioral guidance and conditional logic. Every sentence adds value, though some redundancy could be trimmed. Still highly effective.

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

Completeness5/5

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

The description is complete given no output schema and full parameter documentation. It covers all possible states (injectable, appRunning, requiresRestart), return field semantics, failure modes, and explicit guidance for each state. It also references sibling tools appropriately.

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

Parameters3/5

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

Schema description coverage is 100% (both parameters have descriptions: udid as 'Simulator UDID' and bundleId as 'Bundle ID of the app to check'). The description does not add additional semantics beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Check whether native devtools are connected to a specific app and whether the next launch is prepared for injection.' It specifies the resource (app) and action (check status), and distinguishes from sibling tools by mentioning dependent tools like native-full-hierarchy, native-describe-screen, and native-network-logs.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'Call this before using app-scoped native hierarchy tools or native-network-logs.' It also details conditional actions (e.g., if injectable is false, use standard describe or screenshot; if requiresRestart, call restart-app) and warns against using native-devtools feature tools when injection is not possible.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/software-mansion/argent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server