Skip to main content
Glama
nvda-mcp server

nvda-mcp server

by InfiArtt

Inspect a control for add-on development

nvda_inspect_object
Read-onlyIdempotent

Inspect a focused or navigator control’s accessibility properties, containers, children, and table/list row counts to build stable NVDA overlay classes.

Instructions

Everything an add-on needs to recognize a control: its API and NVDA class, its IAccessible2 attributes (HTML tag, id, class, ARIA role, where the name came from) or UI Automation properties, the containers above it, its first children, and for tables and lists how many rows exist now compared with how many the application reports (virtual lists).

It ends with the most stable conditions for chooseNVDAObjectOverlayClasses, what to avoid (generated class names, names made from changing content), and example code. Works on controls in background windows too (nvda_find_objects with window).

Input Schema

NameRequiredDescriptionDefault
idNoInstead, a control from nvda_find_objects.
targetNo'focus' (default) or the 'navigator' object.focus
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.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive/closed-world, so safety is covered; the description adds genuine behavioral context beyond them — the exact payload shape, the tail-end recommendations and anti-patterns (generated class names, names built from changing content), and that it also works on background-window controls. It doesn't cover failure behavior (invalid id, no focused object).

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

Conciseness5/5

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

Three tightly packed sentences, front-loaded with the payload contents first, then the actionable guidance (overlay-class conditions, pitfalls, example code), then the background-window caveat. No filler or restatement of the name.

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

Completeness4/5

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

With an output schema present, return format need not be explained, and annotations carry the safety profile; the description nonetheless gives enough about contents and intent for an agent to call it correctly. The only meaningful gap is error/edge-case behavior when the id is invalid or no object exists.

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 coverage is 100%, so id, target, and response_format are already documented with defaults and enum-like refs. The description adds only marginal meaning — the hint that ids come from nvda_find_objects for background windows — and says nothing extra about choosing focus vs. navigator or markdown vs. json. Baseline 3 applies.

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 names a specific verb (inspect) and resource (a control/object) and enumerates the exact evidence returned: NVDA class, IAccessible2 attributes (tag, id, class, ARIA role, name provenance) or UIA properties, ancestor containers, first children, and virtual-list row counts. That level of specificity clearly separates it from siblings like nvda_get_object_tree or nvda_get_focus, and frames the add-on-development intent.

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?

It gives a clear usage context ('Everything an add-on needs to recognize a control', stable conditions for chooseNVDAObjectOverlayClasses) and a useful cross-reference: to inspect a control in a background window, obtain it via nvda_find_objects with window. It does not explicitly say when to prefer this over nvda_get_object_tree or nvda_get_navigator_object, so no full exclusions are stated.

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