Skip to main content
Glama

qa-mcp

qa-mcp is an open-source Python manager and Model Context Protocol (MCP) server for native 1C TestClient QA automation. It speaks the TestManager / TestClient protocol directly, runs BDD/Gherkin scenarios, reads and verifies managed forms, and exposes target-bound lifecycle and UI operations to AI agents without requiring a Vanessa Automation manager runtime.

The public repository is vlikhobabin/qa-mcp-public. qa-mcp v0.1.0 (MVP prerelease) is published with the existing product unchanged; it is not Stable. The immutable tag points to the fresh public root ba576b752ebe2939d4c84d53a8b1732d7b641e36, imported from the prepared snapshot based on original commit b6ae33639d151e9b47bf0a1248f0be5309a72504. Internal Git ancestors are excluded. Only README/publication-policy documentation on main is updated after the tag. The release includes full source qa-mcp-b6ae336-source.tar.gz, Python wheel and package sdist, a Docker archive, Windows executable/ZIP and SHA256SUMS. Download the assets together and run sha256sum -c SHA256SUMS before use. No PyPI/GHCR publication was made; GitHub Actions is disabled for this initial import. The broader OSS-08 release train and OSS-09 downstream cutover are not mandatory MVP prerequisites. This release does not claim stable or live-native qualification.

What is included

  • Native TestClient protocol/session engine and curated, plaintext protocol fixtures for supported 8.3 and 8.5 families.

  • Managed-form reads/actions, assertions, waits and target-bound lifecycle.

  • Gherkin scenario parsing/execution and JUnit/Allure-compatible reporting.

  • Standalone stdio and authenticated streamable-HTTP MCP transports.

  • A public Windows host bridge for authenticated TestClient lifecycle, relay, screenshots and bounded desktop input.

  • Offline tests, protocol research tools and curated reproducible evidence.

open_external_processor remains dormant research code and is omitted from the declared stable standalone support surface pending separate target-bound qualification. The current source catalog is pre-stable; see the tool reference.

Related MCP server: game-mcp

Architecture

AI agent ── MCP stdio/HTTP ── qa-mcp Python server
                                │
                                ├─ native TestClient protocol
                                ├─ scenario/reporting engine
                                └─ optional authenticated Windows bridge
                                      └─ owned TestClient + desktop primitives

The public core owns protocol, scenario, operation/result and standalone transport semantics. Private downstream products consume a released version and provide their own relay, tenant, portal or telemetry integrations without forking core behavior. See the shared-core extension contract.

Install the release wheel

Download qa_mcp-0.1.0-py3-none-any.whl from the release linked above. With Python 3.11+:

python3 -m venv .venv
.venv/bin/python -m pip install ./qa_mcp-0.1.0-py3-none-any.whl
.venv/bin/qa-native-mcp

The last command starts the stdio server for an MCP client. The Docker attachment can be loaded with docker load --input qa-mcp-image.tar; use its retained tag qa-mcp-mvp-b6ae336-20260911t105140z:local with the Docker startup settings.

Install from a source snapshot

Prerequisites for offline development are Python 3.11+ and uv. No 1C installation is needed for the offline suite.

tar -xzf qa-mcp-b6ae336-source.tar.gz
cd qa-mcp-b6ae336
uv sync --extra dev --locked
uv run pytest -q -m "not live"
uv build --offline

Run the MCP server over stdio (the default):

uv run qa-native-mcp

An agent can launch that command as a local stdio MCP server. Live TestClient operations additionally need an explicit supported platform and test target; keep target paths and credentials in ignored local configuration.

Authenticated HTTP

HTTP defaults to loopback. Generate a strong project-owned bearer token and do not commit or print it:

export QA_MCP_TRANSPORT=http
export QA_MCP_HTTP_HOST=127.0.0.1
export QA_MCP_HTTP_PORT=8000
export QA_MCP_BEARER_TOKEN="$(openssl rand -hex 32)"
uv run qa-native-mcp

Connect at http://127.0.0.1:8000/mcp with Authorization: Bearer <QA_MCP_BEARER_TOKEN>. A non-loopback bind is rejected without bearer authentication. See Docker delivery for the thin container and Linux-host models.

Windows TestClient bridge

The complete public bridge source is under host-agent/windows-display-agent/. It is separate from private AI-for-1C components and exposes only authenticated, target-bound lifecycle/relay and bounded display primitives.

Build it from Linux without running a Windows host:

./bin/ai-build-windows-host-agent build --output-dir .runtime/windows-host-agent
./bin/ai-build-windows-host-agent verify --bundle-dir .runtime/windows-host-agent

For v0.1.0, the attached Windows executable/ZIP is an unstamped Linux cross-build (-buildvcs=false) inspected for PE/amd64/GUI and capability markers. It has no Windows-native qualification or successful helper-bundle verification. The existing helper above requires Git and fails in a Git-free source extraction. No new live 1C qualification was performed for this release.

Installation and firewall guidance is in host-agent/README.md. Live use requires a licensed 1C platform and an interactive Windows test session. Never commit a bridge token, 1C password, infobase or generated executable.

Development and verification

Fast focused loop:

uv run pytest -q tests/test_public_repository_readiness.py
python3 tools/public_readiness.py audit --history --json
python3 tools/public_readiness.py provenance --check --json
python3 tools/protocol-research/oss07_i2/verify_matrix.py --run-mutations
git diff --check

The complete non-live suite is:

uv run pytest -q -m "not live"

Tests marked live require an explicitly authorized TestClient/lab target and are not part of ordinary public-source verification. Raw captures and runtime evidence stay in ignored state.

Safety model

  • Use disposable test data for UI/mutation operations and retain recovery proof.

  • Runtime target resolution is immutable for a session; target mismatches fail before lifecycle or UI work.

  • HTTP and Windows bridge routes are authenticated; loopback is the safe default.

  • Cleanup stops only exact processes and artifacts owned by the operation.

  • Secrets, customer data, private endpoints, full infobases, proprietary 1C binaries and local captures do not belong in Git or issue reports.

Read SECURITY.md before reporting a vulnerability.

Documentation

Contributing and support

Read CONTRIBUTING.md, GOVERNANCE.md, SUPPORT.md and CODE_OF_CONDUCT.md. Generic core fixes go upstream first; private product integrations stay in their own repositories.

License and trademarks

qa-mcp is licensed under Apache-2.0. See NOTICE for attribution and nominative trademark use. This independent project is not affiliated with or endorsed by the owners of the 1C trademarks.

Project-local delivery

Validate canonical specs with the pinned project-local OpenSpec wrapper:

./bin/openspec validate --specs --strict --no-interactive

The installed ChangeRail runtime uses Astra/high for review and Terra/high for implementation; the project Codex launcher defaults to Astra/high for planning. See docs/development/local-changerail-delivery.md for installation and command semantics. Delivery via ./bin/chrl-run includes commit/push and requires authority for that complete cycle. Sequential product roadmap work is described in OSS-00 orchestration. Stopped migration runs remain history and are not the ordinary delivery queue.

Product test policy

Ordinary checks select changed qa-mcp modules: uv run pytest --qa-changed --qa-lane offline. Subprocess/build/display checks use the separate integration lane. Full tests require epic closure or explicit operator agreement; live Linux/Windows 1C checks require target-specific authorization and preflight. See test policy and test inventory. ChangeRail is consumed only as an executable distribution; its development and tests do not run here.

Available Tools

64 tools
activate_windowB

Bring a buried top-level window to the front natively. activate and close are the SAME window-level command …SecondaryFrame[<window>] 88 82 81; the effect is contextual on z-order — applied to a BACKGROUND window it activates (brings forward), applied to the active window it closes it (see close_window). This faithfully replays the genuine navigation from capture (open the fixture form -> open the catalog list -> drill a row, so other windows cover the target) then the window-level command that raises the buried target (window_ref, default the fixture form's app ref); GUID rebinder rebinds the window GUIDs as they appear (first-appearance, same machinery as open_card / close_window). Confirmed by the target becoming the ACTIVE (last-reported) window — its (live, rebound) SecondaryFrame is the one in the final window-bearing client response (activated), the inverse of close_window. Returns {window_ref, window_sf, live_window_sf, accepted, activated, target_in_activate_resp}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card96-activate-20260618/traffic
window_refNoe1cib/app/Обработка.ФикстураПротоколаTestClient

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose real behavior: the z-order-dependent dual effect, the GUID rebinding (first-appearance) machinery, and the confirmation criterion (target becomes the last-reported active window). It omits auth/permission needs and any failure/edge behavior, and the density makes the disclosure hard to extract.

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 definition is an unstructured wall of jargon with scattered backticks and parenthetical asides. Only the first sentence is well front-loaded; the rest mixes implementation trivia with the actionable rule, hurting scannability.

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 values (window_ref, activated, etc.) need not be spelled out. The description covers the core activation semantics adequately, but for a tool with zero schema coverage and no annotations, the missing parameter guidance and permission/edge-case context leave gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all four parameters. It adds meaning to window_ref ('default the fixture form's app ref') and capture ('replays the genuine navigation from capture'), but host and port are entirely undocumented and even the two covered params are explained only obliquely.

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?

The opening sentence states a clear verb+resource: 'Bring a buried top-level window to the front natively.' It also distinguishes itself from a sibling, explaining that activate and close are the same command and pointing to close_window. The purpose is legible, though it is soon buried under heavy 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 the contextual behavior (background window activates, active window closes) and cross-references close_window, which is meaningful routing information. However, it gives no clean 'use this when' framing and no prerequisites or exclusions beyond the implicit z-order rule.

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

add_table_rowB

Add a persistent row to the fixture table natively. The standard «add row» discards an uncommitted empty row, so the fixture exposes a PF_ADD_ROW command that server-side appends a MARKED row (PF_ROW_ADDED_<n> / PF_ADDED_TEXT), activates it, and sets PF_LAST_ACTION. This clicks PF_ADD_ROW capture-free (= click_command('PF_ADD_ROW')). Verify via assert_form_value('PF_LAST_ACTION')=='PF_ADD_ROW' / 'PF_SELECTED_ROW_MARKER' or capture_screenshot. Returns {base_button, target_button, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card90-addrow-20260617/traffic-selfcontained

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 behavioral burden and does so well: it discloses that the append is server-side and persistent, that the row is MARKED (PF_ROW_ADDED_<n> / PF_ADDED_TEXT) and activated, that PF_LAST_ACTION is set, and that the click is capture-free. It also gives verification paths. It omits auth/permission preconditions and failure behavior, keeping it short of a 5.

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 purpose followed by mechanism, verification, and return shape; every sentence contributes technical substance despite the dense identifier-laden prose. Slightly overstuffed for a single-purpose action, but nothing is filler.

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 explaining return values is not required, and the description still adds mechanism and verification context that an agent needs for this non-obvious fixture. The notable gap is the complete absence of parameter guidance for host/port/capture and any statement of permissions or preconditions.

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

Parameters2/5

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

Schema description coverage is 0% for all three parameters (host, port, capture), and the description never explains what any of them mean or how to set them. The phrase 'capture-free' is ambiguous against the 'capture' parameter and may even confuse. With low coverage the description is expected to compensate, and it does not.

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?

The description states a specific verb+resource ("Add a persistent row to the fixture table natively") and contrasts it with the standard add-row behavior, making it distinguishable from siblings like delete_table_row, copy_table_row, and move_table_row. The concept is specialized and jargon-heavy ('fixture', PF_* markers), but the action is unambiguous.

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?

It explains why this tool exists rather than the standard add-row path ("The standard «add row» discards an uncommitted empty row"), and notes the equivalence to click_command('PF_ADD_ROW'). However, it never states when to choose this over siblings such as set_table_cell, copy_table_row, or click_command directly, so routing remains implied.

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

answer_dialogA

Answer a 1C modal dialog (ПоказатьВопрос / ПоказатьПредупреждение) natively. Unlike a popup choice list (which reuses the form window), a real dialog opens a NEW top-level window — a fresh SecondaryFrame GUID per open. The genuine answer is a WINDOW-LEVEL command on that dialog frame (…SecondaryFrame[<dlg>] 88 82 81 = the window's default action = ОК/Да), NOT a Button activate. This faithfully replays the genuine dialog session from capture (open form -> click raise_command -> the dialog opens -> the window-level answer); GUID rebinder learns the LIVE dialog GUID from the live open response and rebinds the captured one in the close command (the same first-appearance rebinding as the form window). Commit is confirmed by result_marker (the fixture's answer field, e.g. PF_V4_WARNING_ACK) appearing in the post-answer read-back. Returns {raise_command, result_marker, dialog_sf, committed}. NOTE: the WARNING (ОК) path is the default — the QUESTION (Да/Нет) answer is the same window-level mechanism with the appropriate raise_command/marker once captured.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card96-dialog-warn-20260618/traffic
raise_commandNoPF_V4_WARNING
result_markerNoPF_V4_WARNING_ACK

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/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 behavioral burden and largely meets it: it discloses the window-level command mechanism, the GUID rebinder's live rebinding, commit confirmation via result_marker, and the fact that a new top-level window opens. It omits practical prerequisites (a live test client / connection, an existing capture fixture) which leaves a gap for a mutation-style operation.

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

Conciseness3/5

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

Purpose is front-loaded in the first sentence, but the body is a dense run-on of internal jargon (SecondaryFrame GUIDs, raw command bytes, GUID rebinder) that is hard to parse. The information earns its place but the structure sacrifices readability.

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 values need not be re-explained, and the description does describe the commit-confirmation flow. But with zero annotation coverage and 0% param documentation, it should specify prerequisites and the fully-understood parameter set; it stops short of that.

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 description coverage is 0%, so the description must compensate. It lends meaning to raise_command, result_marker, and capture ('replays the genuine dialog session from capture'), but host and port are never explained and the semantics of dialog_sf/committed are only implied. It covers the key params partially rather than fully.

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 ('Answer a 1C modal dialog (ПоказатьВопрос / ПоказатьПредупреждение) natively') and explicitly distinguishes itself from the popup choice list sibling that 'reuses the form window'. An agent can identify the tool's role without opening the schema.

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?

It implicitly contrasts the real dialog with a popup choice list and notes the WARNING (ОК) path is the default while the QUESTION (Да/Нет) path uses the same mechanism. However, it never gives an explicit when-to-use-this-vs-that rule or prerequisites, so selection guidance is only implied.

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

assert_com_countA

Assert a numeric result from a read-only host-side COM query.

Use for file infobases where OData is not published. query should return a single row whose first value, or count_field when supplied, is numeric. op is one of eq/ne/gt/lt/ge/le.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoeq
userNo
queryYes
prog_idNoV83.COMConnector
expectedYes
passwordNo
count_fieldNo
timeout_secNo
infobase_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully signals that the query is read-only and that it must return a single row, but says nothing about failure semantics (does a false assertion raise?), the auth implications of the user/password parameters, or timeout behavior for a host-side COM call.

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 tight sentences, front-loaded with the core purpose followed by the usage condition and the input contract. No filler or repetition; every sentence adds information.

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 values need no explanation, and the core query/op semantics are covered. However, for a 9-parameter tool with zero schema description coverage and no annotations, the absence of any failure-mode or auth/timeout guidance leaves meaningful gaps.

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% across 9 parameters, so the description must compensate and does so partially: it clarifies that `query` must return one row whose first value (or `count_field`) is numeric, that `op` accepts eq/ne/gt/lt/ge/le, and implies `expected`. It leaves infobase_path, user, password, prog_id, and timeout_sec unexplained.

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 (assert) and a precise resource (a numeric result from a read-only host-side COM query), and the condition 'file infobases where OData is not published' contextually separates it from the OData-based assertion siblings. It stops short of naming an alternative sibling explicitly, so it is clear but not maximally differentiated.

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?

Gives an explicit usage condition: reach for this on file infobases where OData is not published, which routes the agent correctly away from OData-based assertions. It offers no explicit when-not or named alternative, so it is clear context without exclusions.

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

assert_dataA

DEPRECATED for a test-client-held base — see below. Assert a value in the DATA LAYER via read-only 1C OData. Locate a record in entity_set (e.g. 'Catalog_Товары') by an OData filter (e.g. "Description eq 'Обувь'") or a key (Ref_Key guid / code), then assert field against expected with match = equals|contains|regex. Connection from params or env (QA_MCP_ODATA_URL/USER/PASSWORD). Returns {ok, actual, expected, record_count, deprecated, deprecation, …}.

DEPRECATION: an infobase opened by a «Клиент тестирования» is EXCLUSIVELY LOCKED, so OData cannot read it — an OData read-back of what the running test client just did is impossible on that base. Verify UI writes through the SAME client's protocol value-read (write_form_fields_by_label returns a value-read committed; read_record / read_form_descriptor read committed values). This tool is valid ONLY against a SEPARATELY published, non-exclusive OData endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
userNo
fieldYes
matchNoequals
filterNo
selectNo
base_urlNo
expectedYes
passwordNo
entity_setYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so: it discloses read-only OData access, connection sourcing from params or env vars (QA_MCP_ODATA_URL/USER/PASSWORD), the exclusivity-lock failure mode, and the return shape {ok, actual, expected, record_count, deprecated, deprecation}. This is unusually rich disclosure of auth, environment, and failure semantics.

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 deprecation caveat is front-loaded and the tool mechanics follow in a logical order; the second DEPRECATION paragraph adds detail rather than pure repetition. It is somewhat long, but nearly every sentence (connection source, return shape, lock behavior) earns its place.

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?

For a deprecated, 10-parameter, cross-cutting assertion tool, the description covers purpose, usage boundaries, alternatives, connection/auth sourcing, failure mode, and return shape. Even though an output schema exists (so return values need not be spelled out), the definition is complete for correct invocation.

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 description coverage is 0% across 10 params, so the description must compensate. It explains the semantically critical ones (entity_set, filter, key, field, expected, match with its enum values) and hints at connection params via 'params or env', but leaves select, base_url, user, and password uncharacterized beyond that hint, so the compensating coverage is strong but incomplete.

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 states a specific verb and resource: 'Assert a value in the DATA LAYER via read-only 1C OData', and names the exact locating mechanism (entity_set plus filter or key) and comparison modes (equals|contains|regex). It also implicitly distinguishes itself from form-level siblings like assert_form_value by scoping to the data layer, and explicitly points to read_record/write_form_fields_by_label as alternatives.

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?

It gives explicit when-to-use ('valid ONLY against a SEPARATELY published, non-exclusive OData endpoint') and when-not (an infobase opened by a test client is exclusively locked, making OData read-back impossible). It names concrete alternative tools for the blocked case (write_form_fields_by_label value-read, read_record, read_form_descriptor), leaving nothing to inference.

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

assert_data_countA

DEPRECATED for a test-client-held base — a «Клиент тестирования» holds the infobase under an EXCLUSIVE lock, so OData cannot read it; verify via the same client's protocol value-read (read_record / read_form_descriptor) instead. Assert the NUMBER of records matching a filter in the DATA LAYER. op = eq|ne|gt|lt|ge|le; e.g. assert a posting created exactly N register rows, or that no orphan remains (op='eq', expected=0). Read-only OData; valid only against a separately published, non-exclusive endpoint. Returns {ok, count, expected, op, deprecated, deprecation, ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoeq
userNo
filterNo
base_urlNo
expectedYes
passwordNo
entity_setYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/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 does well: it discloses deprecation, the OData read-only nature, the exclusive-lock conflict, and the endpoint precondition, plus the returned fields. It stops short of explaining auth requirements, failure behavior, or what happens when the assertion fails, so it is strong but not exhaustive.

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-loads the critical deprecation warning before the core purpose, which is the right ordering. It is dense and somewhat repetitive (restating the return shape already covered by the output schema), but every sentence carries information.

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?

For a 7-parameter QA assertion tool with no annotations and 0% schema coverage, the description supplies purpose, deprecation context, operator semantics, examples, and the endpoint precondition. It is largely complete, with the auth/endpoint parameters being the remaining hole; the output schema already covers return values.

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% across 7 parameters, so the description must compensate. It does explain op (eq|ne|gt|lt|ge|le), expected (via the expected=0 example), filter, and implicitly entity_set, but leaves user, password, and base_url undocumented — a substantial gap at this parameter count.

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 — 'Assert the NUMBER of records matching a filter in the DATA LAYER' — which is clearly distinct from siblings like assert_form_value or read_record. It also names the sibling to route to under the deprecated path (read_record / read_form_descriptor).

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 explicit when-to-use examples ('assert a posting created exactly N register rows', 'no orphan remains'), explicit when-not (deprecated for a test-client-held base under an EXCLUSIVE lock) and the alternative to use instead. It further constrains applicability to 'a separately published, non-exclusive endpoint'.

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

assert_form_valueC

First-class ASSERT on a form field's live value.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
modeNoequals
portNo
fieldYes
groupsNo
expectedYes
capture_dirNotm-v1-ro-batchQ3
manager_templatesNo/app/src/qa_mcp/_bundled/8.3/templates/value_read_templates.json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden. 'ASSERT on live value' hints at pass/fail semantics but says nothing about what happens on mismatch (raise vs return), whether it blocks or polls, timeout behavior, or what mode/groups do. For an assertion tool, failure semantics are exactly what an agent needs and they are absent.

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

Conciseness3/5

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

A single short sentence with no filler, but its brevity stems from under-specification rather than disciplined editing. It is front-loaded but minimally informative.

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

Completeness2/5

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

The tool has 8 parameters, an output schema, and a rich cluster of assert/wait siblings, yet the description covers neither behavior on failure nor the roles of mode, groups, or capture_dir. An output schema relieves it of explaining return values, but the behavioral gaps remain too large for this complexity.

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

Parameters1/5

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

Schema description coverage is 0% across 8 parameters (host, port, mode, groups, capture_dir, manager_templates, field, expected). The description adds no parameter meaning beyond the schema, so it does nothing to compensate for the coverage gap.

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?

The description states a specific verb (ASSERT) and resource (a form field's live value), which tells an agent this reads current state and fails/passes rather than mutating. It does not distinguish itself from the sibling wait_for_form_value or clarify the assert-vs-wait distinction, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the closely related wait_for_form_value or the write_form_value family. The agent must infer entirely from the name which of the several assertion/wait siblings applies.

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

attach_test_clientA

Attach to an already-listening /TESTCLIENT endpoint without owning its process.

This is for clients started out-of-band, for example with a custom environment or by a host-side launcher. The returned handle status records attached=true and owns_process=false. The MCP server also records the endpoint as the active attached context for replay-backed tools that are called with default host/port.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
connect_timeout_secNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses important behavior beyond schema: it attaches without owning the process, the returned handle status records attached=true and owns_process=false, and the MCP server records the endpoint as the active attached context for replay-backed tools. It still omits auth/error behavior, timeout semantics, and conflict handling for multiple attaches.

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?

Two short paragraphs, with the core purpose front-loaded in the first sentence and useful context following. There is no filler or repetition, and the agent can parse the key points quickly.

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?

The output schema exists and the description adds usage context, but with three undocumented parameters and no annotations, the definition leaves gaps around parameter roles, timeout behavior, and failure modes when the endpoint is not listening. It is minimally viable but not complete for an attach operation that changes active MCP context.

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

Parameters2/5

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

Schema description coverage is 0% for three parameters, so the description should compensate. It does not explain host, port, or connect_timeout_sec; it only alludes to default host/port in the context of replay-backed tools, leaving the actual parameters undocumented. This is well below adequate for a low-coverage schema.

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—attach to an already-listening /TESTCLIENT endpoint—and immediately distinguishes it from process-owning siblings by saying 'without owning its process.' An agent can select this over launch_test_client/stop_test_client without opening the schema.

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?

Gives a clear when-to-use condition: clients started out-of-band, such as with a custom environment or host-side launcher. It does not explicitly name the alternative tool (e.g., launch_test_client) or state when not to use this, but the context is strong enough to guide selection.

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

capture_screenshotA

Capture an OS-level PNG screenshot of the TestClient's X display (Linux).

display is the one from launch_test_client(display=…) status (e.g. ":101"). Optional window is a title substring (xdotool) to capture a single window instead of the whole display; if no window matches, falls back to the full display (matched_window_id=null). Captures with scrot (fallback ImageMagick import). Returns {path, display, window, matched_window_id, size_bytes, tool}; read the PNG at path.

ParametersJSON Schema
NameRequiredDescriptionDefault
windowNo
displayYes
out_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the capture mechanism (scrot, ImageMagick fallback), the window-matching fallback with matched_window_id=null, and the return payload shape. It even tells the agent to read the PNG at `path` rather than expecting inline image data.

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-loads the core action in the first sentence, then tacks on parameter and return detail. The scrot/ImageMagick implementation note is arguably extra but is useful for debugging failures; overall tight with little waste.

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?

Although an output schema exists (so return fields needn't be described), the description restates them helpfully, and it covers the display source, window matching, fallbacks, and platform. An agent has everything needed to invoke and consume this tool correctly.

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 0%, so the description must compensate. It fully explains `display` (source and format, e.g. ':101') and `window` (title substring via xdotool, fallback semantics), but `out_path` is never mentioned, leaving one of three parameters undocumented.

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 ('Capture an OS-level PNG screenshot of the TestClient's X display') with the platform clarified. It is unambiguous and its function is distinct from every sibling tool listed, none of which capture pixels.

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 intended use (grabbing a visual of the running test client) is implied rather than stated, and there is no explicit when-to-use or when-not-to-use guidance. It does, however, explain the conditional behavior of the window-vs-full-display path, which routes the caller's choice.

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

choose_from_listA

Pick a value from a ПоказатьВыборИзСписка modal natively. The flow: open the form, click the command that raises the choice list (base_command), then PICK value (a list-item VALUE NAME, e.g. PF_CHOICE_A/B/C). The pick is the choose tag e0 4b 53 + the length-prefixed value at the ManagedForm path — the same e0 4b 53 family as a radio set_choice, but addressed at the FORM (the popup reuses the window, so NO new SecondaryFrame to bind); only the value is re-targeted (captured_value -> value). Opens the form by replaying the genuine setup from capture (which clicked base_command and picked captured_value). The result is a user message Сообщить(<message_prefix> + value), so commit is verified by scanning the responses for that ASCII marker. Returns {captured_value, value, accepted, committed, message}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
valueYes
captureNogenuine-card96-choicelist-20260618/traffic
base_commandNoPF_SHOW_CHOICE_LIST
captured_valueNoPF_CHOICE_B
message_prefixNoPF_CHOICE=

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral burden and does well: it discloses the wire-level protocol (choose tag 'e0 4b 53' + length-prefixed value), that no new SecondaryFrame needs binding because the popup reuses the window, and that commit is verified by scanning responses for the ASCII marker Сообщить(...). This is rich context beyond a bare mutation claim.

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

Conciseness3/5

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

Purpose is front-loaded, which is good, but the single paragraph is dense, backtick-heavy and jargon-laden, interleaving protocol bytes, flow steps and verification logic. It is information-rich yet difficult to parse, so efficiency is only moderate.

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?

An output schema exists, so return values need no elaboration, yet the description still notes the result shape ({captured_value, value, accepted, committed, message}). Combined with the flow, commit-verification mechanism and parameter roles, an agent has enough to invoke it correctly.

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 0%, so the description must compensate and largely does: it explains value (list-item VALUE NAME), base_command (the command that raises the choice list), captured_value/capture (the genuine setup replayed to open the form) and message_prefix (used in the verification marker), plus their interrelations. Only host/port go unexplained.

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 concrete verb+resource: 'Pick a value from a ПоказатьВыборИзСписка modal.' It further distinguishes itself from the sibling set_choice by noting it uses the same 'e0 4b 53' family but is addressed at the FORM rather than a radio. The Russian modal name adds jargon but the action is still identifiable.

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?

It lays out the required flow (open the form, click base_command, then pick value), which implies when the tool applies. However it never explicitly says when to prefer this over siblings like choose_from_menu or set_choice, nor any precondition/exclusion. Usage is implied rather than stated.

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

choose_from_menuA

Pick an item from a ПоказатьВыборИзМеню popup menu natively. The popup menu is the wire TWIN of the choice list (choose_from_list): clicking base_command raises it, and the pick is the SAME e0 4b 53 choose tag + the length-prefixed item VALUE NAME at the ManagedForm path (the popup reuses the form window — no new SecondaryFrame). Only the value is re-targeted (captured_value -> value, e.g. PF_MENU_1 -> PF_MENU_2). Opens the form by replaying the genuine setup from capture (which clicked base_command and picked captured_value). The result is a user message Сообщить("PF_MENU=" + value), confirmed on the wire. Returns {captured_value, value, accepted, committed, message}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
valueYes
captureNogenuine-card96-menu-20260618/traffic
base_commandNoPF_SHOW_CHOICE_MENU
captured_valueNoPF_MENU_1
message_prefixNoPF_MENU=

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so thoroughly: it discloses the wire tag, the re-targeting from captured_value to value, that no new SecondaryFrame is opened, the form replay from capture, the resulting user message, and confirmation on the wire. This is far more than a restatement of schema or name.

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 purpose is front-loaded in the first sentence, followed by dense technical context. The text is long but most sentences contribute behavioral or parameter meaning, with little obvious filler; the main cost is heavy parenthetical protocol detail.

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?

Given the tool's complexity, absence of annotations, and an output schema covering return values, the description supplies strong behavioral and mechanistic context. It is slightly incomplete for the lowest-level parameters and usage selection, but it gives enough for an agent to understand the operation and call it correctly.

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 description coverage is 0% across 7 parameters, so the description must compensate. It adds meaning for value, captured_value, base_command, and capture by explaining how they are replayed and re-targeted, but it does not explain host, port, or message_prefix, leaving part of the parameter surface undocumented.

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: picking an item from a ПоказатьВыборИзМеню popup menu. It explicitly names and distinguishes itself from the sibling choose_from_list by calling the popup its wire twin, so an agent can differentiate them.

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 references the related alternative choose_from_list and explains the mechanical relationship, but it does not explicitly say when to use this tool versus that sibling or other alternatives. Usage is implied by the popup-menu context rather than stated as a clear condition.

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

click_commandA

Click a form-command BUTTON natively. A command click activates the …Group[<bar>].Button[NAME] element (88 81 81 e1 command-execute) — the Button twin of switch_page / toggle_checkbox. Opens the form (replays the genuine setup from capture, which clicked base_button) and sends the genuine click re-targeted to target_button (the Button leaf; defaults to base_button). A click has no value read-back — verify via a side-effect field (PF_LAST_ACTION) or capture_screenshot. Returns {base_button, target_button, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card90-addrow-20260617/traffic-selfcontained
base_buttonNoPF_ADD_ROW
target_buttonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/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 load and does so well: it discloses that it opens the form, replays the genuine setup from 'capture', sends a re-targeted click, and that a click yields no value read-back so verification must go through a side-effect field or a screenshot. That is meaningful behavioral context for a mutation-style action.

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?

It is front-loaded with the action and stays to two dense sentences with no filler. The parenthetical hex and path references add precision but make it slightly hard to parse on first read.

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?

For a mutation action with no annotations, the description covers what happens, what is mutated, how the click is sourced, and how to verify the outcome, plus it names the return shape (aligned with the existing output schema). An agent has enough to call it correctly; only explicit when-to-use routing is absent.

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% across 5 parameters, so the description must compensate. It explains capture (the genuine setup that clicked base_button), base_button, and target_button (defaults to base_button) reasonably, but host and port are left entirely to the schema defaults with no semantics given.

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?

The description gives a specific verb and resource ('Click a form-command BUTTON natively') and names its functional relatives (switch_page, toggle_checkbox), which lets an agent distinguish it from those siblings. It stops short of a crisp one-line purpose because the mechanism detail (the hex command, Group/Button path) crowds the opening.

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?

By calling itself the 'Button twin of switch_page / toggle_checkbox' it implies the selection rule (use this for command buttons, those for pages/checkboxes), but it never states explicitly when to choose it or when not to. The usage signal is inferable rather than stated.

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

close_windowB

Close a top-level window natively. close (and activate) are window-level commands: …SecondaryFrame[<window>] 88 82 81 — the SAME family as the dialog close in answer_dialog, applied to any top-level window. This faithfully replays the genuine navigation from capture (open form -> open the catalog list -> drill a row -> the record card opens in a new window) then the window-level close on the active card; GUID rebinder rebinds the list/card window GUIDs as they appear (first-appearance, same machinery as open_card / answer_dialog), and the replay is truncated just before any subsequent close so ONLY the target window (window_ref, default the card's record data ref) is closed. Confirmed by the closed window's (live, rebound) SecondaryFrame being reported by the client BEFORE the close but gone AFTER it (closed), and the window behind it becoming active (active_window_after). Returns {window_ref, window_sf, live_window_sf, accepted, closed, active_window_after}. NOTE: replays the captured open-card->close flow, so it closes that card window; to close a different window, capture that flow (the window-level close mechanism is identical).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card96-windows3-20260618/traffic
window_refNoe1cib/data/Справочник.Контрагенты

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/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 does: it discloses the replay mechanism, GUID rebinding, truncation just before subsequent closes so only the target window is closed, and verification via the live SecondaryFrame being reported before but gone after, plus the window behind becoming active. This is unusually rich behavioral disclosure. Auth/permission requirements and failure modes are not addressed, keeping it from a 5.

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 first sentence is well front-loaded, but the remainder is a sprawling run-on dense with internal jargon (SecondaryFrame, GUID rebinder, capture replay, truncated replay) that obscures rather than clarifies. Much of the mechanism detail is not needed to select or invoke the tool.

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 the inline return-shape listing is redundant but harmless. For a 4-parameter tool with no annotations, the description thoroughly covers behavior but leaves host/port semantics undocumented, so an agent still lacks full parameter context despite the verbose prose.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters, so the description must compensate but only partially does. It clarifies window_ref (defaults to the card's record data ref) and gives context for capture (the captured open-card flow), but host and port receive no explanation and their defaults are buried in the schema. The heavy coverage gap is only partly closed.

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?

Opens with a clear verb+resource: 'Close a top-level window natively.' It also distinguishes its scope from siblings by contrasting the window-level close against the dialog-level close in answer_dialog, so an agent can separate it from dialog handling. The clarity is undercut by heavy internal jargon, but the core action is identifiable.

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 NOTE provides real guidance: it explains that the tool replays the captured open-card->close flow and therefore closes that specific card window, and tells the user to capture that flow to close a different window. However, no explicit alternatives or when-not-to-use conditions are named beyond this constraint, leaving the agent to infer the rest.

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

com_connector_doctorA

Diagnose Windows V83.COMConnector registration and optional read smoke.

Calls the authenticated host-agent COMConnector doctor on the Windows host. The doctor checks 64-bit registration state, TypeLib presence, COM creation, file-infobase connection, and an optional read-only query. If the TypeLib is missing, the result includes the elevated C:\Windows\System32\regsvr32.exe remediation command.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNo
queryNo
prog_idNoV83.COMConnector
passwordNo
timeout_secNo
infobase_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it does well: it discloses that the doctor runs against the authenticated host-agent on the Windows host, performs a read-only query when requested, and returns an elevated regsvr32 remediation command when TypeLib is missing. It does not state whether the tool itself mutates state or requires elevated privileges to invoke, leaving a small gap.

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 tight sentences, front-loaded with the purpose and followed by scope of checks and remediation behavior. No filler, every sentence carries information.

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?

An output schema exists, so return-value explanation is not needed, and the description covers the host-agent targeting and remediation behavior. The remaining gap is parameter-level detail (credentials, prog_id, timeout) that is undocumented in both schema and description.

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

Parameters2/5

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

Schema description coverage is 0% for 6 parameters, so the description must compensate, but it only implicitly references infobase_path and query. It says nothing about user/password credentials, prog_id defaulting to V83.COMConnector, or the timeout_sec parameter, leaving half the surface undocumented.

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 states a specific verb ('Diagnose') and resource ('Windows V83.COMConnector registration') and lists exactly what the doctor checks (registration state, TypeLib presence, COM creation, connection, optional read query). This clearly distinguishes it from siblings like query_com or assert_com_count, which exercise the connector rather than diagnose its registration.

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?

The context makes clear this is a pre-flight/health-check tool run against the Windows host, and the optional read smoke is framed as such. However, it doesn't explicitly say when to prefer this over qa_mcp_doctor or query_com, nor when the read smoke should be enabled vs skipped.

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

copy_table_rowB

Copy the ACTIVE table row natively. Clicks the fixture's PF_COPY_ROW command (ДанныеФормыКоллекция.Вставить a copy of the active row right below it, marker suffixed _COPY, made active), capture-free, by replaying the genuine PF_COPY_ROW click (the identity case — no Button-leaf retarget). Example: baseline active row 1 -> PF_TABLE_SNAPSHOT=PF_TABLE[4]=PF_ROW_001|PF_ROW_001_COPY|PF_ROW_002|PF_ROW_003. Session-local form state — verify in the SAME session via assert_form_value('PF_TABLE_SNAPSHOT') / ('PF_LAST_ACTION'=='PF_COPY_ROW'). Select the target row first with select_table_row. Returns {base_button, target_button, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card97-rowops-combined-20260619/traffic-selfcontained

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 discloses substantial behavior: it replays the PF_COPY_ROW fixture click, is capture-free, inserts a copy below the active row with a _COPY suffix, makes the copy active, and notes the state is session-local. It even describes the expected return object, though it does not discuss permissions or failure modes.

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

Conciseness3/5

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

The first sentence is front-loaded and useful, but the rest is a dense run-on mixing fixture details, an example, and verification instructions. It is informative but not tightly structured or concise, with parenthetical implementation details that add noise.

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?

It covers the behavioral contract of the copy operation and gives verification guidance, and an output schema exists so return values need not be fully explained. However, it omits all parameter information and, with no annotations, does not fully describe permissions, side effects, or operational constraints.

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

Parameters1/5

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

The schema has three parameters (host, port, capture) with 0% description coverage, and the tool description never mentions them. The description compensates for none of the missing parameter semantics, leaving host/port/capture entirely undocumented beyond their defaults.

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?

The description states a specific verb and resource: 'Copy the ACTIVE table row natively,' and explicitly scopes it to the active row. It also distinguishes the operation from sibling tools like select_table_row, though the dense fixture jargon slightly obscures the plain purpose.

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 prerequisite: 'Select the target row first with select_table_row.' It also says to verify in the SAME session via assert_form_value, which helps route the agent. However, it does not explicitly contrast when to use this instead of add_table_row or move_table_row.

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

delete_table_rowA

Delete the ACTIVE table row natively. Clicks the fixture's PF_DELETE_ROW command (ДанныеФормыКоллекция.Удалить on the active row of PF_TABLE_ITEMS), capture-free, by replaying the genuine PF_COPY_ROW click (its form-open setup) retargeted to the PF_DELETE_ROW Button leaf. Example: baseline [PF_ROW_001|PF_ROW_002|PF_ROW_003], active row 1 -> PF_TABLE_SNAPSHOT=PF_TABLE[2]=PF_ROW_002|PF_ROW_003. The deletion is session-local form state (reset on a fresh form-open), so verify in the SAME session via assert_form_value('PF_TABLE_SNAPSHOT') / ('PF_LAST_ACTION'=='PF_DELETE_ROW') or capture_screenshot. Select the target row first with select_table_row. Returns {base_button, target_button, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card97-rowops-combined-20260619/traffic-selfcontained

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/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 does disclose key traits: deletion is session-local form state that resets on a fresh form-open, so it must be verified in the same session, and it returns {base_button, target_button, accepted}. It doesn't cover auth/permission requirements or error behavior, but the mutation semantics and state lifetime are unusually well documented.

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 action and its mechanism are front-loaded, followed by a worked example, verification guidance, and the return shape. It is dense and peppered with domain-specific fixture/command jargon, but each clause carries real operational information rather than repetition.

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?

For a niche form-automation mutation tool, the description covers the mechanism, the session-scoped state lifetime, how to verify success, and even restates the return object despite an output schema existing. Nothing an agent needs to invoke it correctly is missing.

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

Parameters2/5

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

Schema description coverage is 0% across host, port, and capture, and the description never mentions any of them. Even though they are connection/infrastructure params with defaults, the description does not compensate for the complete absence of schema documentation, leaving their semantics entirely to inference.

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?

First sentence gives a specific verb, resource, and scope: "Delete the ACTIVE table row natively." It also names the prerequisite sibling (select_table_row) and contrasts its mechanism against copy_table_row, so an agent can place it precisely among the row-operation siblings.

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 states the prerequisite ("Select the target row first with select_table_row") and the correct verification path (assert_form_value on PF_TABLE_SNAPSHOT/PF_LAST_ACTION, or capture_screenshot). It gives clear when-to-use context but does not state any when-not-to-use or alternative deletion paths.

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

get_stateA

Snapshot the native QA engine's session/run state. Aggregates three views: connection (the TestClient TPort liveness, + pid aliveness if given), run_session (the scenarios run this server session — counts + the last scenario/status, from the same log as get_test_results), and infobase (the configured target identity, password-redacted, from the .ai1c profile). Returns {engine {default_capture, value_read_templates}, connection {pid, alive, host, port, listening}, run_session {…aggregate…, last_scenario, last_status}, infobase {…redacted…}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidNo
hostNo127.0.0.1
portNo
env_fileNo.ai1c/vanessa-qa-mcp.env

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so reasonably: it discloses that infobase identity is password-redacted, that run_session data is sourced from the same log as get_test_results and the .ai1c profile, and that 'if given' controls whether pid aliveness is checked. The word 'Snapshot' implies a read with no side effects, though this is not stated outright.

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 the core purpose in the first clause, then tight enumeration of the three aggregated views and the return shape. It is dense but nearly every clause carries information; the return-shape listing is slightly redundant given an output schema exists.

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?

For a read-only diagnostic aggregator with an output schema, the description is complete enough: data sources, redaction, and per-param behavior are covered. It need not restate return values since the output schema exists, and it omits nothing critical for correct invocation.

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 description coverage is 0%, so the description must compensate for four undocumented params. It does clarify that pid is optional ('if given') and drives an aliveness check, and that env_file relates to the .ai1c profile, but host and port are left to inference via the 'TestClient TPort liveness' and return-shape hints. Partial compensation only.

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?

The verb 'Snapshot' plus the resource 'native QA engine's session/run state' is specific, and the description enumerates exactly what is aggregated (connection, run_session, infobase). It references related siblings (get_test_results, infobase_info territory) but never states explicitly why an agent would pick this over test_client_status or infobase_info, so it falls just short of full sibling differentiation.

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?

Usage is only implied: the description frames this as a state snapshot, which nudges toward diagnostic/monitoring use, and it notes the run_session data comes from the same log as get_test_results. But there is no explicit when-to-use, when-not-to-use, or named alternative to route the agent.

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

get_test_resultsA

Aggregate the scenarios run in THIS MCP-server session natively. Every run_scenario / run_step / run_write_scenario_tool call records its outcome; this returns the roll-up: {scenarios, passed, failed, total_steps, step_status_counts {ok|assert_failed|error: n}, results:[{scenario, status, step_count, steps:[{kind, name, status}]}]}. The log is process-lifetime, in-memory; pass clear=true to report the current roll-up AND reset it (adds cleared = how many were dropped). Use it after a batch of scenarios to get a single pass/fail report instead of eyeballing each ScenarioResult.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are present, so the description carries the full disclosure burden and does so well: it explains the log is process-lifetime and in-memory, and that clear=true is a side-effecting option that both reports and resets state, returning a 'cleared' count. Disclosing the destructive reset semantics is exactly the context annotations would otherwise provide.

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-loads the purpose and lifetime before the mechanics, and every sentence is functional. The inline enumeration of the return shape is somewhat verbose, especially since an output schema already exists, but it reads as intentional documentation rather than filler.

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?

For a single-parameter aggregation tool this covers purpose, data source, lifetime, side effects, and usage trigger. With an output schema present it did not need to detail return values, yet the extra detail causes no harm and nothing an agent needs to call it correctly is missing.

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% and the sole parameter has no schema description, so the description must compensate. It does: 'clear=true to report the current roll-up AND reset it (adds cleared = how many were dropped)' fully defines the parameter's meaning, default behavior, and one extra return field.

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 with explicit scope: 'Aggregate the scenarios run in THIS MCP-server session natively.' It names the contributing tools (run_scenario / run_step / run_write_scenario_tool) and the scope boundary (process-lifetime), so an agent can immediately distinguish it from run_scenario and write_test_report.

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?

Gives clear context for use: 'Use it after a batch of scenarios to get a single pass/fail report instead of eyeballing each ScenarioResult.' That is a concrete trigger, but it does not name the sibling alternative (write_test_report) or state when NOT to call it, so routing between the two report tools is left to inference.

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

get_window_listA

Enumerate the visible OS windows on the TestClient's X display natively. Lists the window-manager's top-level windows on display (the one from launch_test_client(display=…) status, e.g. ":101") via xdotool — id + title (+ geometry {x, y, width, height} unless geometry=false). Use to see what the client has open (main window, an opened list/card, a modal dialog) at the OS level; address an individual window programmatically with activate_window / close_window. Requires xdotool + a launched display. Returns {display, count, windows:[{id, title, geometry?}]}. (The protocol-level "windows known to the test client" list is get_window_list_testclient.)

ParametersJSON Schema
NameRequiredDescriptionDefault
displayYes
geometryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations exist, so the description carries the full behavioral burden and does well: it discloses the prerequisite tooling ('Requires xdotool + a launched display'), the native-vs-protocol distinction, and the conditional shape of each entry ('geometry {x,y,width,height} unless geometry=false'). It does not say what happens on a missing/invalid display or whether the call is strictly side-effect free, but the enumeration framing makes the read-only nature clear.

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 the core action and organized as purpose → usage → return shape → sibling disambiguation. It is dense and slightly parenthesis-heavy, but no sentence is wasted and the most decision-relevant content (OS-level vs protocol-level) comes early.

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?

For a two-parameter read tool with no annotations, the description covers prerequisites, scoping, parameter meaning, and sibling disambiguation. It redundantly restates the return shape despite an output schema existing, but that costs little and the definition leaves an agent with nothing blocking a correct call.

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 description coverage is 0%, so the schema alone would leave both parameters opaque; the description compensates by giving the origin and format of 'display' (from launch_test_client(display=…) status, e.g. ":101") and the effect of 'geometry=false'. This is real added meaning, though it stops short of stating validation or error behavior for a wrong display string.

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 ('Enumerate the visible OS windows on the TestClient's X display natively') and pins the scope to the OS/X level rather than the protocol level. It explicitly names the sibling it is not, get_window_list_testclient, so an agent can distinguish the two 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?

Gives the concrete use case ('see what the client has open — main window, an opened list/card, a modal dialog') and routes follow-up work to the right siblings ('address an individual window programmatically with activate_window / close_window'). It also states the prerequisites (xdotool plus a launched display), so the when-to-use conditions are explicit.

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

get_window_list_testclientA

Enumerate the 1C-internal windows/tabs open in the TestClient natively. This is the protocol-level list (the 1C windows the client tracks — main desktop, an open form/list/card tab, a dialog), DISTINCT from get_window_list which lists OS top-level X windows (1C opens forms as MDI tabs inside ONE X window, so the OS list does not see them). Replays the genuine window-list query on a live session (grafted onto a live value-read header so the session GUIDs match — a raw replay is rejected) and decodes each window's caption + frame kind (SecondaryFrame | MainFrame | HomePage). Each window record's caption is the window title (Cyrillic-aware). SCOPE: like read_form_descriptor, each call is a FRESH session, so it lists the windows of the session it opens (the fixture form + desktop + home page); address an individual window with activate_window / close_window. If you only need to prove MCP-to-TestClient connectivity without a form target, run qa_mcp_doctor and inspect its testclient_smoke check. Form-level reads that need a target should pass open_link such as e1cib/list/<metadata>. Returns {count, windows:[{kind, guid, caption}]}. Decoded + validated against a genuine analysis oracle (4 windows).

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so richly: it discloses that each call opens a FRESH session (so it only lists that session's windows), that the raw replay would be rejected and is grafted onto a live value-read header for matching GUIDs, and that output is decoded/validated against an oracle. This is behavioral context beyond any structured field.

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

Conciseness3/5

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

Purpose is front-loaded, but the body is dense and overstuffed with packed parentheticals, a SCOPE block, and marginal asides (e.g. 'Decoded + validated against a genuine analysis oracle (4 windows)'). It is informative but not tight.

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?

An output schema exists, so return values needn't be spelled out, and the description still summarizes them ({count, windows:[{kind,guid,caption}]}). Behavior and scope are well covered for a no-annotation tool; the gap is undocumented parameters, which are largely plumbing defaults.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters (host, port, capture_dir, manager_templates), all undocumented. The description never explains these parameters, so obscure ones like capture_dir and manager_templates remain opaque; the description does not compensate for the coverage gap.

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 first sentence names a specific verb and resource ('Enumerate the 1C-internal windows/tabs open in the TestClient') and immediately contrasts with the sibling get_window_list, explaining the MDI-tab distinction. An agent can differentiate this from get_window_list 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?

It explicitly routes the agent: use get_window_list for OS-level X windows, activate_window/close_window to address individual windows, qa_mcp_doctor for a connectivity-only smoke check, and open_link for form-level reads needing a target. The SCOPE paragraph states the fresh-session constraint directly.

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

infobase_infoA

Report the configured TestClient infobase / connection metadata natively. Reads the local .ai1c/*.env profile (INFOBASE_PATH / PLATFORM_ROOT / TEST_CLIENT_KIND / TEST_CLIENT_USER) into a target descriptor — the password is never echoed (only password_set) — and reports whether the TPort at host:port is live. Override the profile with infobase_path / env_file. Returns {env_file, env_present, infobase {host, port, kind, user, target, headless, display, password_set}, platform_root, client_bin, listening}. Richer config name/version metadata (from the handshake) is a decode follow-up.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
env_fileNo.ai1c/vanessa-qa-mcp.env
infobase_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/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 does disclose meaningful traits: the password is never echoed (only password_set), the profile is read locally, and a live liveness probe is performed at host:port. It does not state failure behavior when the env file is absent or whether it is strictly read-only, but the disclosure is well above average for an unannotated tool.

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

Conciseness3/5

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

Purpose is front-loaded, but the closing enumeration of the return object ({env_file, env_present, infobase {...}, platform_root, ...}) is redundant since an output schema exists, and phrasing like 'natively' and 'target descriptor' adds jargon without information.

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?

Because an output schema exists, return values need not be explained, and the description covers source, security handling, liveness check, and a scope limitation. The main residual gap is that it never says when this is preferable to the sibling connection-status tools.

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 description coverage is 0%, so the description must compensate and largely does: it identifies env_file as the profile path, infobase_path as the override, and host/port as the TPort liveness target. Defaults and accepted format for infobase_path are still unstated, keeping it short of a 5.

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 and resource: report TestClient infobase/connection metadata, naming the exact source (.ai1c/*.env profile) and the live TPort check. It is clear what the tool does, but it never contrasts itself with the near-identical sibling test_client_status or get_state, so an agent must infer the split.

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?

Usage is only implied — the agent learns it can override the profile with infobase_path/env_file and that richer handshake metadata is a separate 'decode follow-up'. There is no explicit when-to-use versus test_client_status, qa_mcp_doctor, or com_connector_doctor, and no stated prerequisites.

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

launch_test_clientA

Launch a 1C /TESTCLIENT and wait for its TPort to listen.

Loads the local .ai1c/*.env profile (INFOBASE_PATH / PLATFORM_ROOT / TEST_CLIENT_USER/KIND/PASSWORD), overridden by any args given. Boots 1cv8 ENTERPRISE /IBConnectionString File="…"; /N<user> /TESTCLIENT -TPort <port>. The client OUTLIVES this call — connect with run_scenario/write_form_value(port=…), then tear down with stop_test_client(pid, xvfb_pid). Set manage_apache=true for an Apache-served infobase (stops apache2 for the boot, restart on stop_test_client).

Display (for screenshots): pass display=":101" (or "auto") to OWN an Xvfb on that display and run the client with DISPLAY=:N — then capture_screenshot(display) works. Default (None) uses xvfb-run -a (no screenshots). Returns {pid, alive, listening, display, xvfb_pid, connection (password-redacted), out_dir, launch_environment}. The password is never echoed back. For an explicitly authorized Windows hardware/network-license contour, set use_hardware_licenses=true; when omitted, ignored runtime state may opt in with QA_MCP_TESTCLIENT_USE_HW_LICENSES=1.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
portNo
userNo
displayNo
env_fileNo.ai1c/vanessa-qa-mcp.env
headlessNo
wait_secNo
infobase_pathNo
manage_apacheNo
use_hardware_licensesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations to lean on, the description carries the full burden and does so well: the client OUTLIVES the call, it states the returned keys, notes the password is never echoed, explains Xvfb ownership and DISPLAY semantics, the apache stop/restart behavior under manage_apache, and the license opt-in. This is rich behavioral disclosure beyond the schema.

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 purpose and success condition are front-loaded, and the dense body is organized into natural phases (boot, lifecycle, display, return, licensing). It is information-dense but nearly every clause adds an operational detail, with only mild over-packing.

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?

An output schema exists, yet the description still usefully enumerates the returned keys and the password-redaction guarantee. Given the complexity of a long-running process with Xvfb/apache/license dimensions, it is nearly complete, missing only behavioral detail on headless and wait_sec.

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 description coverage is 0% across 10 parameters, so the description must compensate. It meaningfully documents display, manage_apache, use_hardware_licenses, the env profile fields, and mentions port in the boot command, but leaves headless, wait_sec, env_file (beyond its raw default) and the exact env variable mapping under-explained.

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 first sentence gives a specific verb+resource ('Launch a 1C /TESTCLIENT') plus an observable success condition (wait for its TPort to listen), and the broader text implicitly distinguishes it from attach_test_client and stop_test_client by framing launch/connect/teardown phases. An agent can tell what this does without opening the schema.

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 explicitly routes the agent to the lifecycle partners: connect with run_scenario/write_form_value(port=…), then tear down with stop_test_client(pid, xvfb_pid), and explains when display=None vs display=":101" matters. It lacks an explicit contrast with attach_test_client, but the usage context is otherwise clear.

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

move_table_rowA

Move the ACTIVE table row up or down natively. direction in {"up","down"} clicks the fixture's PF_MOVE_ROW_UP / PF_MOVE_ROW_DOWN command (ДанныеФормыКоллекция.Сдвинуть(±1) on the active row, no-op at the table boundary), capture-free, by replaying the genuine PF_COPY_ROW click retargeted to the move Button leaf. Example: baseline active row 1 + "down" -> PF_TABLE_SNAPSHOT=PF_TABLE[3]=PF_ROW_002|PF_ROW_001|PF_ROW_003. Session-local form state — verify in the SAME session via assert_form_value('PF_TABLE_SNAPSHOT') / ('PF_LAST_ACTION'). Select the target row first with select_table_row. Returns {base_button, target_button, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card97-rowops-combined-20260619/traffic-selfcontained
directionNoup

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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 it discloses meaningful traits: no-op at the table boundary, session-local form state that must be verified in the same session, and a return shape {base_button, target_button, accepted}. These go well beyond a restatement of the name.

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

Conciseness3/5

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

The action is front-loaded in the first sentence, but the passage is a dense single paragraph crowded with internal fixture identifiers (PF_MOVE_ROW_UP, ДанныеФормыКоллекция.Сдвинуть) that add implementation noise without helping selection.

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?

An output schema exists, so return values need not be spelled out (though they are). Combined with the prerequisite, boundary no-op behavior, and same-session verification guidance, the definition is nearly complete for this operation.

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 description coverage is 0%, so the description must compensate for all four parameters. It clarifies the key parameter – direction in {"up","down"} with a worked example – but host, port, and capture remain completely undocumented in both schema and description.

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?

It states a specific verb and resource – 'Move the ACTIVE table row up or down' – and the word 'move' distinct from siblings copy_table_row, delete_table_row, and add_table_row. The purpose is clear, though it is embedded in heavy fixture jargon that partially obscures the plain meaning.

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 an explicit precondition ('Select the target row first with select_table_row') and states the verification path ('verify in the SAME session via assert_form_value'). It does not explicitly contrast with copy/delete/add alternatives, but the context of use is clear.

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

open_cardA

Open a record CARD by drilling into a catalog list row natively. Drilling into a list item opens the record's form in a NEW top-level window (a fresh SecondaryFrame, like a dialog). This faithfully replays the genuine navigation from capture (open the fixture form -> open the catalog list via a nav link -> «Изменить» the active row -> the card form opens). Each new window's per-open SecondaryFrame GUID is rebound by GUID rebinder automatically (first-appearance, like the dialog window — the same new-window machinery as answer_dialog). Opening is confirmed by result_marker (a card-specific UTF-16 string, e.g. the card form id "ФормаГруппы") reading back. Returns {result_marker, opened}. Opens the captured active row's card; to open a SPECIFIC row, precede with a row-select (compose with select_table_row).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card96-opencard-20260618/traffic
result_markerNoФормаГруппы

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that opening creates a new top-level window (SecondaryFrame), that GUID rebinding occurs automatically, and that success is confirmed by result_marker readback. It does not cover failure modes or permissions, but it is unusually detailed for a test tool.

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 a single, front-loaded paragraph that starts with the core action. It includes deep technical details about GUID rebinding and navigation replay, which may be more than some agents need, but the information is relevant and not repetitive.

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 no annotations and no schema descriptions, the description must supply almost all context. It covers purpose, behavior, composition with select_table_row, and the output shape (though an output schema exists), but the missing host/port parameter semantics leave a gap for a tool with four parameters.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all four parameters. It explains result_marker (a card-specific UTF-16 string) and mentions capture in the context of replaying navigation, but it provides no information about host or port, leaving half the parameters undocumented.

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 ('Open') and resource ('record CARD') and the mechanism ('drilling into a catalog list row natively'). It distinguishes from sibling tools by naming select_table_row for specific rows and answer_dialog as a similar new-window mechanism.

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 says it opens the captured active row's card and instructs to precede with a row-select (compose with select_table_row) for a specific row. This provides clear when-to-use guidance and an alternative path.

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

open_external_processorA

Open an EXTERNAL data processor/report (.epf/.erf) in the running client the 1C-NATIVE way. NO external input component, NO config object: drives «Главное меню (≡, top-right) -> Файл -> Открыть» (located on-screen via locate_text) -> the GTK file chooser -> Ctrl+L -> types path Unicode-safe (xtest_type_unicode — plain typing drops Cyrillic) -> Enter. The Gherkin step «Я открываю внешнюю обработку или отчет '' (Расширение)» maps to this. PREREQ (as for write_form_value_xtest): the client was launched with an Xvfb display + a window manager (matchbox). Pass expect_caption (e.g. a substring of the processor's window title) to verify the form opened. Returns {path, opened, caption_found, dialog_closed, screenshot, located}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
displayYes
settle_secNo
main_menu_xNo
main_menu_yNo
expect_captionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 disclosure burden and does so well: it details the exact UI/dialog driving mechanism (main menu -> Файл -> Открыть, GTK chooser, Ctrl+L, Unicode-safe typing via xtest_type_unicode) and the Xvfb/window-manager prerequisite. It stops short of describing failure modes or timing/race behavior beyond settle_sec.

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 the core action and resource, and the dense parentheticals all carry substantive detail rather than filler. It is verbose and the Cyrillic/step-name asides add length, but almost every clause earns its place.

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?

For a complex UI-driving tool with 6 params, no annotations, and an output schema, the description covers the mechanism, prerequisites, verification option, and the return shape. Since an output schema exists, return values need not be re-explained, and the description is complete enough to call the tool correctly.

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 description coverage is 0%, so the description must compensate. It adds meaning for path (Cyrillic-safe typing), display (must be an Xvfb display with WM), and expect_caption (verifies the form opened), but leaves main_menu_x, main_menu_y, and settle_sec unexplained despite being tunable coordinates/timing.

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+resource: opening an external data processor/report (.epf/.erf) in the running client via the native 1C mechanism. It distinguishes itself from siblings like run_report by stressing 'EXTERNAL' and 'NO external input component, NO config object', so an agent can tell it apart without opening schemas.

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 clear usage context by mapping the Gherkin step «Я открываю внешнюю обработку или отчет '<path>'» to this tool and stating a prerequisite (Xvfb display + window manager). However, it does not explicitly name an alternative for related tasks (e.g. run_report for internal reports) or state when NOT to use it.

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

open_listA

Open a catalog/list window natively through e1cib/list/<path>.

Omitting capture (or passing a blank value) uses the released, version-selected bundled bootstrap and value-read navigation templates. All assets are loaded and structurally checked before a TestClient session opens; missing assets return open-list-navigation-unavailable with protocol_write_attempted=false.

A non-blank capture preserves the explicit capture-replay compatibility path. navigation_templates optionally selects a controlled value-read template JSON for the default template-backed path. Returns the requested base_link/target_link, the navigation method, and whether the target form resolved. A list-open has no business-data mutation or value read-back.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNo
catalogNo
base_linkNoe1cib/list/Справочник.Товары
navigation_templatesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 does meaningful work: assets are 'loaded and structurally checked before a TestClient session opens', missing assets yield 'open-list-navigation-unavailable with protocol_write_attempted=false', and 'A list-open has no business-data mutation or value read-back' signals a safe read-only operation. Gaps remain around session prerequisites (host/port/auth) and re-entrancy, but the failure contract and side-effect profile are unusually well disclosed.

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

Conciseness3/5

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

The purpose is front-loaded and every paragraph touches real behavior, but the prose is dense with backtick-quoted internal tokens and stacked clauses ('the released, version-selected bundled bootstrap and value-read navigation templates') that slow parsing. It is not padded, but it is not cleanly tightened either.

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?

For a six-parameter TestClient tool the description covers the key behavioral contract and, with an output schema present, is not obliged to spell out return values (though it gestures at them anyway). It still omits connection-parameter meaning and sibling routing, so it is adequate rather than complete.

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 description coverage is 0%, so the description must compensate, and it only partially does: it clarifies capture (blank vs non-blank) and navigation_templates ('selects a controlled value-read template JSON'), and references base_link/target_link. It says nothing about host, port, or the catalog parameter, leaving three of six parameters undocumented anywhere.

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 and resource ('Open a catalog/list window natively through e1cib/list/<path>'), so the core action is unambiguous and distinct from open_card or open_external_processor. However, it never explicitly contrasts itself with siblings like search_list or open_card, leaving the reader to infer the boundary from the resource name alone.

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?

It does explain two operating modes ('Omitting capture... uses the released, version-selected bundled bootstrap' vs 'A non-blank capture preserves the explicit capture-replay compatibility path'), which is genuine conditional guidance. But it never says when to reach for open_list versus alternatives such as open_card, search_list, or advanced_search, so the routing decision is left implicit.

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

qa_mcp_doctorA

Run the secret-safe end-to-end qa-mcp setup doctor.

The doctor returns one ordered pass/fail/skipped chain for project-owned bearer-token env presence, host-agent HTTP reachability, container-to-host route, TestClient TPort reachability, an open-link-free TestClient smoke and login/access-dialog state. Platform, COM and private-suite diagnostics are intentionally outside the standalone route. When require_bearer_token is omitted, bearer auth is required for HTTP transports and skipped for stdio.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
com_userNo
com_queryNo
timeout_secNo
com_passwordNo
com_infobase_pathNo
require_bearer_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and adds substantial behavioral context: it returns an ordered pass/fail/skipped chain for a defined set of checks, is described as 'secret-safe,' and explains that omitted require_bearer_token defaults to requiring bearer auth for HTTP transports and skipping it for stdio. It still does not explicitly state that the tool is read-only or list required permissions, which leaves a small gap for a diagnostic tool.

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 front-loaded with the core purpose and then efficiently details the check chain and scope exclusions. It is dense but each sentence contributes useful information. Minor redundancy between the first sentence and the following elaboration keeps it from being a perfect 5, but there is no wasted filler.

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

Completeness2/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 values need not be explained. However, the description leaves most of the 8 input parameters undocumented, and with no annotations, it should explain parameter meaning and safety. Given the tool's complexity (8 parameters, several com_* fields), the description is incomplete for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% for 8 parameters, so the description must compensate. It only explains one parameter, require_bearer_token, and its default behavior. The other seven parameters (host, port, com_user, com_query, timeout_sec, com_password, com_infobase_path) receive no mention or explanation, leaving most inputs opaque to an agent.

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 opens with a specific verb and resource: 'Run the secret-safe end-to-end qa-mcp setup doctor.' It then enumerates exactly what the doctor checks and explicitly distinguishes itself from sibling diagnostics by stating that 'Platform, COM and private-suite diagnostics are intentionally outside the standalone route.' This gives an agent a precise, unambiguous scope.

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 provides clear context: this is for the standalone qa-mcp setup route, and it lists the checks performed. It also gives an exclusion: Platform, COM, and private-suite diagnostics are outside the route. However, it does not name an alternative tool or state conditions like 'use this before X' or 'prefer com_connector_doctor when Y', so it stops short of explicit when/when-not/alternatives guidance.

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

query_comA

Run a read-only 1C query through the Windows host-agent COM bridge.

This is the file-infobase data path for model-B installs without OData: qa-mcp sends an authenticated host-agent /com/execute WorkerRequest to the bundled ai-com-worker.exe on the Windows host. Obvious write-shaped query text is rejected locally before host transport. Configure QA_MCP_HOST_AGENT and QA_MCP_HOST_AGENT_TOKEN; the host install must have ai-com-worker.exe available for /com/execute.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNo
queryYes
prog_idNoV83.COMConnector
max_rowsNo
passwordNo
timeout_secNo
infobase_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses read-only semantics, local write-text rejection before host transport, the authenticated /com/execute hop, and the required QA_MCP_HOST_AGENT / QA_MCP_HOST_AGENT_TOKEN config plus host install prerequisite. It omits timeout/max_rows behavior and any rate or failure-mode detail.

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-loads the purpose in the first sentence, then supplies mechanism and prerequisites. The transport and env-var detail is dense but each sentence carries operational information; no obvious padding.

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 values need not be described, and the safety/auth prerequisites are covered. But for a 7-parameter tool with no annotations and zero schema coverage, the description leaves parameter meaning entirely undocumented, which is a real gap.

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

Parameters2/5

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

Seven parameters at 0% schema description coverage, so the description must compensate and largely does not. It never explains infobase_path, user, password, prog_id, max_rows, or timeout_sec; only the query parameter is indirectly touched via the write-rejection note.

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 ('Run a read-only 1C query') and specifies the mechanism and data path ('query through the Windows host-agent COM bridge', 'file-infobase data path for model-B installs without OData'). An agent can identify the operation, though it does not explicitly contrast with likely alternatives like advanced_search or read_record.

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?

Gives clear context for when this path applies ('model-B installs without OData') and states that write-shaped query text is rejected locally. However, it never names an alternative tool for when this path is not available, leaving routing to inference.

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

read_form_descriptorB

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).

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

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.

read_list_columnA

Read the CURRENT (first) ROW's value of a dynamic-list (dynlist) column natively — the «Я открываю основную форму списка справочника … + перехожу к первой строке + я запоминаю значение поля с именем 'X'» equivalent for a catalog LIST form. Opens the list at open_link (e.g. e1cib/list/Справочник.Товары), positions to the first row, and reads column (e.g. Наименование / Код) of the resolved dynlist table. By default the table is resolved from the live descriptor (single table -> that table; metadata-name/legacy Список matches when needed); pass table to select explicitly. Returns {table, column, nav_link, value, captured_value, list_refresh, table_resolution}.

MECHANISM: a FAITHFUL FULL-SEQUENCE replay of a genuine list-form read (navigate -> activate -> render/data-load -> position -> read), with GUID rebinder rebinding the per-session window GUIDs and the nav-link + column re-targeted in-frame. (A piecemeal splice does NOT work — the dynlist needs the interaction-ready open state a splice cannot reach; use read_table_cell for FORM tables, where row 1 is current on open.) Live-verified (against OData): Товары/Наименование->«Обувь», Товары/Код->«000000001», Контрагенты/Наименование->«Покупатели», Валюты/Наименование->«EUR». CURRENCY: a dynamic list is async/eventually-consistent, so refresh=True (default) forces an «Обновить»/F5 requery and polls-until-stable before reporting, so a value=None only ever means a genuinely empty cell — never a not-yet-loaded list; refresh=False opts out (records "no refresh applied") for absence assertions. list_refresh records the refresh method + poll outcome. Table-resolution failures return structured list-table-* diagnostics and do NOT run a wrong-table replay or call the list genuinely empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
tableNo
columnYes
refreshNo
open_linkYes
capture_dirNolistform-read

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the async/eventually-consistent nature of dynlists, that refresh=True forces an F5 requery and polls until stable so value=None is trustworthy, that refresh=False opts out, and that table-resolution failures emit structured diagnostics rather than a false empty. This is exactly the behavioral context an agent needs and gets from nothing else.

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

Conciseness3/5

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

Purpose and the key usage constraint are front-loaded, but the definition is bloated: an embedded Russian-language narrative, a MECHANISM paragraph justifying the replay approach, and live-verification examples that inform an implementer more than a caller. The refresh/consistency content earns its place; the replay-justification prose does not.

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?

For a high-complexity tool with an output schema (which covers the returns, redundantly re-listed here), the description is quite complete on behavior and caveats. The remaining gap is that three connection/capture parameters are undocumented, and no permission or authentication prerequisites are stated.

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 description coverage is 0%, so the description must compensate, and it does so for four of seven parameters (column, open_link and table with examples, refresh with default semantics). host, port, and capture_dir are never explained, leaving real gaps. Because the schema provides no per-parameter help, this is only partially adequate.

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 opening sentence gives a specific verb (read), a precise resource (current/first row value of a dynamic-list column), and a specific context (catalog LIST form). It then explicitly differentiates itself from the sibling read_table_cell by scoping that tool to FORM tables, so an agent can route correctly 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 Guidelines4/5

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

It gives an explicit alternative (read_table_cell for FORM tables) and a conditional rule for refresh (True default vs False for absence assertions). It does not, however, address when to prefer this over the other list-reading siblings (read_list_row, read_list_grid, read_list_grid/search_list), leaving some routing ambiguity.

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

read_list_gridA

Read MANY ROWS × columns of a dynamic list (the whole visible grid) in ONE call. Opens the list at open_link (e.g. e1cib/list/Справочник.Товары), reads the first row's columns (e.g. ["Код", "Наименование"] of the resolved dynlist table), then steps «перехожу к следующей строке» and reads again, up to max_rows rows or end-of-list. By default the table is resolved from the live descriptor; pass table to select explicitly. Returns {table, nav_link, row_count, rows: [{column: value}, …], list_refresh, table_resolution}.

flat (default False) reads the list's CURRENT view/sort order. A HIERARCHICAL catalog (e.g. Товары) defaults to a grouped view, so the grid then exposes only the TOP-LEVEL folders (Обувь/Продукты/…). Set flat=True to first switch the list to flat «Список» view (the standard catalog-list-form «ФормаСписок» view-mode command, baked into the genuine capture) so NESTED items are read too — live-verified on Товары (flat -> Bosch1234/Sony К3456P/Босоножки/… nested rows, codes vs OData). flat selects the capture; pass capture_dir to override explicitly.

CURRENCY: a 1C dynamic list is async/eventually-consistent, so refresh=True (default) forces an «Обновить»/F5 requery and polls-until-stable before reporting — a freshly-created record shows up and a reported 0 rows only ever means a genuinely empty list. refresh=False opts out (records "no refresh applied") for an absence assertion. wait_for_rows=N blocks until at least N rows are read or the bounded poll timeout elapses (list_refresh.wait_for_rows_met reports which). list_refresh records the refresh method + poll outcome. Table-resolution failures return structured list-table-* diagnostics and do NOT run a wrong-table replay or call the list genuinely empty.

Mechanism: a genuine next-row capture replayed cold (faithful full-replay through the first read — which for the flat capture also replays the view-switch — then the genuine go-to-next-row block, the decoded next-row action GUID d267315b…, replayed + the reads, all on the one materialised socket, message-id kept + sequence bumped). Live-verified the cursor advances. One grid read per fresh launch_test_client (the cold-client boundary). Use read_list_row for a single row (or a row by value), read_list_column for a single cell, read_table_cell for FORM tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
flatNo
hostNo127.0.0.1
portNo
tableNo
columnsYes
refreshNo
max_rowsNo
open_linkYes
capture_dirNo
wait_for_rowsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so extensively: eventual consistency of 1C dynamic lists, default refresh/poll-until-stable semantics, the meaning of a reported '0 rows', wait_for_rows blocking behavior, hierarchical-vs-flat view defaults, table-resolution failure diagnostics that do NOT run a wrong-table replay, and the one-grid-read-per-fresh-client constraint. This is exactly the behavioral context an agent needs for a stateful, capture-replay tool.

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

Conciseness3/5

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

The core is correctly front-loaded in the first sentence, and the labeled paragraphs (FLAT, CURRENCY, Mechanism) aid scanning. However the 'Mechanism:' paragraph — message-ids, action GUIDs, socket materialisation, sequence bumping — is internal implementation detail that does not help an agent decide or invoke correctly, and the description is long overall.

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?

For a 10-parameter, unannotated, high-complexity capture-replay tool, the definition covers invocation conditions, view-mode pitfalls, consistency behavior, and failure modes. An output schema exists so return-shape documentation is optional, and the description's return summary is a bonus rather than a necessity; the minor gap is the undescribed host/port/capture_dir parameters.

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 0% across 10 parameters, so the description must compensate — and it explains the important ones: open_link (with a concrete example), columns, max_rows, flat (with default and effect), table, refresh, wait_for_rows, and list_refresh semantics. Only host/port and capture_dir are left largely unaddressed, which keeps it short of a 5 given the low schema coverage.

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 with explicit scope: 'Read MANY ROWS × columns of a dynamic list (the whole visible grid) in ONE call'. It also names the siblings it is not (read_list_row, read_list_column, read_table_cell) and states the axis of difference (many rows vs single row vs single cell vs form tables). An agent can pick this tool 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?

Explicit when/when-not guidance: use this for the whole grid, use read_list_row/read_list_column/read_table_cell for narrower reads. It also gives conditional guidance for sub-parameters (set flat=True for hierarchical catalogs, refresh=False for absence assertions, pass table to select explicitly). Routing is unambiguous.

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

read_list_rowA

Read SEVERAL columns of a dynamic-list row in ONE call. Opens the list at open_link (e.g. e1cib/list/Справочник.Товары) and reads each name in columns (e.g. ["Код", "Наименование"]) of the standard dynlist table Список. Returns {table, nav_link, row: {column: value}, list_refresh} (+ where when given).

where selects the ROW: omit it to read the FIRST (current) row; pass a single {column: value} (e.g. {"Наименование": "Молоко"}) to position the list to the row WHERE column == value first — the «в таблице "Список" я перехожу к строке: | col | value |» equivalent — then read THAT row. The where-row path is a faithful full-sequence replay of a genuine DYNLIST go-to-row-by-value capture (a splice of the FORM-table «перехожу к строке» onto a live dynlist did NOT reposition; the full-sequence replay does), value retargeted in-frame; live-verified on Товары (Наименование=Молоко -> Код 000000026 vs OData). Matching by «Наименование» is the verified path. One row read per fresh launch_test_client (the cold-client boundary), reading all requested columns inside the one materialised session (message-id kept, sequence bumped). CURRENCY: refresh=True (default) forces an «Обновить»/F5 requery + poll-until-stable so an all-None row is only ever a genuinely empty row, not a not-yet-loaded list; refresh=False opts out. For iterating every row use read_list_grid; read_list_column for a single cell; read_table_cell for FORM tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
whereNo
columnsYes
refreshNo
open_linkYes
capture_dirNolistform-read

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.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 does so well: it discloses the cold-client boundary (one row read per fresh launch_test_client), session behaviour (message-id kept, sequence bumped), the default refresh/requery semantics, and the verified matching path. It stops short of stating auth/permission needs or error/failure behaviour, so not a full 5.

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

Conciseness3/5

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

The purpose is front-loaded in the first sentence, which is good, but the text is long and includes implementation/testing trivia (the 'splice of the FORM-table' replay discussion, live-verified vs OData details) that is not needed to invoke the tool. Conciseness is adequate but leaks developer reasoning.

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?

An output schema exists, so return values need not be explained, yet the description even summarises the return shape. Combined with the routing guidance and refresh semantics, an agent has enough to call it correctly; the only gaps are the undocumented host/port/capture_dir parameters.

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 0%, so the description must compensate; it explains open_link, columns, where, and refresh with examples and default semantics. It does not explain host, port, or capture_dir, leaving three of seven parameters undocumented, which keeps it from a 5.

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 ('Read SEVERAL columns of a dynamic-list row in ONE call') and pins the scope with concrete examples (open_link, columns). It explicitly differentiates itself from siblings by naming read_list_grid (iterate all rows), read_list_column (single cell), and read_table_cell (FORM tables).

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?

Names the alternative tools and the exact condition that selects each one, so the agent can route without opening schemas. It also gives explicit when-to-use guidance for the 'where' parameter (omit for first row, pass to position by value).

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

read_recordA

Read the actual object-attribute VALUES of an EXISTING POPULATED catalog/document RECORD natively (no per-form capture). Opens the record's form by its reference navigation link (e1cib/data/<record_type>?ref=<ref>) and value-reads every object attribute, decoding the canonical «стал равен» value (string / number / date / enum-presentation / UTF-16; ASCII + Cyrillic). record_type is the metadata full name (e.g. Справочник.Товары); ref is the object's reference UUID — pass the natural dashed form (the OData Ref_Key / УникальныйИдентификатор, e.g. a7a30aaf-321b-11dd-8d3a-000d8843cd1b) and it is auto-encoded to the e1cib hex token, or pass the 32-hex token directly. Returns {opened, record_type, ref, fields {name: value}, field_count, elements, element_count} (+ a Gherkin state block when gherkin).

Live-verified (against OData): Товары/«Доставка» -> {Наименование: «Доставка», Код: «000000037», Вид: «Услуга», Родитель: «Услуги», …} (12 attribute values); Контрагенты/«Покупатели» -> {Наименование: «Покупатели», Код: «000000002»}. The reference-link ref encoding (UUID groups g4·g5·g3·g2·g1) was decoded from the genuine open-card capture.

COLD-CLIENT BOUNDARY: small / catalog-group (ФормаГруппы) record forms read reliably on a freshly launched client. A LARGE item form (e.g. an 80-element Товар card) materialises its attribute DATA only once the client PROCESS has fully opened a form at least once — the first cold open enumerates the element tree but the per-field reads echo with no value (field_count 0 with element_count > 0). To read a large record cold, WARM the client first with one read of a DIFFERENT record (any small/group record), then read the target; re-opening the SAME record does not help (a 2nd same-caption window breaks newest-window detection). This is the same cold-client boundary the dynlist reads observe.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
hostNo127.0.0.1
portNo
gherkinNo
capture_dirNotm-v1-ro-batchQ3
record_typeYes
manager_templatesNo/app/src/qa_mcp/_bundled/8.3/templates/value_read_templates.json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly: it discloses the reference-link/URL encoding mechanism, the auto-encoding of the dashed UUID to the e1cib hex token, the exact return shape, and the cold-client failure mode (field_count 0 with element_count > 0, and that re-opening the same record does not help). These are non-obvious behavioral traits an agent could not infer from structured fields.

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

Conciseness3/5

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

The first sentence front-loads the purpose well, but the body is dense and overstuffed with bilingual examples, encoding history, and a live-verified sample that go beyond what an agent needs to call the tool. It earns more of its length than a typical spec, yet still reads as heavier than necessary.

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, yet the description still supplies the failure-mode and pre-warming guidance that the schema cannot express, and the complexity of native COM automation warrants it. For this tool's complexity, nothing an agent needs to invoke it correctly — encoding, required inputs, and cold-client caveat — 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 description coverage is 0%, so the description must compensate, and it does for the semantically important parameters: record_type (metadata full name, e.g. Справочник.Товары), ref (natural dashed UUID form auto-encoded, or raw 32-hex token), and gherkin (adds a Gherkin state block). The remaining four parameters (host, port, capture_dir, manager_templates) are undocumented, but they are infrastructure defaults rather than the values an agent must reason about.

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 precise verb+resource: read the object-attribute VALUES of an existing populated catalog/document record, and explicitly frames it as 'natively (no per-form capture)'. This differentiates it from form-based readers in the sibling set such as read_form_descriptor and the form-value reads. An agent knows exactly what data this returns without opening another schema.

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 the operating condition for success (warm the client with a different record before reading a large cold record) but never names a sibling tool or an explicit 'use X instead when Y' rule. The 'no per-form capture' phrase implies an alternative but leaves the selection to inference. Adequate, but not the explicit when/when-not routing a 5 requires.

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

read_spreadsheet_cellB

Read a spreadsheet (ТабличныйДокумент) CELL by address natively. Reading a cell is an IN-CLIENT method on the live object, NOT a binary .mxl wire-decode: the manager NEVER receives the cell text in the binary form-render (only a 20-byte handle); a TARGETED read («перейти к ячейке ») makes the client evaluate the cell and return its value as a small PLAIN string. Replays the genuine flow (open form -> run the report -> navigate to the cell) re-targeting the address (R1C1 notation, ANY length — the navigate frame resizes) and parses the value from the client response with the value-read path (the cell value rides the SAME 0x9a<len><utf-8> shape). Live-verified across address lengths (R1C1->PF_RPT_R1C1, R1C12->PF_RPT_R1C12, R12C12->PF_RPT_R12C12). Returns {field, address, value}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
fieldNoPF_REPORT
addressNoR1C1
captureNocellread
captured_addressNoR1C1

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/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 does disclose meaningful behavior: the manager never sees cell text in binary render, a targeted read re-evaluates the cell, and the flow opens a form and runs a report before navigating. It also names the return shape, though it omits permissions or re-entrancy concerns.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is dense, jargon-heavy and mixes English with Cyrillic, making it harder for an agent to parse quickly. Several clauses (wire-decode details, byte-shape `0x9a<len>`) expand without changing the calling decision.

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 values need not be detailed (though they are). For a tool with deep internal protocol nuance and zero annotation coverage, the definition covers mechanism well but leaves the majority of parameters unexplained, leaving gaps an agent must guess at.

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

Parameters2/5

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

Schema coverage is 0% and only the `address` parameter is meaningfully explained (R1C1 notation, arbitrary length, navigate frame resizes). The other five parameters — host, port, field, capture, captured_address — are undocumented in both the schema and the description, so the compensation is only partial.

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 and resource ('Read a spreadsheet CELL by address natively') and contrasts it with the binary .mxl wire-decode approach, which clarifies what the tool is not. It does not, however, distinguish itself from close siblings like read_table_cell or read_record.

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

Usage Guidelines2/5

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

The description explains the internal mechanism (targeted in-client read, replayed form/report flow) but never states when to pick this tool over read_table_cell, read_list_row, or read_record. There is no when-to-use, when-not-to-use, or alternative routing guidance.

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

read_table_cellA

Read the CURRENT ROW's value of a form-TABLE cell natively — the ТаблицаФормы … ТекущиеДанные / «я запоминаю значение поля с именем …» equivalent. Addresses the table by name (table, e.g. PF_TABLE_ITEMS)

  • the column BY NAME (column, e.g. PF_TABLE_TEXT) and decodes the canonical «стал равен» value (string / number / date / UTF-16; ASCII + Cyrillic). Opens the suite fixture form by default; pass open_link (e1cib/list|data/…) to read a cell on ANY form config-agnostically (the table's enclosing groups are discovered from the live descriptor). Returns {table, column, value, groups, opened?}. SCOPE: reads the CURRENT ROW — a form table populated on open has row 1 current (live-verified: fixture PF_TABLE_ITEMS -> PF_TABLE_TEXT="PF_ROW_001_TEXT", PF_TABLE_NUMBER="1,10"). A DYNLIST freshly opened by nav-link may have NO active current row yet (value None) — see read_list_column.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
tableYes
columnYes
open_linkNo
capture_dirNotm-v1-ro-batchQ3
manager_templatesNo/app/src/qa_mcp/_bundled/8.3/templates/value_read_templates.json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that it opens the suite fixture form by default, that 'open_link' can target any form, that groups are discovered from the live descriptor, and that a DYNLIST may have no active current row (value None). It does not mention permissions required or rate limits, but for a read operation the disclosed behavior is substantial.

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

Conciseness3/5

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

The description is dense and packs much into a single block, but it front-loads the core purpose. However, it mixes Cyrillic identifiers, JSON return format, and scope notes in a way that reduces readability, and some details (e.g., the exact template path) are verbose without adding decision-relevant information.

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 values need not be explained, yet the description still lists the return shape. For a 7-parameter tool with 0% schema coverage and no annotations, the description covers the key read semantics and the important DYNLIST caveat, but leaves half the parameters unexplained, which is a completeness gap.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for 7 parameters. It only explains 'table' and 'column' by name and 'open_link' with an example, leaving 'host', 'port', 'capture_dir', and 'manager_templates' entirely undocumented. With 0% schema coverage and 7 parameters, this is a significant gap.

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?

The description clearly states a specific verb+resource ('Read the CURRENT ROW's value of a form-table cell') and names the 1C equivalent ('ТаблицаФормы … ТекущиеДанные'). It distinguishes itself from 'read_list_column' by noting the DYNLIST case where no current row exists, making the scope boundary clear.

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?

The description says to use 'open_link' to read on any form and explicitly routes the agent to 'read_list_column' when a dynamically opened list lacks an active current row. It provides the default (suite fixture form) and the alternative, but does not state exclusion conditions beyond the DYNLIST scenario.

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

read_user_messagesA

Read the user messages (Сообщить text / the "messages to user" panel) a form emits. This is the capture-free ASSERTION read for «нет сообщений пользователю» and for reading Сообщить output. The client reports the message panel in its responses as the envelope cb 53 9a <byte-len> <UTF-8>; this faithfully replays the genuine flow from capture (whatever raises the message — e.g. the choose-from-list / choose-from-menu callbacks) and decodes every message. Returns {messages, count, expected_found}. Pass expected to assert a specific message is present. NOTE: byte-length-prefixed UTF-8 — proven on ASCII and on a synthetic multibyte string; a real Cyrillic Сообщить should decode the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card96-choicelist-20260618/traffic
expectedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/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 the read is capture-free, the wire envelope `cb 53 9a <byte-len> <UTF-8>`, the return shape, and honestly flags that multibyte Cyrillic decoding is unproven. Remaining gaps (permissions, error behavior) are minor for a read tool.

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-loads the purpose in the first sentence and keeps every subsequent clause informative (envelope format, return shape, caveat). It is dense and jargon-heavy, but the length is largely justified by the tool's low-level nature.

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?

An output schema exists, yet the description usefully still names the return keys; combined with the behavioral and protocol details it gives an agent enough to invoke the tool correctly. Only the unexplained `host`/`port` and absent permission/error notes are minor gaps.

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 description coverage is 0%, so the description must compensate. It explains `expected` (assert a message is present) and gives some meaning to `capture` ('the genuine flow from `capture`'), but leaves `host` and `port` undocumented beyond convention. Partial compensation, not full.

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?

Opens with a specific verb+resource: 'Read the user messages a form emits', and further pins its function as 'the capture-free ASSERTION read' for «нет сообщений пользователю» and `Сообщить` output. This is far more precise than a tautology, though it does not explicitly name a sibling tool it must not be confused with.

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?

States the concrete contexts for use: asserting 'нет сообщений пользователю' and reading `Сообщить` output, plus the `expected` mechanism for asserting a specific message. It gives clear positive guidance but names no alternative tool or explicit when-not condition.

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

role_data_matrixA

DEPRECATED for a test-client-held base — a «Клиент тестирования» holds the infobase under an EXCLUSIVE lock, so OData cannot read it; this matrix is valid only against a SEPARATELY published, non-exclusive endpoint. Run the SAME data-layer read under several credentials/ROLES and report per-role access + count. Each role = {label, user, password} + optional expectation {expect_access: "read"|"denied", min_count: N}. Returns {ok, roles: [{label, access ('read'|'denied'|'error'), count, http, ok}], deprecated, deprecation}. NOTE: a genuine role-DIFFERENCE matrix needs restricted infobase users provisioned out-of-band (admin-mcp) — outside qa-mcp's read-only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
rolesYes
filterNo
base_urlNo
entity_setYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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 does well: it flags deprecation, explains the exclusive-lock failure mode, describes per-role outcomes (read/denied/error plus http and ok flags), and warns that real role differences likely need external provisioning. It does not detail auth/permission requirements for the call itself or pagination/size limits.

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

Conciseness3/5

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

The deprecation warning is correctly front-loaded, but the body is a single dense run-on sentence packed with parentheticals, mixed scripts, and em-dash asides. It also restates the full return object even though an output schema exists, which is partly redundant.

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?

An output schema exists, so return-value detail is technically optional, and the description covers deprecation, the lock caveat, and provisioning constraints thoroughly. The main gap is the three non-roles parameters (entity_set, filter, base_url) that remain undocumented at 0% schema coverage.

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 description coverage is 0%, so the description must compensate. It does document the roles array item shape ({label, user, password} with an optional expectation {expect_access, min_count}), but entity_set, filter, and base_url are left entirely unexplained in both schema and description.

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 states a specific verb and resource: it runs the SAME data-layer read under several credentials/roles and reports per-role access plus record count. No sibling tool performs role-based access matrices, so the scope is unambiguous even before opening the schema.

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 explicit when-not guidance (deprecated for a test-client-held base under an exclusive lock, valid only against a separately published non-exclusive endpoint) and notes that genuine role differences require out-of-band provisioning via admin-mcp, outside qa-mcp's read-only scope. It stops short of naming a specific sibling tool as the in-scope alternative, so it is strong but not a full when/when-not/alternative triad.

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

run_reportB

Run a report / fill a ТабличныйДокумент natively. A report-run is a standard FORM-COMMAND click (the click_command family, …Button[<command>] 88 82 81 20 20 20); clicking PF_RUN_REPORT fills the form's spreadsheet attribute ON THE SERVER (cells PF_RPT_R1C1…R2C2) and sets PF_LAST_ACTION="PF_RUN_REPORT". Replays the genuine setup from capture + the command click. NOTE: the SPREADSHEET CELL CONTENT rides the wire as a 1C-packed BINARY ТабличныйДокумент (.mxl) blob — NOT plain strings, NOT zlib/deflate. So reading individual cells capture-free is a deep .mxl-format decode (deferred — the in-client testing API's domain, e.g. «табличный документ … равен»); verify the produced spreadsheet with capture_screenshot (the cells render) or by reading the PF_LAST_ACTION marker. Returns {command, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNoreport
commandNoPF_RUN_REPORT

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/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 mostly delivers: it says the click fills the spreadsheet ON THE SERVER, sets PF_LAST_ACTION="PF_RUN_REPORT", and that cell content ships as a 1C-packed binary .mxl blob (not strings, not zlib) so per-cell reading is deferred. It omits preconditions (attached test client, required open form) and permission needs, keeping it from a 5.

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 lead sentence is front-loaded and correct, but the body is a dense wall of low-signal detail — raw hex byte offsets ('88 82 81 20 20 20'), .mxl format lore, and parenthetical asides — that outweigh the actionable content and make the description hard to scan.

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 and return values are also stated, so that burden is covered. But for a relatively complex native-run tool, the definition never states prerequisites (which client/form must be active) or failure behavior, leaving a meaningful gap for correct invocation.

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

Parameters2/5

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

Schema coverage is 0% for all 4 parameters. The description only gestures at two of them ('setup from capture', the PF_RUN_REPORT default for command) and never explains host or port, so it does not compensate for the documentation gap.

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 ('Run a report / fill a ТабличныйДокумент natively') and even names the mechanism (a FORM-COMMAND click in the click_command family), so an agent can place it against siblings. It stops short of 5 because the purpose is buried under internal implementation detail and never crisply contrasts itself with run_scenario or a direct click_command call.

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?

'Replays the genuine setup from capture + the command click' is the only usage hint, and it is told to verify via capture_screenshot or the PF_LAST_ACTION marker. There is no explicit when-to-use / when-not-to-use versus click_command or the other run_* tools, so an agent must infer that this is the report-specific path.

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

run_scenarioA

Run a scenario (from feature_text or scenario_json) through the native Python TestManager against a running 1C /TESTCLIENT at host:port. When feature_text carries several scenarios, the first runs and the rest register as callees for any run_subscenario («я выполняю сценарий 'X'») step.

OPEN steps (open_main_form / open_list) EXECUTE LIVE with no capture: the form is opened by its e1cib nav-link via the splice_navigate sequence on the bootstrapped session (config-agnostic, fixture-free — the same mechanism read_form_descriptor uses). The step passes when the form actually opens (window-resolved), so «Я открываю основную форму справочника 'Валюты'» drives a real client open + state change. Other ACTION steps (click/select/input/close/…) re-target a CAPTURED command frame, so to EXECUTE those pass action_capture — the capture dir holding those command frames; each action step's frame is located by its marker and replayed GUID-rebound to the live session. action_input_value is the value baked into the capture's input frame (so a .feature input_text retargets correctly), and action_ordinals ("marker=ordinal,marker=ordinal") pins a frame when a marker is not unique. Without action_capture only read/assert/data/skip/subscenario/open steps run; other action steps report unsupported. Returns the ScenarioResult.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
capture_dirNotm-v1-ro-batchQ3
feature_textNo
scenario_jsonNo
action_captureNo
single_sessionNo
action_ordinalsNo
manager_templatesNo/app/src/qa_mcp/_bundled/8.3/templates/manager_frame_templates.json
action_input_valueNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so unusually well: it discloses that OPEN steps execute live with no capture (window-resolved pass condition), that other action steps re-target a captured frame replayed GUID-rebound to the live session, and that frames are matched by marker and pinned via ordinals. The failure mode without action_capture is stated outright.

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?

Purpose and the feature_text/scenario_json source are front-loaded, and no sentence is pure filler — each adds execution semantics. However, the prose is a dense wall of parentheticals, backticks and guillemets that is hard to scan for the key distinctions.

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?

For a 10-parameter tool with an output schema (so return values need no explanation), the execution model, capture requirements and step-support matrix are covered well. The main gap is the prerequisite chain — it says 'against a running /TESTCLIENT' but never points at launch_test_client/attach_test_client, and under-explains the remaining connection/session parameters.

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 description coverage is 0% across 10 parameters, so the description must compensate. It adds real meaning for action_capture, action_input_value, action_ordinals, and feature_text (multi-scenario → callees), but leaves host, port, capture_dir, single_session, and manager_templates entirely undocumented. Roughly half the parameters remain opaque.

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 first sentence states a specific verb and resource ('Run a scenario ... through the native Python TestManager against a running 1C /TESTCLIENT') and the multi-scenario/callee registration detail implicitly separates it from the step-level sibling run_step. An agent can tell this is a full scenario runner, not a single-step executor, without opening the schema.

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 conditional ('to EXECUTE those pass ``action_capture``') and an explicit exclusion ('Without ``action_capture`` only read/assert/data/skip/subscenario/open steps run; other action steps report unsupported'), which is strong when-to-use guidance. It never names an alternative tool such as run_step or run_write_scenario_tool, so the routing is inferred rather than stated.

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

run_stepC

Run a single read step (read_active_window / read_form_summary / read_element) natively.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
kindYes
portNo
markerNo
capture_dirNotm-v1-ro-batchQ3
expect_containsNo
manager_templatesNo/app/src/qa_mcp/_bundled/8.3/templates/manager_frame_templates.json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, and 'read step' only implicitly signals a non-mutating operation. It says nothing about the host/port connection requirement, what capture_dir or expect_contains actually do, or how failures surface, which is a real gap for a tool with connection parameters.

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?

A single front-loaded sentence with no filler, and the enumerable kinds are placed where the agent will read them first. It is efficient, though its brevity is partly under-specification rather than discipline.

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

Completeness2/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 values need not be described. However, for a 7-parameter tool with no annotations and 0% schema coverage, the description leaves connection setup, marker/capture semantics, and error behavior undocumented, which is inadequate.

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

Parameters2/5

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

Schema description coverage is 0% across 7 parameters, so the description must compensate and largely does not. It clarifies the 'kind' enum values but leaves host, port, marker, capture_dir, expect_contains, and manager_templates entirely unexplained in both schema and description.

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 (Run) and resource (a single read step) and enumerates the three valid step kinds, which lets an agent map the required 'kind' parameter. It stops short of distinguishing this tool from siblings like run_scenario or run_write_scenario_tool, and 'natively' is unexplained jargon.

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

Usage Guidelines2/5

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

No guidance on when to choose this over run_scenario, run_write_scenario_tool, or search_for_steps, all of which appear related. The agent is left to infer that this executes one step in isolation, but nothing states that condition or any prerequisite.

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

run_write_scenario_toolB

Run a WRITE scenario (Gherkin «в поле с именем 'F' я ввожу текст 'V'» / scenario_json) natively: each input_text step is routed through the COMMIT-capable NativeWriteSession, so the value actually commits — verified by read-back. Steps may target DIFFERENT fields (step.marker) on one session via capture-free element addressing off the base_field capture (same enclosing group); non-write steps are reported unsupported. Returns the ScenarioResult (per-step committed/read-back preview).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
saveNo
captureNocommit-conn
displayNo:89
open_linkNo
base_fieldNoPF_EDIT_STRING
feature_textNo
input_offsetNo
default_valueNoPF_EDIT_STRING_VALUE
scenario_jsonNo
captured_valueNoQAGENUINE2026
require_cleanupNo
cleanup_evidence_jsonNo
persistence_verification_jsonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/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 behavioral burden and does reasonably well: it discloses that values actually commit (verified by read-back), that steps may target different fields via step.marker, and that non-write steps are reported as unsupported. This is substantive commit/verification context. It stops short of stating prerequisites or failure behavior, so not a 5.

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

Conciseness3/5

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

The verb and write-scoping are front-loaded, which is good. But the single dense paragraph is cluttered with backticks, embedded Russian Gherkin, and internal jargon (NativeWriteSession, capture-free element addressing), making it heavier than the information content warrants.

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

Completeness2/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 required, and the description does sketch the ScenarioResult preview. But for a 15-parameter tool with zero schema coverage and no annotations, the definition leaves far too many controls undocumented for an agent to invoke it confidently.

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

Parameters2/5

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

There are 15 parameters with 0% schema description coverage, so the description must compensate and largely does not. It explains the conceptual roles of base_field, step.marker, and the scenario_json/feature_text alternatives, but most parameters (host, port, save, display, open_link, input_offset, default_value, captured_value, require_cleanup, cleanup_evidence_json, persistence_verification_json) are never described. The coverage gap is too large for a 3.

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: it runs a WRITE scenario (Gherkin input_text steps or scenario_json) natively through a commit-capable session. It distinguishes itself from the broad run_scenario/run_step siblings by emphasizing WRITE/commit semantics and read-back verification. The jargon density makes it harder to parse than ideal, but an agent can tell it targets write scenarios specifically.

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?

It implies usage by declaring the write scope and noting that 'non-write steps are reported unsupported', which is a useful when-not signal. However, it never explicitly names an alternative sibling (e.g., run_scenario, run_step, write_form_value) or the condition that should route the agent to it instead. Guidance is implied rather than stated.

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

search_for_stepsA

Discover the supported Gherkin step vocabulary. Returns the qa-mcp step library: each recognized step's canonical phrasing, a concrete example, its native Step kind, category (read | action | navigation) and a description, optionally filtered by keywords (each whitespace-separated token must appear, case-insensitive; empty returns all). The library is derived from the transpiler's STEP_PATTERNS, so it exactly matches what transpile / run_scenario execute. Use it to author features for qa-mcp; transpile then flags any unmapped lines. Returns {count, total, steps:[{phrase, example, kind, category, description}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.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 mostly succeeds: it discloses the filtering semantics, the empty-returns-all default, and crucially that the library is derived from the transpiler's STEP_PATTERNS so it 'exactly matches what transpile / run_scenario execute'. It doesn't state whether the result is cached or how large the library is, but the key behavioral guarantees are present.

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 purpose and efficient overall, but it is one dense paragraph and the final sentence restating the return object duplicates what the output schema already defines. Slightly more padding than necessary.

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?

An output schema exists, so restating return values was optional, yet the description otherwise covers the gaps that matter: purpose, filter behavior, provenance, and usage. Complete enough for an agent to call correctly, with only minor redundancy.

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% (the single 'keywords' param is documented only as a bare string with a default), so the description must compensate and does: 'each whitespace-separated token must appear, case-insensitive; empty returns all'. This fully specifies the filter semantics an agent needs.

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+resource ('Discover the supported Gherkin step vocabulary' / 'the qa-mcp step library') and enumerates what each entry contains. It clearly separates itself from siblings like transpile and run_scenario by describing what this tool provides versus what those execute.

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?

Explicitly names the use case ('Use it to author features for qa-mcp') and explains the relationship to the alternative ('transpile then flags any unmapped lines'). It gives clear context but stops short of stating when-not to use it or naming other search alternatives.

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

search_listA

Filter a dynamic list by a SEARCH STRING natively. Types value into a dynamic list's search-string addition (search_field); the list filters incrementally (searchOnInput). A dynlist search rides the SAME UTF-16 value-SET buffer as a reference-name input (e0 41 81 81 b7 <char-count><utf-16le><space pad>) addressed at the SearchStringAddition element, so it composes from the same full-replay machinery as set_reference_field: open the form (replay the genuine setup from capture, which typed captured_value into the search box) -> activate the dynlist -> SET the search string, re-targeting the UTF-16 string to value (fixed-width, bounded by the captured length). A list-filter has no clean value read-back — confirm with capture_screenshot (the visible rows narrow); echoed reports the search value echoed in the client responses. CURRENCY: refresh=True (default) forces an «Обновить»/F5 requery first so the search runs against a current list (a just-created record is filterable); refresh=False opts out. A search reports no row count, so this is refresh-only (no poll-until-stable); list_refresh records the refresh method. Returns {search_field, value, echoed, list_refresh}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
valueYes
captureNosearch
refreshNo
search_fieldNoДенамическийСписокИерархияСтрокаПоиска
captured_valueNoМолоко

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/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 does substantial work: it states incremental filtering via searchOnInput, that there is no clean value read-back, that a search reports no row count so it is refresh-only with no poll-until-stable, and that list_refresh records the refresh method. This is rich behavioral disclosure beyond the schema. It stops short of 5 only because it never addresses auth/permission or failure-mode behavior.

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

Conciseness3/5

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

The description is front-loaded with the core action, and headings (CURRENCY, Returns) aid scanning. But it is heavily padded with low-value implementation detail — hex byte layout ('e0 41 81 81 b7 <char-count><utf-16le><space pad>') and buffer-machinery narration — that does not help an agent select or invoke the tool. Several sentences do not earn their place for the invocation decision.

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?

An output schema exists, so return values need not be spelled out, yet the description still lists the response keys. Combined with the refresh semantics, read-back limitation, and near-complete parameter coverage, an agent has enough to call this correctly. It is close to complete for a no-annotation mutation-ish tool, lacking only explicit auth/prerequisite context.

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 description coverage is 0% across 7 parameters, so the description must compensate, and it largely does: it explains value (the search string), search_field (the SearchStringAddition element), capture (the genuine setup replay that typed captured_value), captured_value (the seed typed into the search box), and refresh (force requery vs opt out). Only host/port are left unaddressed, but those are obvious connection defaults, so the behavioral meaning of the search-relevant parameters is covered.

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?

The first sentence states a specific verb+resource+scope: 'Filter a dynamic list by a SEARCH STRING natively,' then clarifies it types into the search-string addition and filters incrementally. It even contrasts itself against the shared machinery of set_reference_field, so an agent can distinguish it from that sibling. It does not, however, explicitly compare against the other search-like sibling (advanced_search), so it falls short of a 5.

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?

Usage context is present but implied: the CURRENCY section explains when refresh defaults on/off and why, and it notes that confirmation must be done via capture_screenshot. However, there is no explicit 'use this instead of advanced_search/choose_from_list when...' routing, and no prerequisites section. Adequate but leaves the alternative-selection decision to inference.

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

select_all_table_rowsB

Select ALL rows of the table natively (multi-select). Multi-row select IS protocol-drivable: the genuine «выделяю все строки» step is a TABLE-level command invoke addressed at the …Table[PF_TABLE_ITEMS] element (tail 88 82 81 20 20 20, the same command family as the row-op buttons / window commands — NOT OS input), so it replays from a connect+open+select-all capture and fires (accepted). CAVEAT — read-back boundary: the multi-selection (Элементы.PF_TABLE_ITEMS.ВыделенныеСтроки) is TRANSIENT table-focus UI state. Any SEPARATE focus-changing protocol command (e.g. clicking PF_REFRESH_SELECTION to read it) collapses it back to the active row — confirmed identically in genuine AND replay (both read PF_SEL[1]=<active>), i.e. standard 1C focus behaviour, not a replay defect. So a live multi-selection is NOT capture-free-readable across commands; the non-collapsing read is the in-session testing API (ТестируемаяТаблицаФормы.ПолучитьВыделенныеСтроки), and composing select-then-act must capture the whole flow in ONE session. Returns {base_button, target_button, accepted}. (Arbitrary multi-select via Ctrl-toggle / deselect-all are the same Table-command family — capture on demand.)

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card97-multiselect-capture-20260619/traffic-selfcontained

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden, and it does so richly: it states the operation is a table-level command (not OS input) that is accepted, and it discloses that the multi-selection is transient focus state that any focus-changing command collapses back to the active row. It even names the non-collapsing read path, which is exactly the kind of destructive/side-effect context annotations would otherwise have to carry.

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?

Although the purpose is front-loaded, the body is a dense multi-hundred-word block mixing Russian and English, with run-on sentences and nested asides. Much of the protocol-internal detail could be trimmed or moved to documentation, so the definition is bloated rather than economical.

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?

For a protocol-driven 1C automation tool with no annotations and an output schema ({base_button, target_button, accepted}), the description covers the important behavioral traps an agent must know (transient selection, single-session capture) fairly completely. The main gap is the absence of explicit when-to-use guidance and parameter meaning.

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

Parameters2/5

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

Schema coverage is 0% across three parameters (host, port, capture) with no descriptions in the schema. The description never explains what these parameters mean or how the 'capture' default relates to the referenced capture-on-demand behavior, so it fails to compensate for the coverage gap.

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?

The opening clause 'Select ALL rows of the table natively (multi-select)' states a specific verb+resource and scope, and the 'ALL' / multi-select framing distinguishes it from the singular sibling select_table_row. Beyond that first clause the purpose is buried under protocol internals, but the core action is identifiable without opening the schema.

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

Usage Guidelines2/5

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

There is no explicit 'use this when…' guidance and no routing versus select_table_row or other selection tools. The only actionable usage note is the implicit constraint that select-then-act must be captured in ONE session, which is a caveat about mechanics rather than a when-to-use-vs-alternative statement.

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

select_table_rowB

Position the active row of a table to the row whose column equals row_match natively. A native row-select is "find the row where = " (both length-prefixed strings in the genuine command); re-targeting the VALUE (fixed-width) selects a different row. Replays the capture setup (which selected a row by captured_row_match) with the search value re-pointed to row_match so that row becomes ACTIVE. Returns {row_match, accepted}. Verify via assert_form_value('PF_SELECTED_ROW_MARKER') -> PF_ROW_IDX_<n>:<marker> (fixture OnActivateRow handler), or chain set_table_cell(row_match=…) to WRITE into the selected row.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card90-row2write-20260617/traffic-selfcontained
row_matchYes
base_columnNoPF_TABLE_TEXT
captured_valueNoR2WROT
captured_row_matchNoPF_ROW_002_TEXT
commit_partner_fieldNoPF_EDIT_STRING
commit_partner_valueNoC90RC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/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 the mutation mechanism (replays the capture setup, re-points the search value), the side effect (the targeted row becomes ACTIVE), and the return shape {row_match, accepted}. It stops short of stating permissions, failure modes, or behavior when no row matches.

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

Conciseness3/5

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

Front-loaded with purpose and single-paragraph, but dense with low-signal implementation trivia ('both length-prefixed strings in the genuine command', 'fixed-width') that taxes the reader more than it informs tool selection.

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 values are arguably redundant, yet the description's real gaps are the six undocumented parameters and absent guidance on failure or precondition states for a 9-parameter tool.

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

Parameters2/5

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

Schema coverage is 0% across 9 parameters. The description clarifies row_match, its relationship to captured_row_match and capture, and implies base_column, but leaves host, port, captured_value, commit_partner_field, and commit_partner_value entirely undocumented in both prose and schema.

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?

The opening clause states a concrete verb and resource: 'Position the active row of a table to the row whose column equals row_match.' However, the core purpose is buried under implementation jargon ('natively', 'length-prefixed strings in the genuine command', 'fixed-width'), and it never names a sibling tool to differentiate itself from add_table_row, copy_table_row, or delete_table_row.

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

Usage Guidelines2/5

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

The description explains how to verify a selection (assert_form_value) and how to chain into set_table_cell, but gives no guidance on when to select a row vs. an alternative approach, nor any prerequisites or conditions for use.

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

send_keysA

Send raw OS keystrokes (Enter / Esc / Tab / arrows / shortcuts) to the focused 1C client window. 1C keyboard input is OS-LEVEL (the key is in NO manager->client protocol frame), so raw keys are delivered via XTEST (xdotool) into the client window. Same primitive as write_form_value_xtest's DB-verified Tab/Ctrl+S.

keys is a sequence of xdotool key specs sent in order (["Down", "Down", "Return"], ["Escape"], ["ctrl+s"], ["Tab"]…). Keys go to the FOCUSED window (the launched client is the lone app window), so PREREQ: launch the client with launch_test_client(display=":89", port=…) + a window manager (matchbox); display must be that Xvfb. Most keyboard INTENTS already have a protocol tool — confirm/cancel dialogs (answer_dialog), field commit (Tab / focus-change), row navigation (select_table_row / read_list_grid), save (click_command «Записать») — use those first; send_keys is the raw-key escape hatch for controls that need genuine OS keys. Returns {keys, display, sent}.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysYes
displayNo:89
settle_secNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/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 does so well: it discloses that keys are delivered at OS level via XTEST/xdotool rather than through any manager->client protocol frame, that input targets the FOCUSED window, and that the return shape is {keys, display, sent}. It does not explain failure behavior or the meaning/effect of the settle delay, which is the remaining gap for a no-annotation tool.

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 the core action and examples before prerequisites and routing, and every section is relevant. It is longer than strictly necessary — the parenthetical sibling enumeration is dense and partially repeats the alternatives list — but no sentence is filler.

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?

For a low-level, OS-coupled tool this covers prerequisites, delivery mechanism, target window, alternatives, and return keys; an output schema exists so return values need not be re-explained. The only real hole is the undocumented `settle_sec` timing parameter, which affects whether keystrokes land before the app is ready.

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 description coverage is 0%, so the description must compensate, and it does for the dominant parameter: `keys` is defined as an ordered sequence of xdotool key specs with worked examples (["Down","Down","Return"], ["ctrl+s"]). `display` is explained as needing to be the Xvfb display used at launch, but the third parameter `settle_sec` is never mentioned, leaving one of three parameters undocumented in both schema and description.

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 ('Send raw OS keystrokes ... to the focused 1C client window') and immediately delimits it from the sibling set by naming the protocol alternatives (`answer_dialog`, `select_table_row`, `click_command`) that cover most intents. An agent can distinguish this raw-key escape hatch from the higher-level form/table tools 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 explicit when-to-use ('raw-key escape hatch for controls that need genuine OS keys') and when-not-to-use ('Most keyboard INTENTS already have a protocol tool ... use those first'), with concrete sibling names mapped to intent categories. It also states the PREREQ chain (`launch_test_client(display=":89", ...)` plus a window manager) that must hold before calling.

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

set_choiceB

Set a radio (Переключатель) to variant natively. A choice ACTIVATES the EditField and carries the selected variant as a length-prefixed string (…EditField[NAME] … e0 4b 53 <0x9a><len><variant>); variant is the value NAME (e.g. PF_CHOICE_C). Opens the form (replays the genuine setup from capture, which set base_field to captured_variant) and sends the genuine choose block re-targeted: the EditField leaf to target_field (defaults to base_field) + the variant string to variant (same-length swap). Returns {base_field, target_field, variant, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card90-choice-20260617/traffic-selfcontained
variantYes
base_fieldNoPF_CHOICE_MODE
target_fieldNo
captured_variantNoPF_CHOICE_A

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/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 does disclose substantial behavior: it ACTIVATES the EditField, carries a length-prefixed variant string, opens/replays the form from the capture, re-targets the choose block to target_field, and returns {base_field, target_field, variant, accepted}. That is unusually rich behavioral detail. It does not state error or failure semantics, which keeps it short of a 5.

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 first sentence is front-loaded and clear, but the remainder is a single run-on paragraph mixing hex byte sequences, backtick jargon, and protocol mechanics. The information is high-density but not structured for scanning, and the hex dump and re-targeting aside add reading cost.

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?

An output schema exists, so return values need not be fully explained, though the description helpfully names them. For a low-level protocol-manipulation tool with no annotations, it supplies enough behavioral and parameter context to invoke it correctly; only the networking params and failure behavior are left implicit.

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 description coverage is 0% across 7 params, so the description must compensate. It adds real meaning for variant (the value NAME, e.g. PF_CHOICE_C), target_field (defaults to base_field), base_field, captured_variant, and capture. But host and port are never addressed, and the explanations are buried in bit-level jargon, leaving gaps at low coverage.

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?

The opening sentence gives a specific verb and resource: 'Set a radio (Переключатель) to ``variant`` natively.' That is distinguishable from toggle_checkbox, choose_from_list, and choose_from_menu by resource type. However, the rest of the sentence is dense internal jargon that obscures rather than sharpens what the tool does.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no mention of alternatives among the many sibling tools (toggle_checkbox, choose_from_list, choose_from_menu). The preconditions ('Opens the form, replays the genuine setup from capture') are stated mechanically but never framed as conditions for choosing this tool.

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

set_list_viewA

Switch a dynamic list's VIEW MODE / grouping natively — the «Режим просмотра» toggle. mode is Список (flat) / Дерево (tree) / Иерархический (hierarchy) — also list/tree/hierarchical. The «Режим просмотра» entries are standard FORM BUTTONS (<dynlist>Список / …Дерево / …ИерархическийСписок); clicking one is the …Button[<name>] 88 82 81 20 20 20 command family (the same invoke as the row ops / close-window) with the Button leaf encoded UTF-16LE (Cyrillic name — so this also exercises the UTF-16-aware command-click path that generalizes click_command to real configs). Replays the genuine click from capture (which clicked Список + ИерархическийСписок), re-targeting the Button leaf (Дерево = same-char-length UTF-16 retarget of Список; Список / Иерархический = verbatim). No value read-back — the list REPRESENTATION changes (verify with capture_screenshot). Returns {mode, button, accepted}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
modeYes
portNo
captureNoviewmode
dynlistNoДенамическийСписокИерархия

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/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 does disclose meaningful behavior: no value read-back, the representation (not the value) changes, and verification should be done with capture_screenshot. It also outlines the command-family mechanism. Missing only failure/permission behavior.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is dense with low-level internals (UTF-16LE Button-leaf encoding, hex command families) that crowd out agent-facing guidance. Much of it is context an agent may not need to select or invoke the tool.

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?

For a high-complexity COM/1C automation tool, the description covers purpose, mechanics, and verification path, and names the return fields. An output schema exists, so return-value explanation is redundant but harmless. It is nearly complete for correct invocation.

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% across 5 params, so the description must compensate. It explains mode well (Список/Дерево/Иерархический plus list/tree/hierarchical aliases) and gives some meaning to capture and dynlist, but leaves host and port unexplained.

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 and resource: 'Switch a dynamic list's VIEW MODE / grouping natively.' The scope (the «Режим просмотра» toggle) is clear. It lacks clean sibling differentiation, instead leaning on implementation references (click_command) rather than routing to alternatives.

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?

Usage is implied by the purpose and the note that it re-targets a captured click. There is no explicit when-to-use/when-not guidance and no route to alternatives, though it hints at its relationship to click_command and row ops.

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

set_reference_fieldA

Set a CatalogRef field to value (a catalog element NAME, e.g. "Пантера АО") natively. A reference InputField resolves a TYPED name to a ref (выбор по строке) on focus-change; the typed name rides the wire as e0 41 81 81 b7 <char-count><utf-16le name><space pad> (the value-SET family with a UTF-16 choice value). This faithfully replays the genuine reference-input session from capture (open form -> type captured_value into field -> focus-change commit -> read-back), re-targeting the UTF-16 name to value. Commit is confirmed by the resolved presentation reading back. Returns {field, value, committed}. CONSTRAINT: value must currently be the SAME character length as captured_value (the field's edit buffer is length-fixed — same fixed-width limit as the string write; a variable-length ref name does not commit yet). Re-capture with a same-length name for other lengths.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
fieldNoКонтрагент
valueNoКорнет ЗАО
captureNogenuine-card96-ref-20260618/traffic
captured_valueNoКорнет ЗАО

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it does so well: it discloses the commit-confirmation model ('confirmed by the resolved presentation reading back'), the return shape, and the hard length-fixing constraint on the edit buffer. It omits auth/permission prerequisites and rate/state preconditions, keeping it short of a 5.

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

Conciseness3/5

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

The action is front-loaded, but the paragraph is dense with backticked wire bytes and repeated mechanism detail, making it harder to parse than necessary. Every sentence carries information, yet the same constraint is effectively restated, so it is not optimally tight.

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?

Given the unusual replay-based complexity and the existing output schema (which covers the {field, value, committed} return), the description supplies the constraints an agent needs to call it correctly. It is complete for the core operation, missing only permission/state prerequisites.

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 description coverage is 0%, so the description must compensate, and it largely does: it defines value as a catalog element NAME, explains captured_value as the length-defining reference, and frames capture as the source session. host/port remain undocumented but are self-evident network defaults.

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?

The description uses a specific verb+resource ('Set a CatalogRef field') and explains the native reference-input mechanism, which distinguishes it from the sibling string-write tools it explicitly contrasts itself against ('same fixed-width limit as the string write'). The core action is unambiguous, though the surrounding wire-format detail obscures rather than sharpens the one-line purpose.

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?

It states the operative constraint (value must match captured_value's character length, and re-capture for other lengths), which is useful usage guidance. However, it never states when to prefer this over siblings like set_choice or write_form_value, so alternative-selection guidance is only implied.

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

set_table_cellA

Write value into a table cell on the ACTIVE row natively. A table-cell SET is byte-identical to a plain string-field SET; only the element path differs — the column is the EditField leaf inside a Table[<table>] segment, with NO row index (the edit hits the active/selected row). Opens the form (replays the genuine setup from capture, which added a row and edited base_column to captured_value), then re-targets the cell SET to table/column + the value and commits via the synthesized focus-change (commit_partner_field — same machinery as the number field). The fixture's editable table is PF_TABLE_ITEMS (PF_TABLE_TEXT string, PF_TABLE_NUMBER number; PF_TABLE_MARKER read-only). The NUMBER cell uses the SAME value buffer as the string cell — the genuine PF_TABLE_NUMBER SET is byte-identical (e0 41 81 81 ba <len> <ascii>, value as text), so set_table_cell(value, column="PF_TABLE_NUMBER") just works (readback "999"). A grid DATE cell is NOT drivable this way: the date control rejects text input («Неподходящий тип элемента управления»); use set_table_date_cell. Returns {requested_value, readback_value, committed, column, table}. The cell read-back IS reliable: the SET response echoes the committed value via the column EditField + value-SET tag — so readback_value/committed reflect the actual write (no screenshot needed).

ROW ADDRESSING: by default the write hits the captured active row. To write into a SPECIFIC row, use a capture whose setup selected a row (with base_column=PF_TABLE_TEXT, captured_value=R2WROT, commit_partner_value=C90RC) and pass row_match = the target row's base_column value — the genuine row-select's search value (captured_row_match, default PF_ROW_002_TEXT) is re-targeted in the setup so the row whose column equals row_match becomes active (row_match=PF_ROW_003_TEXT writes into row 3).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
tableNoPF_TABLE_ITEMS
valueYes
columnNoPF_TABLE_TEXT
captureNogenuine-card90-table-20260617/traffic-selfcontained
row_matchNo
base_tableNoPF_TABLE_ITEMS
base_columnNoPF_TABLE_TEXT
captured_valueNoCELLAA
captured_row_matchNoPF_ROW_002_TEXT
commit_partner_fieldNoPF_EDIT_STRING
commit_partner_valueNoC90CMT

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and discharges it: it explains that the write opens the form, replays the genuine capture setup, re-targets the cell SET, and commits via a synthesized focus-change (commit_partner_field). It also discloses the read-back reliability and the exact returned object, so the agent knows the write is verifiable without a screenshot.

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

Conciseness3/5

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

The purpose is correctly front-loaded in the first sentence and a distinct ROW ADDRESSING section is helpful. However, the prose is extremely dense and stream-of-consciousness in places, with redundancy (byte-identical is asserted twice) and heavy parenthetical byte-level detail that makes it harder to scan than its complexity strictly requires.

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?

For a 13-parameter, no-annotation mutation tool, the description covers mechanics, addressing, limits, and even return values (despite an output schema existing). Nothing an agent needs to invoke it correctly — the active-row default, the row_match escape hatch, and the date-cell exclusion — 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 0% across 13 params, so the description must compensate, and it explains the meaningful ones — value, table, column, capture, row_match, base_column, captured_value, captured_row_match, commit_partner_field, and commit_partner_value — with concrete values. host and port (and base_table) are left unspecified, which is the only real gap.

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 opens with a specific verb+resource+scope: write ``value`` into a table cell on the ACTIVE row, natively. It explicitly contrasts itself with set_table_date_cell and read_table_cell by naming the limitations and the read counterpart. An agent can distinguish this from every sibling without opening a 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?

It states the default behavior (writes to the captured active row) and exactly how to target a specific row via a capture with base_column/captured_value plus a row_match, including a concrete worked example (row_match=PF_ROW_003_TEXT writes into row 3). It also states when NOT to use it — grid DATE cells must use set_table_date_cell because the control rejects text input.

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

set_table_date_cellA

Set a grid DATE cell to date (DD.MM.YYYY) on the ACTIVE row natively, with the cell located ON SCREEN (no hardcoded coordinates). A 1C date grid cell rejects text/keystroke SET (masked editor); it is settable only by MOUSE through the calendar picker. This tool: (1) protocol-activates the cell (the shipped table-cell write_block — activate+SET, no commit — so the inline date editor and its calendar dropdown button appear), (2) screenshots and LOCATES the calendar button by template-matching the shipped glyph (ImageMagick compare -subimage-search via locate_calendar_button), (3) drives the calendar by mouse — click the dropdown, then the month, then the day — using the popup month-list / day-grid origins DERIVED from the localized button center (fixed deltas, calendar_month_cell / calendar_day_cell geometry), then commits (Return). Returns {column, requested_date, localized, button_xy, month_origin, day_origin, status, verified_by, screenshot, activation_screenshot}. When the button cannot be located it returns status="blocked" and does NOT click guessed coordinates; status="set" when the pick committed (the calendar closed) and "set_calendar_open" if the calendar is still visible after the pick.

YEAR is navigated when the target year differs from the cell's CURRENT year (the calendar opens on it): the ‹/› arrows step the month, so the year uses the « ▼» dropdown (current at the top, current+k below; clicked by row, chained in steps of 3 for larger forward offsets). The current year = from_year if given, else today (correct for an EMPTY cell, which opens on today) — pass from_year for a populated cell whose year differs from today. Backward years (target < current) are not yet supported (the dropdown lists forward only) and return status="blocked".

VERIFICATION is the SCREENSHOT: a mouse-set date cell has no protocol SET echo (the value enters via the calendar, not a wire SET) and the in-form value is not protocol-readable without a save, so the active cell showing the picked date in screenshot is the proof.

REQUIRES an X display with the client laid out by a window manager (matchbox; started here when manage_wm) so the cell/calendar geometry is stable, plus xdotool (XTEST mouse) and ImageMagick.

CONFIG-AGNOSTIC path — pass open_link (a document's e1cib/data/Документ.X?ref=… ref) to set the date on ANY real document form's tabular date cell with NO per-form capture (no capture / write_block). The engine brings the form FOREGROUND, activates the cell ON SCREEN by double-clicking it — located from the date column's on-screen header column_title (e.g. "Дата", subimage-search; the form descriptor has no pixel bounds) or the explicit cell_x/cell_y — and reuses the same calendar pick. row_offset (≈ one grid row, 28 px) steps from the header to the first data row; column is the date column NAME (for the result).

foreground selects how the form is brought to the active tab: "listreplay" (DEFAULT, fixture-FREE, config-agnostic) replays a genuine cold catalog-list-open sequence retargeted to open_link (no bundled fixture — works on any config); "fixture" is the legacy primer (the bundled fixture render-push frames + prime). prime only applies to foreground="fixture".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
hostNo127.0.0.1
portNo
primeNo
tableNoPF_TABLE_ITEMS
cell_xNo
cell_yNo
columnNoPF_TABLE_DATE
captureNogenuine-card90-table-20260617/traffic-selfcontained
displayNo:89
from_yearNo
manage_wmNo
open_linkNo
foregroundNolistreplay
row_offsetNo
settle_secNo
base_columnNoPF_TABLE_TEXT
column_titleNo
captured_valueNoCELLAA
commit_partner_fieldNoPF_EDIT_STRING
commit_partner_valueNoC90CMT

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: it discloses the exact status values ('blocked', 'set', 'set_calendar_open'), that it never clicks guessed coordinates, the X-display/xdotool/ImageMagick prerequisites, the mouse-only limitation, the backward-year gap, and that the screenshot is the sole verification of success.

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

Conciseness3/5

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

The purpose is front-loaded and the numbered (1)(2)(3) sequence is logical, but the text is heavy with internal implementation trivia (ImageMagick 'compare -subimage-search', write_block internals, fixed-delta geometry) that does not help an agent decide or invoke. Length is defensible for the complexity but several sentences are documentation-of-the-implementation rather than tool guidance.

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, so return values need not be re-explained, yet the description also enumerates the return fields and their meaning. Given the tool's complexity, it covers preconditions, failure modes, the two setup paths, and verification, leaving nothing an agent needs in order to drive it correctly.

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 description coverage is 0% and there are 21 parameters, so the description must compensate. It meaningfully explains date format, open_link, row_offset ('≈ one grid row, 28 px'), column, column_title, from_year, foreground and prime, but leaves host, port, display, table, base_column, capture, captured_value, commit_partner_field/value and settle_sec unexplained, so the compensation is only partial.

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?

The opening sentence states a specific verb and resource ('Set a grid DATE cell to date (DD.MM.YYYY) on the ACTIVE row natively') and the following sentence explains why a date cell needs a dedicated mouse path instead of a keystroke SET. It never names the sibling it substitutes for (set_table_cell, write_form_date), so differentiation is inferential rather than explicit.

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?

Strong conditional guidance: pass open_link for the config-agnostic path, pass from_year for a populated cell whose year differs from today, and foreground='listreplay' (default) vs 'fixture' with prime only applying to fixture. It states when the tool is unusable (backward years return status='blocked'), but gives no direct when-to-use-this-over-X comparison against the sibling date/cell setters.

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

stop_test_clientA

Tear down a TestClient launched by launch_test_client.

Local mode stops by PID/process group. Remote-client mode requires the host-agent lifecycle handle returned by launch_test_client, so stale or recycled PIDs cannot target a newer process.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
portNo
xvfb_pidNo
lifecycle_idNo
manage_apacheNo
lifecycle_handleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose meaningful behavior: the two operating modes, PID/process-group targeting, and the safety property that stale/recycled PIDs cannot hit a newer process. It omits what happens on already-dead processes or failure semantics, so it is strong but not complete.

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?

Two sentences, no filler, with the core action and its origin tool front-loaded before the mode-specific constraints. Every clause earns its place.

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 values need not be described, and the two-mode lifecycle is covered. However, for a 6-parameter teardown tool with no annotations, the missing parameter documentation and absence of failure/idempotency notes leave real gaps.

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

Parameters2/5

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

Schema description coverage is 0% across 6 parameters, so the description must compensate and largely does not. It gives meaning to pid (via PID/process group) and lifecycle_handle (remote mode), but says nothing about port, xvfb_pid, lifecycle_id, or manage_apache, leaving the majority of parameters undocumented.

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?

Specific verb (tear down) plus resource (TestClient), and it explicitly ties itself to the sibling that spawned it (launch_test_client). An agent can distinguish this from test_client_status or attach_test_client 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 Guidelines4/5

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

It splits usage into two modes and states what each requires (PID/process group for local, lifecycle handle for remote), which is clear operational context. It stops short of outright 'use X instead of Y' exclusions against siblings like test_client_status, so it is not a full 5.

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

switch_pageA

Switch the active tab page (закладку) natively. Opens the form (replays the genuine setup from capture, which switched to base_page) and sends the genuine page-switch command re-targeted to target_page (the page-Group leaf). Returns {base_page, target_page, accepted}. (A page-switch has no value read-back — use capture_screenshot to confirm visually.)

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNomultiaction-clean
base_pageNoPF_PAGE_B
target_pageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/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 does substantial work: it discloses that the tool opens the form, replays the genuine setup from 'capture', sends a real page-switch command, and returns {base_page, target_page, accepted}. It also flags the important limitation that a page switch has no value read-back, which is exactly the kind of behavioral trait an agent needs.

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

Conciseness3/5

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

Reasonably sized at two sentences, but the nested parentheticals and internal jargon ('replays the genuine setup from capture', 'page-Group leaf') make it dense and hinder per-sentence clarity rather than front-loading the key action.

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?

An output schema exists, so the return shape need not be re-explained, and the description covers the essential mechanics and the read-back limitation. Remaining ambiguity around host/port and page identifier values is minor for this niche automation tool.

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%, so the description must compensate. It does explain the relationship between 'capture', 'base_page', and 'target_page' (the page-Group leaf), but it leaves 'host' and 'port' unexplained and gives no format or value examples for the page identifiers, so the coverage gap is only partly filled.

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 ('Switch the active tab page natively') and clarifies it targets a page-Group leaf. The reliance on undefined internal jargon ('capture', 'base_page') makes the exact scope less immediately graspable, but the core action is unambiguous.

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?

Usage is implied (use when you need to change the active tab page) and it helpfully points to capture_screenshot for visual confirmation since there is no value read-back. There is no explicit when-not guidance or comparison against sibling navigation tools like open_card or open_list.

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

test_client_statusA

Report a launched TestClient's health: whether pid is alive (if given) and whether its TPort at host:port is listening (connectable). Use after launch_test_client / before driving a scenario.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidNo
hostNo127.0.0.1
portNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It discloses that the pid check is conditional ('if given') and that the port check is a connectability test, which is genuinely useful behavioral detail. However, it never states that the operation is read-only/side-effect-free, nor any auth or timeout behavior, so the safety profile is only implied by 'Report'.

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?

Two tight sentences that front-load the purpose and follow with the usage window. No filler or redundancy.

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?

An output schema exists, so return-value explanation is not needed, and the description covers purpose and placement in the workflow adequately for a simple diagnostic. The only gap is that the optional pid and default host/port semantics are left partly to the schema, which is bare.

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%, so the description must compensate. It clarifies that pid is optional ('if given') and that host:port refers to the TPort endpoint, which adds meaning beyond the bare schema. It does not explain the defaults (127.0.0.1, 15381) or the null default for pid, leaving some parameter semantics undocumented.

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 ('Report') and resource ('a launched TestClient's health'), then enumerates the two exact checks performed (pid alive, TPort listening/connectable). An agent can readily distinguish this diagnostic from siblings like launch_test_client, stop_test_client, and get_test_results.

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?

Explicitly positions the tool in the workflow: 'Use after launch_test_client / before driving a scenario,' naming the preceding sibling. It gives clear usage context but no exclusion rules (e.g., when not to bother, or what to do if the check fails).

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

toggle_checkboxB

Toggle a Boolean checkbox (флаг) natively. A checkbox commits with NO value buffer: the wire only ACTIVATES the EditField (the value-free e0 4b 55 toggle, identical for set & clear) and the server flips the Boolean + fires ПриИзменении — the EditField twin of switch_page. Opens the form (replays the genuine setup from capture, which toggled base_field) and sends the genuine toggle re-targeted to target_field (the EditField leaf). Returns {base_field, target_field, accepted}. (A toggle has no ASCII value read-back — the Boolean reads as Да/Нет; confirm via a side-effect field or capture_screenshot.)

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
captureNogenuine-card90-20260617/traffic-selfcontained
base_fieldNoPF_CHECKBOX_FALSE
target_fieldYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/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 does reasonably well: it discloses that a checkbox commits with NO value buffer, the wire only activates EditField, and the server flips the Boolean and fires ПриИзменении. It also warns that there is no ASCII read-back (Boolean reads as Да/Нет) and advises confirming via a side-effect field or capture_screenshot. This is substantive behavioral context. It avoids claiming schema-adjacent things. Minor gap: doesn't mention auth/prerequisites or failure modes.

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 dense and jargon-heavy, mixing protocol hex bytes, Russian identifiers, and nested parentheticals. It is not front-loaded: the most actionable detail (no value buffer) is buried in the second sentence. A reader must parse multiple technical asides to extract the core behavior, and some phrasing is redundant.

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 values need not be explained (and indeed the wire fields are summarized). The description covers the commit mechanism and read-back caveat, but for a 5-parameter tool with 0% schema coverage, it omits host, port, and full parameter semantics, leaving the definition incomplete for correct invocation.

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

Parameters2/5

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

Schema coverage is 0% and there are 5 parameters, so the description must compensate. It only explains two of them: 'capture' (replays the genuine setup, which toggled 'base_field') and 'target_field' (the EditField leaf). It is silent on host, port, and the semantics of base_field beyond the replay reference. Three of five parameters remain undocumented in both schema and description.

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?

The description states a specific verb+resource ('Toggle a Boolean checkbox natively') and distinguishes itself from siblings by identifying itself as 'the EditField twin of switch_page' and contrasting with value-buffering tools. The core purpose (flipping a Boolean field) is clear despite the dense protocol jargon.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance against alternatives. It references switch_page and capture as related concepts but never states conditions for choosing toggle_checkbox over write_form_value, set_choice, or switch_page. The agent must infer usage from the technical mechanism description.

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

transpileA

Transpile a .feature (Gherkin, ru/en) into the native Scenario model without executing it. Returns the scenario steps and any unmapped (unsupported) step lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
feature_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose two useful traits: no execution occurs and unmapped/unsupported lines are surfaced rather than silently dropped. It stops short of permissions, error behavior, or what happens on malformed Gherkin, so it is only partially complete for a mutation-free conversion tool.

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?

Two sentences, front-loaded with the core action and scope, followed immediately by the non-execution caveat and return contents. Every clause earns its place with no filler.

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?

An output schema exists, so return-shape detail is not required in the description, and the text still summarizes both outputs (steps and unmapped lines). For a single-parameter conversion tool this is largely complete, with only edge-case behavior unaddressed.

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% for the single required `feature_text` property, leaving the description to compensate. It adds real value by clarifying the input is Gherkin and that ru/en languages are accepted, but does not specify size limits, encoding, or expected text structure beyond that.

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 (Transpile), a specific source resource (.feature Gherkin, ru/en), and a specific target (native Scenario model). The clause 'without executing it' separates it from execution-oriented siblings like run_scenario and run_step, so an agent can route correctly without opening a schema.

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 phrase 'without executing it' implies the when-to-use context (you want parsing/mapping rather than running a scenario), which is meaningful guidance. However, no alternative tool is named explicitly and no preconditions or exclusions are stated, leaving the agent to infer the choice against run_scenario.

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

wait_for_form_valueC

Poll a form field's live value until it matches or the timeout elapses.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
modeNoequals
portNo
fieldYes
groupsNo
expectedYes
capture_dirNotm-v1-ro-batchQ3
timeout_secNo
interval_secNo
manager_templatesNo/app/src/qa_mcp/_bundled/8.3/templates/value_read_templates.json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses polling and a timeout, but says nothing about what happens when the timeout elapses (throw, return false, return last value), whether it blocks the test client, or that it requires an attached/launched test client via host/port. For a 10-param blocking tool this is a substantial gap.

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?

A single tight sentence with the resource and termination condition front-loaded and no filler. It is efficient, though the brevity is partly under-specification rather than disciplined editing.

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

Completeness2/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 details are excused, but for a 10-parameter tool with zero annotation and zero schema-description coverage the description is far too thin. It omits timeout failure behavior, polling interval semantics, mode options, and connection requirements the agent needs to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 10 parameters, so the schema documents nothing. The description only gestures at 'matches' (expected/mode) and 'timeout' (timeout_sec), leaving mode's allowed values, interval_sec, field, groups, capture_dir, and the host/port/manager_templates connection plumbing entirely unexplained.

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 and resource ('Poll a form field's live value') plus the termination condition ('until it matches or the timeout elapses'), so the agent knows this is a blocking wait rather than an instantaneous read. It does not name or distinguish itself from close siblings like assert_form_value or assert_data, which is the main gap.

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?

Usage is implied: use it when you need to wait for an async form update before proceeding, versus assert_form_value which presumably checks once. However, no explicit when-to-use, when-not-to-use, or named alternative is given, so the agent must infer the polling-vs-asserting distinction from sibling names alone.

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

write_form_dateC

Set a FORM-LEVEL managed-form date EditField (DD.MM.YYYY), distinct from grid date-cell writing.

With open_link this uses the config-agnostic foreground label writer against the target form. Without open_link it falls back to the capture-backed field writer with date-prefix readback acceptance.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
hostNo127.0.0.1
portNo
saveNo
fieldYes
captureNocommit-conn
displayNo:89
open_linkNo
base_fieldNoPF_EDIT_STRING
input_offsetNo
default_valueNoPF_EDIT_STRING_VALUE
captured_valueNoQAGENUINE2026

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses two distinct internal execution paths based on open_link (config-agnostic foreground label writer vs capture-backed field writer with date-prefix readback acceptance), which is useful implementation-level transparency. However, it does not state whether the operation requires specific permissions, whether it mutates persistently (the save parameter exists but its effect is not explained), or what happens on failure. For a mutation tool with zero annotations, the behavioral disclosure is partial.

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 concise and front-loaded with the core purpose. The two sentences are dense with technical detail but earn their place by distinguishing the tool's scope and behavior. Minor improvement: the second sentence could be clearer about what 'config-agnostic foreground label writer' means to an agent.

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

Completeness2/5

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

There is an output schema, so the description needn't explain return values. However, with 12 parameters, 0% schema description coverage, and no annotations, the description is far from complete. It omits all parameter semantics, permission/authentication requirements, and the effect of the 'save' parameter. For a complex mutation tool with many undocumented parameters, this is inadequate.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning for any of the 12 parameters. It mentions 'open_link' but only in terms of internal implementation paths, not what the parameter value should be or what it controls at the API level. Critical parameters like 'capture', 'display', 'base_field', 'input_offset', 'default_value', and 'captured_value' are entirely undocumented. This is a severe gap for a 12-parameter tool.

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?

The description states a specific verb and resource: 'Set a FORM-LEVEL managed-form date EditField (`DD.MM.YYYY`)'. It explicitly distinguishes itself from grid date-cell writing, which is a relevant sibling distinction (set_table_date_cell). The only gap is that it does not name which specific sibling tool it complements (e.g., set_table_date_cell) by name, but the general differentiation is clear.

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

Usage Guidelines2/5

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

The description explains a conditional behavior based on the open_link parameter ('With open_link this uses... Without open_link it falls back to...'), which is more behavioral than usage guidance. There is no explicit statement of when an agent should choose this tool over set_table_date_cell, set_table_cell, or write_form_value. The agent must infer usage context from the tool name and the vague 'distinct from grid date-cell writing' clause.

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

write_form_fields_by_labelA

Write values into form fields located by their on-screen LABEL — CONFIG-AGNOSTIC, no per-field capture (generalizes write_form_value_xtest beyond a single fixed field). Foregrounds the form by open_link (e.g. e1cib/data/Справочник.Валюты create form), then TWO-PASS: pass 1 locate_text's every label and records its right edge; pass 2 clicks each field into the SHARED input column (rightmost label edge + input_column_gap) — so a short reference label like «Владелец» hits the same right-aligned column as the longest label instead of under-reaching into a neighbour — types the value Unicode-safe (xtest_type_unicode — Cyrillic-safe) -> Tab. (A field_mode="date" field clicks its own input mask at date_input_offset and types digit keys, never the calendar button; with 0/1 located labels the column falls back to the legacy label-center + input_offset.) Pairs with autofill_required_fields (feed its resolved {label->value} plan). save -> Ctrl+S (creates a record).

HONEST verification: after typing, the open form is value-READ on a fresh manager connection (readback, default on) and each item's committed is set True ONLY when the requested value is actually read back from the form model (the «стал равен» value-read) — a field targeted on screen but not read back is committed=False (no false positives). OData cannot verify here: a test-client-held file/server base is exclusively locked, so the protocol value-read of the SAME client is the verification, not assert_data.

PREREQ: client launched with an Xvfb display + matchbox. all_targeted = every label located + typed; all_committed = every targeted value read back. Returns {open_link, foregrounded, results:[{label, value, click_xy, targeted, committed, readback_value, geometry}], all_targeted, all_committed, readback:{opened, field_count, verified, fields}, screenshot}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
saveNo
labelsYes
valuesYes
displayYes
readbackNo
open_linkYes
settle_secNo
field_modesNo
input_offsetNo
input_column_gapNo
readback_captionNo
date_input_offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden and does so richly: the two-pass locate-then-click algorithm, the shared input-column geometry rule, the date field_mode branch, the save->Ctrl+S effect (creates a record), and the honest readback/committed semantics that avoid false positives. It even discloses the OData-can't-verify caveat and the Xvfb/matchbox prerequisite.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is one dense monolith of backticked jargon and parenthetical asides rather than scannable structure. Much of the detail is justified by the tool's complexity, yet the phrasing is verbose enough that the signal is buried.

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?

For a 14-parameter, multi-step UI-automation tool, the description covers the prerequisite environment, the algorithm, the verification model, and the return-shape semantics (results/all_targeted/all_committed/readback). With an output schema present it correctly does not need to re-explain raw return values.

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 description coverage is 0% across 14 parameters, so the description must compensate, and it explains the semantics of the behavioral ones: field_mode='date', input_column_gap, date_input_offset, input_offset (legacy fallback), readback, and save. It leaves host, port, settle_sec, and readback_caption wholly unaddressed, so it does not fully close the coverage gap.

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 ('Write values into form fields located by their on-screen LABEL') and immediately frames the differentiator: CONFIG-AGNOSTIC and generalizing write_form_value_xtest beyond a single fixed field. An agent can distinguish it from the sibling write_form_value_xtest 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 Guidelines4/5

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

Gives clear context (label-based, config-agnostic entry via open_link) and explicitly names a companion tool: 'Pairs with autofill_required_fields (feed its resolved {label->value} plan)'. It stops short of stating when NOT to use it versus write_form_value, write_form_values, or set_reference_field, so it is not a full when/when-not/alternatives rubric.

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

write_form_valueA

Write an arbitrary VALUE into a form field and COMMIT it natively.

Replays the genuine INPUT capture capture for base_field (auto-derived template) to establish an input-authorized session, retargets the captured value to value (variable-length, fixed-width aware), and verifies by read-back. When field differs from base_field, the element-address path leaf is re-targeted to field (same enclosing group). commit_partner (+ commit_partner_value): for a field whose genuine input had no trailing focus-change (e.g. base_field="PF_EDIT_NUMBER", captured_value="777,77"), pass another field with a genuine input (e.g. commit_partner="PF_EDIT_STRING", commit_partner_value="QAGENUINE2026"); its ACTIVATE is appended as the synthesized focus-change so the value COMMITS. Returns committed/readback_value/field.

open_link switches to the config-agnostic foreground write route: the target form is opened by nav-link and the on-screen field label is targeted with XTEST text input. That route is explicit in the result as write_mode="open_link_label_xtest" and retains a screenshot path.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
saveNo
fieldNoPF_EDIT_STRING
valueYes
captureNocommit-conn
displayNo:89
open_linkNo
base_fieldNoPF_EDIT_STRING
input_offsetNo
default_valueNoPF_EDIT_STRING_VALUE
captured_valueNoQAGENUINE2026
commit_partnerNo
commit_partner_valueNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does so well: it describes the capture-replay mechanism to establish an input-authorized session, the retarget-and-verify-by-readback flow, and the mutation semantics of COMMIT. It also discloses the open_link route's write_mode value and screenshot artifact. It omits permission/auth requirements and any warning about the 'save' parameter, which for a write tool would be valuable.

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?

Purpose is front-loaded in the first sentence, and subsequent sentences (commit_partner example, open_link route) each carry substantive information rather than filler. It is dense and backtick-heavy, but every paragraph earns its place for a mechanism this unusual.

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?

For a complex, stateful write tool an output schema exists, so return values need not be spelled out, yet the description still notes committed/readback_value/field. Core behaviors and the alternate route are covered; the main gap is the undocumented half of the parameter set.

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% across 14 params, so the description must compensate. It explains value, field, base_field, capture, commit_partner, commit_partner_value and open_link with concrete examples, but says nothing about host, port, save, display, input_offset, default_value, or captured_value, leaving roughly half the 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 concrete verb+resource ('Write an arbitrary VALUE into a form field and COMMIT it natively') and clarifies the two write routes. It distinguishes itself from the plural write_form_values and from write_form_value_xtest via the open_link write_mode, but never names those siblings explicitly, so differentiation is inferred rather than stated.

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?

Offers real conditional guidance: use commit_partner when the base field's genuine input has no trailing focus-change, and use open_link to switch to the config-agnostic route. However, it never states when to prefer this tool over the obvious alternatives (write_form_values, write_form_value_xtest, write_form_fields_by_label), leaving that comparison to inference.

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

write_form_valuesB

Batch value-write: open the form ONCE and COMMIT several values in sequence on one connection (NativeWriteSession multi-write). Same as write_form_value (incl. capture-free field addressing via base_field) but for values in order.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
portNo
saveNo
fieldNoPF_EDIT_STRING
valuesYes
captureNocommit-conn
displayNo:89
open_linkNo
base_fieldNoPF_EDIT_STRING
input_offsetNo
default_valueNoPF_EDIT_STRING_VALUE
captured_valueNoQAGENUINE2026

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the single-connection / open-once batching behavior and the shared capture-free addressing, which are real traits beyond the schema. However, it does not describe failure/partial-commit behavior, what 'save' toggles, or permission needs for a 12-parameter mutation tool.

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 the core verb+resource and kept to a compact single sentence with tightly scoped parentheticals. Some internal-symbol jargon (NativeWriteSession) adds noise, but there is little wasted text.

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

Completeness2/5

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

For a 12-parameter mutation tool with no annotations and no schema descriptions, the definition is too thin. An output schema exists (so return values needn't be explained), but the parameter semantics and save/failure behavior an agent needs to invoke it correctly are absent.

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

Parameters2/5

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

Schema description coverage is 0% across 12 parameters, so the description must compensate but only touches 'values' (ordering) and 'field'/'base_field' addressing. Ten parameters such as save, capture, display, input_offset, and captured_value remain unexplained in both schema and description.

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 ('Batch value-write') and explicitly differentiates from the sibling write_form_value by noting it handles 'values in order' rather than a single value. Domain jargon (NativeWriteSession multi-write, capture-free field addressing) slightly muddies the plain-language purpose, but an agent can still tell it apart from the single-value writer.

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?

'Same as write_form_value ... but for values in order' implies the batching use case and hints at the alternative, but does not explicitly say 'prefer this over repeated write_form_value calls' nor state when-not to use it. Usage is inferred rather than spelled out.

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

write_form_value_xtestA

Write a value into a form field via the protocol+XTEST HYBRID — for OBJECT-attribute fields (Объект.* on catalog/document forms) that the pure protocol replay cannot commit.

The pure write_form_value only sets a field's edit-text; an object attribute commits only on a genuine user edit + blur, which a programmatic SetEditText does not trigger (and 1C exposes no AT-SPI elements). The 1C window IS OS-accessible, so this replays the capture's open+focus prefix (protocol, addresses field by name), then injects value via xdotool type (Unicode/Cyrillic-aware) into the focused client window on display, blurs (Tab -> commit), optionally saves (save=True -> Ctrl+S -> DB), and reads the value back by replaying the capture's read sequence. PREREQ: launch the client with launch_test_client(display=":89", port=…) (and a window manager so the form lays out — matchbox); display must be that Xvfb. Defaults match the demo capture (Справочник.Валюты.Наименование). Returns {field, value, committed, value_in_readback, readback_value, diverged_at, blurred, saved, display}.

ParametersJSON Schema
NameRequiredDescriptionDefault
blurNo
hostNo127.0.0.1
portNo
saveNo
fieldNoНаименование
valueYes
captureNodemo-write
displayNo:89
read_frameNo
read_startNo
setup_stopNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so richly: it describes the replay of open+focus, the xdotool type injection, blur/Tab commit, and the optional save=True -> Ctrl+S -> DB write side effect. It also discloses the readback sequence, the prerequisite environment, and the diverged_at mechanism for detecting failure, which goes well beyond what the schema exposes.

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 one-paragraph structure is front-loaded with the key differentiator and each sentence adds mechanism or prerequisite detail. It is on the verbose side with backticked internals, and restating the return dict is redundant against an existing output schema, so not a 5.

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?

For a tool this complex it covers prerequisites, mechanism, side effects, and the alternative, which is close to complete. The unannotated frame-index parameters and the return dict (already covered by the output schema) leave minor gaps, keeping it from a 5.

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 description coverage is 0% with 11 parameters, so the description must compensate and it only partially does. It clarifies field, value, save, display, and blur (Tab -> commit), but the frame-index parameters (read_start=25, read_frame=28, setup_stop=17) and capture remain unexplained, leaving several parameters documented nowhere.

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 (write), a specific resource (form field value), and the exact scope/mechanism (protocol+XTEST hybrid for OBJECT-attribute fields). It explicitly differentiates from the sibling write_form_value by naming why the pure-protocol version cannot commit. An agent can pick it apart from write_form_value 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 states when to use this (object-attribute fields like Объект.* that pure protocol replay cannot commit) and names the alternative it supersedes for that case (write_form_value). Prerequisites (launch_test_client with display, window manager) are spelled out, so the agent knows the required setup before invoking.

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

write_test_reportA

Write machine-readable test reports for the scenarios run THIS MCP-server session so qa-mcp slots into an existing CI pipeline. formats (default both): "junit" -> <out_dir>/junit.xml (CI test-result panels); "allure" -> <out_dir>/allure-results/*.json (renderable by the Allure CLI, with per-step status/timing and any screenshot attachments). Uses the same session log as get_test_results; pass clear=true to reset it after writing. Returns the output paths + scenario count.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNo
formatsNo
out_dirYes
suite_nameNoqa-mcp

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden, and it does well: it discloses that files are written to specific paths, the exact output locations for each format, that it shares the same session log as get_test_results, that clear=true resets that log after writing, and the return payload. It leaves overwrite/replace semantics for existing files unstated, keeping it from a 5.

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 the core action and CI rationale, then parameters, then return value. It is dense but every clause adds information; no filler sentences. Slightly packed but appropriately sized for a configurable file-writing tool.

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?

Output schema exists so return values are covered, yet the description still summarizes them usefully. With no annotations, the description supplies the needed behavioral context (path formats, session-log sharing, clear behavior), though overwrite semantics for pre-existing output files remain unaddressed.

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 description coverage is 0%, so the description must compensate, and it explains formats thoroughly (values junit/allure with their output paths and defaults), clear, and out_dir via the <out_dir> placeholders. suite_name is never mentioned, leaving one of four parameters undocumented.

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 (write) plus resource (test reports) and scope (scenarios run THIS MCP-server session), and differentiates itself from the read-side sibling get_test_results by naming it. An agent can identify the tool's role without opening the schema.

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?

Explains the purpose context (slotting into an existing CI pipeline) and links to the session log shared with get_test_results, plus when to pass clear=true. It does not state explicit when-not conditions or other alternatives, so it stops short of full routing guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 64 tool updatesv0.1.0
    • First observedactivate_window
    • First observedadd_table_row
    • First observedadvanced_search
    • First observedanswer_dialog
    • First observedassert_com_count
    • First observedassert_data
    • First observedassert_data_count
    • First observedassert_form_value
    • First observedattach_test_client
    • First observedcapture_screenshot
    • First observedchoose_from_list
    • First observedchoose_from_menu
    • First observedclick_command
    • First observedclose_window
    • First observedcom_connector_doctor
    • First observedcopy_table_row
    • First observeddelete_table_row
    • First observedget_state
    • First observedget_test_results
    • First observedget_window_list
    • First observedget_window_list_testclient
    • First observedinfobase_info
    • First observedlaunch_test_client
    • First observedmove_table_row
    • First observedopen_card
    • First observedopen_external_processor
    • First observedopen_list
    • First observedqa_mcp_doctor
    • First observedquery_com
    • First observedread_form_descriptor
    • First observedread_list_column
    • First observedread_list_grid
    • First observedread_list_row
    • First observedread_record
    • First observedread_spreadsheet_cell
    • First observedread_table_cell
    • First observedread_user_messages
    • First observedrole_data_matrix
    • First observedrun_report
    • First observedrun_scenario
    • First observedrun_step
    • First observedrun_write_scenario_tool
    • First observedsearch_for_steps
    • First observedsearch_list
    • First observedselect_all_table_rows
    • First observedselect_table_row
    • First observedsend_keys
    • First observedset_choice
    • First observedset_list_view
    • First observedset_reference_field
    • First observedset_table_cell
    • First observedset_table_date_cell
    • First observedstop_test_client
    • First observedswitch_page
    • First observedtest_client_status
    • First observedtoggle_checkbox
    • First observedtranspile
    • First observedwait_for_form_value
    • First observedwrite_form_date
    • First observedwrite_form_fields_by_label
    • First observedwrite_form_value
    • First observedwrite_form_value_xtest
    • First observedwrite_form_values
    • First observedwrite_test_report

TDQS

B3.2/5.0

Scored across 64 tools

Disambiguation3/5

Many tools have overlapping purposes, especially the write_form_value variants (write_form_value, write_form_value_xtest, write_form_values, write_form_fields_by_label), the read_list_* family (column/row/grid), and several assert/read tools. The very detailed descriptions help differentiate them, but an agent still faces non-trivial selection risk across 64 tools with similar naming.

Naming Consistency4/5

The vast majority of tools use consistent snake_case verb_noun naming (run_scenario, read_record, write_form_value, open_list, select_table_row). A few exceptions are noun-only or diagnostic names (advanced_search, com_connector_doctor, infobase_info, qa_mcp_doctor, role_data_matrix, test_client_status), and one has a suffix (get_window_list_testclient), but the overall pattern is predictable.

Tool Count2/5

64 tools is far above a typical well-scoped set and exceeds the 25+ threshold for 'too many'. The domain is broad (1C client lifecycle, UI automation, scenario running, diagnostics), so some count is justified, but many tools are granular variants of the same underlying operations, making the surface heavier than necessary.

Completeness4/5

Coverage is extensive: client launch/attach/stop, form and list reads, form/table/cell writes, dialogs, menus, choices, checkboxes, pages, reports, scenario execution, and diagnostics. A few boundaries remain (multi-select read across commands, backward year navigation in date cells, spreadsheet cell decode deferred), but these are minor workarounds rather than glaring gaps.

Related MCP Connectors

  • Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.

  • Drive OctoPerf load testing from any AI agent: import, edit, validate, run scenarios, read metrics.

  • Run, debug, and triage tests from your IDE using natural language, no dashboard switching, no manual data transfers. The TestMu AI (formerly LambdaTest) MCP Server is a single remote server exposing four tool suites: HyperExecute — analyze your project, generate YAML configs and test runner commands, then monitor jobs and sessions. Automation — pull a TestID's details plus command, network, and console logs into one chat for instant root-cause analysis. Includes mobile app upload. SmartUI — explain pixel, layout, DOM, and perceptual changes in a visual regression run, with context-aware React/HTML/CSS fixes. Accessibility — audit any public URL or a local React app against WCAG and get ready-to-apply remediation steps. Connects over https://mcp.lambdatest.com/mcp using OAuth 2.1 — no API keys in your config. One-click install in Cursor; works with Claude, GitHub Copilot, Cline, and any MCP client. Tests execute on the TestMu AI cloud: 3,000+ browsers and 10,000+ real devices.

  • remote debug iOS/Android/Unity/Godot/Flutter/RN/Web on real-device.ui-tree/screenshots/taps,tests.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI clients to automate Windows desktop applications through window manipulation, image recognition, OCR, keyboard/mouse simulation, and memory operations via the MCP protocol.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A universal AI-powered testing server built on the Model Context Protocol (MCP). Allows AI agents to inspect, execute, test, monitor, debug, and report on software projects.
    3
    GNU Lesser General Public v2.1 only
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that gives AI assistants full control over native Windows applications — launch, inspect, click, type, screenshot, and test any WinUI3, WPF, WinForms, UWP, or Win32 app.
    94
    39
    MIT