Skip to main content
Glama

read_form_descriptor

Introspects a live 1C managed form into field name/value descriptors, replaying the native form-analysis query. Opens any form by nav-link, so no per-form capture is needed.

Instructions

Introspect a live form into a full element descriptor natively — the get_form_analysis equivalent. Opens the form then replays the genuine form-analysis QUERY sweep (a per-field value-read of every element) on one connection, decoding each element's name->value with extract_form_field_values (the canonical «стал равен» value; markers fa/9a single-byte, 97 UTF-16 checkbox Да/Нет, 8b short-number, 81 empty; ASCII + Cyrillic field names). Returns {fields {name: value}, field_count, queried}; with gherkin (default) also a Gherkin state block (И элемент формы с именем 'X' стал равен "V"). Both ASCII-named (PF_*) and Cyrillic-named fields are swept — Cyrillic group/leaf paths ride the 0x97 UTF-16 envelope, so e.g. the fixture's Контрагент / ПолеСоСпискомВыбораСтрока are read. SCOPE (honest): captures the EditField value surface — form DECORATIONS (static Label captions) are not field values and are omitted (the 3 PF_DECORATION_LABEL* are a separate Label-kind gap). The fixture descriptor is validated against a genuine analysis oracle.

enumerate_live: by default the field list comes from capture_dir's value-read query paths (the one-time per-form capture). With enumerate_live=True the field list is enumerated LIVE off the open form by splice-replaying the genuine get_form_analysis descriptor query (_enumerate_live_fields -> extract_descriptor_fields), so introspection needs NO per-form capture for the field list. With open_link the engine OPENS that form by nav-link (e.g. "e1cib/list/Справочник.Контрагенты") — navigate + resolve its SecondaryFrame.ManagedForm, point the session at it — and introspects IT (no per-form capture at all): introspect ANY form by its nav-link. The descriptor query enumerates EditFields + Buttons/Tables/Groups; a list form has its content in a dynlist Table (few form-level EditFields).

The open_link open is CONFIG-AGNOSTIC (no fixture required): the engine bootstraps to the bare desktop, window-lists the LIVE desktop MainFrame, and navigates straight to the target form — it does NOT open the suite fixture first. Every splice rides a header built with NO form open (_splice_header_no_form: the header's only live fields are the bootstrap ack_guid + sequence; the form GUIDs are after the marker the splice discards), and the navigate is retargeted onto the live desktop. So open_link introspects any form on ANY real config that has no suite fixture. Live-verified (fixture config: 46 EditFields incl. Cyrillic; Контрагенты opened + introspected to 79 elements with NO fixture open).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
gherkinNo
open_linkNo
capture_dirNotm-v1-ro-batchQ3
enumerate_liveNo
manager_templatesNo/app/src/qa_mcp/_bundled/8.3/templates/value_read_templates.json

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and largely meets it: it discloses that the engine opens the form, replays a QUERY sweep, decodes via extract_form_field_values, the value markers used, and that decorations are omitted while Cyrillic fields are covered. It is missing runtime prerequisites (whether a test client must be running) and failure behavior, but the operational detail is unusually rich.

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

Conciseness2/5

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

The description is an enormous wall of internal-implementation prose (splice headers, 0x97 envelopes, _enumerate_live_fields, bootstrap ack_guid) that overwhelms the agent. Much of it is implementation detail irrelevant to selecting or invoking the tool, and the key usage signal is not cleanly front-loaded.

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

Completeness3/5

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

An output schema exists so return-value explanation is not strictly required, and the description does cover the two non-default modes well. But for a 7-parameter, zero-coverage, annotation-less tool it omits the meaning of host/port/manager_templates and any precondition about the live environment, leaving gaps an agent would need.

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 0% with 7 parameters, so the description must compensate and only partly does. It meaningfully explains open_link, enable_live, gherkin, and capture_dir ('the one-time per-form capture'), but host, port, and manager_templates receive no explanation anywhere, leaving several parameters undocumented.

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

Purpose4/5

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

States a specific verb+resource ('Introspect a live form into a full element descriptor') and names the equivalent ('the get_form_analysis equivalent'), so the core capability is identifiable. The distinction from data-reading siblings like read_form_value is implied by 'descriptor' rather than stated explicitly, and the intent is partially buried under implementation jargon.

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

Usage Guidelines3/5

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

The description explains what enable_live and open_link do ('introspect ANY form by its nav-link') and the SCOPE caveat that decorations are omitted, which implies when this tool is and isn't appropriate. However it never explicitly compares itself to the many sibling readers (read_form_value, assert_form_value, read_record), so the agent must infer the boundary.

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