Skip to main content
Glama
nvda-mcp server

nvda-mcp server

by InfiArtt

Accessibility tree

nvda_get_object_tree
Read-onlyIdempotent

Returns the accessibility tree NVDA sees as an indented outline of roles, names, values, and states to survey window layouts or find controls keyboard focus cannot reach.

Instructions

Return the accessibility tree NVDA sees, as an indented outline of role, name, value and states.

Use it to survey a window's layout or find controls that keyboard focus cannot reach. Unnamed layout containers (sections, panels, groupings) are skipped and their children shown in their place. In browsers and Electron apps, 'foreground' starts from the web document. Long lists are cut to max_children items with a note saying how many were left out. Large windows are cut off at max_nodes or after 3 seconds; the result says so. If it is truncated, start from a control (id) or the 'focus' instead, or lower max_depth. To look for one control, nvda_find_objects is faster.

Input Schema

NameRequiredDescriptionDefault
idNoInstead of root, start from this control, an id from nvda_find_objects.
rootNoWhere to start: 'foreground' window (default), the 'focus', or the 'navigator' object.foreground
windowNoInstead of root, start from this window, a handle from nvda_list_windows, even if it is in the background. In browsers and Electron apps it starts from the web document.
max_depthNoHow many levels below the root to include.
max_nodesNoStop after this many objects.
max_childrenNoShow at most this many children of each object, so long lists do not crowd out the rest. 0 shows all.
response_formatNo'markdown' (default) is easier to read; 'json' keeps every field for further processing.markdown

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare read-only/idempotent/non-destructive; the description adds substantive behavior they cannot: unnamed layout containers are skipped and their children promoted, 'foreground' starts at the web document in browsers/Electron, per-object child lists are capped with a count of omitted items, and the whole tree is cut at max_nodes or after a 3-second budget with a note in the result.

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?

Front-loaded with what is returned, then behavior, then failure recovery, then the alternative tool — a logical progression with no filler sentences. Minor redundancy: the browser/Electron web-document behavior is stated once generally and once in the schema for 'window'.

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?

An output schema exists, and the description still usefully characterizes the outline format and the inline truncation notes an agent will encounter. With 7 parameters, all-optional args, and clear root-selection and budget semantics covered, nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes further by explaining observable consequences the schema omits — the 3-second time cutoff tied to max_nodes, and the truncation note emitted when max_children clips a list — plus concrete remediation for truncation. It does, however, restate the schema's browser/Electron note for 'window'.

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 concrete verb and resource ("Return the accessibility tree NVDA sees") and even specifies the output shape: an indented outline of role, name, value and states. An agent can distinguish it from survey/inspection siblings like nvda_find_objects or nvda_inspect_object without opening any 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?

Gives positive guidance ("survey a window's layout or find controls that keyboard focus cannot reach"), names the faster alternative for a single-control lookup (nvda_find_objects), and prescribes a recovery path when output is truncated (re-root at a control id or 'focus', or lower max_depth). When-to-use, when-not-to-use and alternatives are all present.

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