Skip to main content
Glama

app_run_menu

Dispatches a mapped menu command by path and reports only that it was sent, not that it executed; use a menu click when the action must be verified.

Instructions

Dispatch a menu command by path. DISPATCH IS NOT EXECUTION.

This sends the command and cannot tell you it ran. Altium's RunProcess accepts an unknown process id in silence and reports nothing back, so a typo, a command unavailable in the current editor, and a command that worked are indistinguishable from here. MEASURED 2026-08-17: "Tools|Preferences" returned in 0.11s with success: true and no dialog ever appeared. That is why the reply says dispatched, never executed, and carries outcome_verified: false.

Use app_click_menu when you need the command to actually happen. It walks the real menu bar and clicks the item, so it fails loudly on a path that does not exist and reaches the many commands that have no process id at all.

These paths are mapped to internal processes:

  • "File|Save All"

  • "Tools|Design Rule Check"

  • "Tools|Electrical Rules Check"

  • "Project|Compile"

  • "Edit|Select All" / "Edit|Deselect All"

  • "View|Zoom Fit"

  • "Tools|Preferences"

  • "Tools|Extensions and Updates"

Anything else is REFUSED with UNMAPPED_MENU_PATH. The old fallback guessed a MenuID out of the pipe-separated path and was measured opening nothing while reporting success, so refusing and pointing at app_click_menu is strictly more useful than a guess that cannot work.

Args: menu_path: Menu path using pipe separators (e.g., "File|Save All")

Returns: Dictionary with dispatched, outcome_verified (always false), menu_path, and the process used. A reply the bridge could not parse is reported as a failure, not smoothed into a success.

Input Schema

NameRequiredDescriptionDefault
menu_pathYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.1

TDQS

A4.9/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and does so thoroughly: it discloses that RunProcess fails silently, that success is indistinguishable from a typo, and cites a measured 2026-08-17 case (0.11s, success:true, no dialog). It also declares the refusal contract (UNMAPPED_MENU_PATH) and that outcome_verified is always false.

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 load-bearing caveat and the sibling routing are front-loaded in the first three paragraphs. The historical note about the old MenuID fallback is somewhat verbose, but it justifies the refusal behavior rather than padding.

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?

Covers the full call contract for a one-parameter mutation-adjacent tool: valid inputs, refusal behavior, the meaning of the response fields, and the fallback tool. Nothing an agent needs in order to call this correctly is missing, despite the output schema already existing.

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 0%, so the description must compensate and it does: menu_path is documented as pipe-separated with an example, and the eight accepted paths are enumerated with the explicit statement that everything else is refused. This is effectively an enum the schema lacks.

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?

States a specific verb and resource ("Dispatch a menu command by path") and immediately scopes it with "DISPATCH IS NOT EXECUTION." It distinguishes itself from app_click_menu and app_run_ui_command by naming the sibling that actually performs execution, so an agent can route without opening either schema.

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?

Explicitly names the alternative (app_click_menu) and the condition that selects it: "when you need the command to actually happen." It also enumerates the exact set of mapped paths and states that anything else is refused with UNMAPPED_MENU_PATH, leaving no inference required.

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

Deploy Server

Other Tools