Skip to main content
Glama
clivejefferies

mobile-debug-mcp

classify_action_outcome

Classify the outcome of the most recent action as success, no_op, backend_failure, ui_failure, or unknown using UI state changes, action type, and optional network evidence.

Instructions

Classify the outcome of the most recent action into exactly one of: success, no_op, backend_failure, ui_failure, unknown.

Use the runtime action result's action_type as actionType so the classifier can distinguish local-state actions from side-effect actions. Use this when the intended outcome is not already fully verified by the UI signal alone. For backend/API activity, compare get_screen_fingerprint before and after the action and call get_network_activity immediately after the action if the outcome is still ambiguous.

HOW TO GATHER INPUTS before calling:

  1. Call wait_for_screen_change or compare get_screen_fingerprint before/after — set uiChanged accordingly.

  2. If you checked for a specific element with wait_for_ui, set expectedElementVisible.

  3. Pass actionType from the action response when available.

  4. Only provide networkRequests if you already collected them or want to classify a side-effect action with backend evidence.

RULES (applied in order — stop at first match):

  1. If uiChanged=true OR expectedElementVisible=true → outcome=success

  2. If actionType is missing → outcome=unknown

  3. If any request has status=failure or retryable → outcome=backend_failure

  4. If actionType maps to a local-state action → outcome=no_op; prefer state-based verification and avoid default network fallback

  5. If actionType maps to a side-effect action and no networkRequests were supplied → outcome=unknown

  6. If no requests returned → outcome=no_op

  7. If all requests succeeded → outcome=ui_failure

  8. Otherwise → outcome=unknown

BEHAVIOUR after outcome:

  • success → continue

  • no_op → retry with richer state verification or re-resolve the element

  • backend_failure → stop and report the failing endpoint

  • ui_failure → stop and report failure

  • unknown → take one recovery step (e.g. capture_debug_snapshot), then stop

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
uiChangedYestrue if the screen fingerprint or activity changed after the action. Use wait_for_screen_change or compare get_screen_fingerprint before and after.
actionTypeNoThe runtime action_type from the action response (for example tap, tap_element, swipe, type_text, press_back, start_app).
hasLogErrorsNotrue if structured log errors were observed (e.g. from read_log_stream). Optional — include if you have already read logs.
networkRequestsNoOptional network evidence collected after the action. Use it when the expected outcome is backend/API activity or when the UI signal is ambiguous.
expectedElementVisibleNotrue if the element you expected to appear is now visible (from wait_for_ui). Omit if you did not check for a specific element.
Behavior5/5

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

With no annotations, the description fully carries the burden of behavioral disclosure. It details the classification rules (applied in order), post-outcome actions, and pre-call steps. This provides complete transparency into the tool's behavior without contradiction.

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

Conciseness4/5

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

The description is well-organized with clear sections (HOW TO GATHER INPUTS, RULES, BEHAVIOUR) and each sentence serves a purpose. It is detailed but not excessively verbose for the complexity of the tool; a minor reduction could improve conciseness.

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?

Given the tool's complexity and absence of an output schema, the description thoroughly covers all necessary aspects: input gathering, rule application order, output categories, and post-classification behavior. No gaps remain.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning by explaining each parameter's role in the classification logic (e.g., uiChanged triggers rule 1, actionType maps to action type categories). This goes beyond the schema definitions.

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?

Description clearly states the tool classifies the outcome of the most recent action into one of five distinct categories. The verb 'classify' combined with the resource 'action outcome' is specific and unambiguous. No sibling tool performs classification, so it distinguishes well.

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

Usage Guidelines4/5

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

Provides explicit guidance on when to use: 'when the intended outcome is not already fully verified by the UI signal alone.' Also details how to gather inputs and includes a rule set. While alternatives are not explicitly excluded, the instruction is clear and context-rich.

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/clivejefferies/mobile-debug-tools'

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