Uxia
Server Details
Uxia brings AI user testing, usability testing and UX research into ChatGPT. It helps product managers, UX designers, researchers and developers evaluate websites, interactive prototypes and digital product experiences using AI-simulated users. Explore potential usability problems, investigate friction in user journeys and use findings to guide product and design improvements.
- Status
- Healthy
- Uptime
- 91.8% over 22 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 55 tools
Descriptions work hard to steer between overlapping tools (add_task vs add_test_block, update_task vs update_test_block vs update_test_definition, get_test_setup vs get_test_definition vs review_test), but the overlap is real and an agent can easily misselect. Result-reading tools (get_insight/list_insights, get_navigation_summary/get_human_navigation_summary, get_question_responses/get_test_question_responses) further blur boundaries. Guidance helps but does not eliminate the ambiguity.
Nearly all tools follow a snake_case verb_noun pattern (add_task, create_audience, list_tests, update_test_block, launch_test, preview_test_launch). A few names are slightly less predictable (review_test, prepare_test_block, set_test_construction) but still readable and consistent in convention.
55 tools is very heavy for the domain and forces agents to navigate many near-synonymous variants for the same lifecycle stage. Several tools exist only as legacy or 'advanced' alternates to preferred ones, inflating the surface beyond what is needed.
The surface covers the full lifecycle: drafting blocks, editing, audience management, preview/launch, and extensive result reading (insights, navigation, transcripts, accessibility, surveys). Minor gaps exist (no test deletion/cancellation, no audience update/delete), but core workflows are well covered.
Available Tools
55 toolsadd_taskAdd TaskAInspect
Add a website task or empty task to an existing draft. Omit blockId; the server generates and returns it. Use the returned ID for later edits. Flat fields; no configuration object. Omit wording only for an intentionally incomplete draft. Supply url for a website task; isPrototype defaults to false for a regular website. Set isPrototype=true for a prototype website. stopCondition requires url. Use add_test_block for uploaded prototypes or advanced settings. No launch. The concrete action the tester performs in the product. When drafting or suggesting wording, write one short sentence, usually 10–25 words: [action verb] + [single concrete target] + [essential method or constraint]. Describe one coherent goal; naturally paired actions are fine, but split independent goals into separate tasks. If multiple items could match, identify one by name or position; avoid "any item". Name the in-app mechanism when needed. Keep motivation and backstory in scenario, observable completion criteria in stopCondition, and judgments or research objectives in follow-up survey questions. Omit step-by-step navigation and unnecessary detail. Example: "Book a table for 2 at Bar Mut for tonight at 8:00 PM." Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices. When drafting or suggesting scenario wording, write 1–3 short sentences in second person, present tense ("You are…", "You have…"). Describe a believable situation and a concrete triggering moment explaining why the tester needs to act now. Keep the action in the task; do not repeat it here. Example: "It is Friday evening, you are exhausted from work, and you do not want to cook tonight." Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices. When drafting or suggesting stopCondition wording, write one short sentence starting with "Stop when". Name one observable on-screen state detectable from a screenshot or DOM that marks the task’s natural completion. Avoid alternative endings, user feelings and off-screen events such as receiving an email; do not stop mid-flow. Example: "Stop when the order confirmation page displays the order number and total amount." Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| task | No | Draft one short sentence, usually 10–25 words: action + one target + essential constraints. Preserve accepted wording. | |
| testId | Yes | ||
| blockId | No | Omit when creating a task; the server returns its blockId. Supplied IDs are supported for existing clients. | |
| position | No | ||
| scenario | No | Draft 1–3 short sentences in second person, present tense: situation + reason to act now. Do not repeat the task. | |
| isPrototype | No | Defaults to false for a regular website. Set true for a prototype website. | |
| stopCondition | No | Draft one short "Stop when" sentence naming an observable on-screen state at task completion. No alternatives or off-screen events. | |
| expectedRevision | No | Legacy compatibility only; ignored. Draft revisions are resolved automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's job is to add context, and it does: the server generates and returns blockId for later edits, and 'No launch' clarifies that adding a task does not start the test. It does not cover failure modes, permission requirements, or what happens on duplicate/position conflicts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single wall of text mixes tool purpose, parameter constraints, and three long field-authoring style guides. The sentence 'Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices' is repeated verbatim three times, wasting space, and none of the drafting guidance is visually separated from the operational instructions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the description covers the key selection and constraint facts an agent needs plus the unusual drafting conventions for task/scenario/stopCondition. Given the 9-parameter surface, it is complete enough despite the padding; only testId and position semantics are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema already documents blockId, isPrototype, task, scenario and stopCondition — and the description's long drafting rules for those fields largely restate what the schema descriptions already say. The one genuinely additive item is the cross-field constraint 'stopCondition requires url', which the schema does not express. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a precise verb+resource+scope: 'Add a website task or empty task to an existing draft.' It goes further than most siblings by naming the boundary case and the alternative tool ('Use add_test_block for uploaded prototypes or advanced settings'), so an agent can distinguish add_task from add_test_block 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use the alternative ('add_test_block for uploaded prototypes or advanced settings'), field-conditional rules ('stopCondition requires url', 'Supply url for a website task', 'Omit wording only for an intentionally incomplete draft'), and a scope limit ('No launch'). The tool-selection guidance is real but compressed into one clause and buried among field-authoring conventions, with no guidance on when not to add a task at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_test_blockAdd Test BlockAInspect
Add one AI task (website or prototype), Survey, Accessibility or Card sorting block. Prefer add_task for website tasks. Follow the block schema; AI fields belong inside configuration. Omit id to generate a block ID server-side; returns blockId and the saved draft. Omit position to append. Use existing assets; never invent credentials. Returns current draft. No launch.
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | AI draft example: {"type":"ai-user-test","configuration":{"task":"","scenario":"","experience":null,"credentials":null}}. Prefer add_task/update_task for website tasks. Omit id when creating a block; the server returns blockId and the saved draft. Use returned IDs for edits and references. Configure sign-in credentials only in the authenticated Uxia editor using the returned test link; never send passwords through tools. | |
| testId | Yes | ||
| position | No | Zero-based insertion index; omit to append. | |
| construction | No | Optional decisions; proposed wording stays separate. Acceptance needs current proposalRevision and matching saved wording. Never launch approval. | |
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey non-read-only, non-idempotent, non-destructive, and closed-world. The description adds real value beyond them: the return contract (blockId plus the saved draft), the "No launch" boundary, and the credential-safety constraint. It does not detail what happens to existing blocks on conflict, but for an additive create operation this is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and compact, but telegraphic to the point of choppiness and slightly redundant — the return contract is stated twice ("returns blockId and the saved draft" then "Returns current draft"). Tightening would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description plus 80% schema coverage handle a complex four-variant block payload adequately. The main gap is deeper routing against the many sibling setup tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 80% schema coverage the schema carries most parameter meaning, but the description adds operational semantics the schema does not spell out: omit id for server-side generation, omit position to append, and keep AI fields inside configuration. These clarify how the required block object must be shaped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Add) and resource (Test Block) and enumerates the exact block types supported: AI task, Survey, Accessibility, and Card sorting. It also distinguishes the tool from a sibling by directing website tasks to add_task, so an agent can tell them apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Prefer add_task for website tasks" gives one explicit alternative with its selecting condition, and "No launch" signals this only writes a draft. However, no guidance distinguishes it from other block/setup siblings like prepare_test_block, create_block_test, or update_test_block, so routing is only partially complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_audienceCreate AudienceAInspect
Create a new audience in the caller's Uxia workspace and synchronously generate AI testers for it. An audience defines targeting filters (age, gender, geography, demographics) used to generate synthetic AI tester profiles, not recruit people. Returns the created audience plus the freshly generated testers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| count | No | How many AI testers to generate. Defaults to 5, which is the minimum a test can launch with — an audience with fewer approved testers is rejected at launch. | |
| roles | No | ||
| gender | Yes | ||
| ageRange | Yes | Two-element [min, max] age range (integers, 16-100). | |
| countries | No | ||
| languages | No | ||
| industries | No | ||
| isReusable | No | ||
| description | No | ||
| techLiteracy | No | ||
| customDetails | No | ||
| maritalStatus | No | ||
| nationalities | No | ||
| educationLevel | No | ||
| personalIncome | No | ||
| householdIncome | No | ||
| employmentStatus | No | ||
| languagesRequirement | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| testers | No | Freshly generated AI testers for the new audience. |
| audience | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not read-only, not idempotent, not destructive). The description adds genuinely useful context beyond that: creation happens synchronously and the operation also generates tester profiles, which signals a potentially slow/expensive call and that repeat calls produce new resources. It omits auth/permission prerequisites but is otherwise solidly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with the core action and the crucial "not recruit people" clarification front-loaded. No filler, no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not required, and annotations carry the safety profile. However, for a 19-parameter creation tool the definition leaves most parameter semantics and all when-to-use routing unaddressed, making it only adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% across 19 parameters, so the description must compensate and largely does not. Naming the filter categories (age, gender, geography, demographics) maps to a few params, but roles, techLiteracy, maritalStatus, employmentStatus, income objects, isReusable, customDetails, and languagesRequirement receive no semantic explanation anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a new audience") and immediately clarifies what an audience is here — targeting filters for synthetic AI testers, "not recruit people." This distinctly separates it from siblings like list_audiences and set_test_audience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the domain concept and disambiguates "audience" from human recruiting, but never states when to call this versus siblings such as list_audiences (discovery) or set_test_audience (binding an existing audience to a test). Usage is implied rather than instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_block_testCreate Block TestAInspect
Create a draft with a title and optional initial definition containing known blocks and audience. Omit definition for an empty draft. Returns the saved draft and URL. Never launches or spends test credits.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| definition | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive, non-idempotent write. The description adds meaningful context beyond them: the result is a saved draft with a URL and the call never launches a test or consumes credits, resolving the main ambiguity for a write tool. It doesn't mention retry/idempotency consequences, which keeps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the core action and optionality front-loaded before the behavioral caveat. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a very large nested block/audience schema and the presence of an output schema (so return structure needn't be detailed), the description covers the operation, optionality, and the critical 'does not launch' constraint. It could say more about the draft-vs-launched lifecycle and idempotency, but it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%, so the description carries the load and does explain that the definition holds 'known blocks and audience' and is optional, mapping to both parameters. It adds little on the title parameter (e.g., the 200-char bound), so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (a draft test) with the two things it takes: a title and an optional definition of blocks and audience. The closing clause 'Never launches or spends test credits' cleanly separates it from launch_test and preview_test_launch, so an agent can pick it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers one useful usage rule ('Omit definition for an empty draft') but gives no explicit when-to-use versus alternatives such as add_test_block, update_test_definition, or prepare_test_block. Usage is implied rather than contrasted, which is the minimum-viable level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audienceGet AudienceARead-onlyIdempotentInspect
Read audience targeting and demographic breakdowns computed over the actual participants in this test. Use get_tester for one participant. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| age | No | |
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| gender | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| testers | No | |
| nextStep | No | |
| breakdowns | No | |
| configured | No | |
| testerCount | No | |
| testersTruncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real context beyond them: results are computed over actual participants (data semantics, not raw config) and legacy tests are supported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core purpose front-loaded and no filler. Slightly dense/telegraphic in the second half ('Legacy tests also supported'), but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations cover the safety profile. For a read-only tool at this complexity, the remaining gap is only the undocumented runId/testId parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (runId and testId are undocumented). The description partially compensates by telling the agent that block/run IDs come from list_test_blocks and that omission uses defaults, but it adds nothing for the required testId beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (audience targeting and demographic breakdowns) and scopes it to 'the actual participants in this test', which is a meaningful distinction from a configured-audience lookup. It explicitly separates itself from get_tester, though it stays silent on list_audiences/create_audience neighbors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the one-participant case to get_tester and tells the agent to source block/run IDs from list_test_blocks, plus notes omission behavior and legacy support. It gives clear when-to-use context but no when-not or full alternative map (e.g. vs list_audiences).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_card_sorting_resultsGet Card Sorting ResultsARead-onlyIdempotentInspect
Read results for a Card sorting block: categories with their cards and agreement, where each card was placed, the most related card pairs (similarity) and every participant's sort with reasons. Agreement is the share of participants who sorted a card into a category, out of everyone who sorted that card. Similar participant-created category names are grouped. participantType defaults to ai (latest run, or runId); human reads completed human sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | Yes | ||
| participantType | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Operation-specific results for a native block test; legacy reads return fields at the top level. |
| retry | No | |
| runId | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds genuine context beyond that: how 'agreement' is computed, that similar participant-created category names are grouped, and that participantType=ai resolves to the latest run while human reads completed sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then supporting semantics. Every sentence carries information, though the agreement-definition sentence and the return-value enumeration are somewhat long for a tool that already ships an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, yet the description helpfully summarizes them. Combined with annotations covering safety and the participantType semantics, an agent has enough to call this correctly; only permissions/error behavior for non-card-sorting blocks is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load. It fully explains the one non-obvious parameter (participantType default ai, latest run or runId; human reads completed sessions) and implies runId selects a specific run. The remaining three parameters are opaque IDs whose format the description does not elaborate on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Read results for a Card sorting block') and enumerates the exact payload (categories with agreement, card placements, similarity pairs, participant sorts). No sibling tool returns card-sorting data, so the block-type scoping alone is enough to distinguish it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you call this when you have a card sorting block and want its results. There is no when-to-use/when-not guidance and no routing to alternatives such as get_test_report or get_question_responses. The participantType default/human explanation is parameter behavior rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_creditsGet CreditsBRead-onlyIdempotentInspect
Read available credits and usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| plan | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| unlimited | No | |
| creditsUsed | No | |
| workspaceId | No | |
| totalCredits | No | |
| remainingCredits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description only adds that the response concerns both available credits and usage — a small content hint, with no note on account scope, freshness, or rate limits. Modest added value over the structured fields is the right level here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and the two data points returned. Nothing is wasted, though it is arguably terse enough to be under-specified rather than optimally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is unnecessary, and annotations carry the safety profile; for a zero-argument read tool the description is nearly sufficient. The only real gap is that it never anchors 'credits' to a system or account context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The empty input schema also makes the call signature self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (credits and usage), so an agent can tell it retrieves a balance/consumption view rather than test data. No sibling in the list covers credits, so no sibling differentiation is needed. It loses a point because it never clarifies whose credits or in what unit/scope (account-level, plan-level), leaving 'credits' ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use condition, no exclusions, and names no alternative. It is a no-argument account read, so the omission is low-risk, but the definition provides zero routing guidance beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_frame_detailsGet Frame DetailsARead-onlyIdempotentInspect
Read one gallery frame using frameNumber from finding evidence. Includes one available image preview of the requested gallery capture, including merged captures. Images may be unavailable. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| runId | No | ||
| offset | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. | |
| frameNumber | Yes | Exact 1-based number from an insight frames array. Do not subtract one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| steps | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| fileName | No | |
| nextStep | No | |
| ownership | No | |
| nextOffset | No | |
| totalSteps | No | |
| frameNumber | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond them: images may be unavailable, merged captures are included, and legacy tests are supported. It stops short of explaining pagination behavior implied by limit/offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, but the four sentences are loosely stitched, with caveats ('Images may be unavailable', 'Legacy tests also supported') appended rather than organized. Reasonable size, uneven structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-format explanation is unnecessary. For a 6-param read tool the description covers retrieval source, defaulting, availability caveats, and legacy support – adequate, with limit/offset behavior the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate. It does map frameNumber to its source (finding evidence) and blockId/runId to list_test_blocks IDs with default behavior, but limit and offset are left entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('read one gallery frame') and identifies the key input (frameNumber from finding evidence) plus the return content (one available image preview, merged captures). It is clear what the tool does, though it never explicitly contrasts with near-neighbors like get_screen_details or get_insight.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete routing hint – 'Use IDs from list_test_blocks to target a block/run' – and notes omission falls back to documented defaults. However there is no guidance on when to prefer this over get_screen_details/get_insight, nor prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_human_sessionGet Human SessionBRead-onlyIdempotentInspect
Read a human session, task and transcript by exact ref. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| limit | No | ||
| runId | No | ||
| offset | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | No | |
| data | No | |
| task | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| truncated | No | |
| finishedAt | No | |
| nextOffset | No | |
| transcript | No | |
| totalLength | No | |
| questionAnswers | No | |
| transcriptSource | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that retrieval is by exact reference, that omission triggers defaults, and that legacy tests are supported, but says nothing about pagination behavior despite limit/offset params.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core operation front-loaded; the legacy-tests note is a useful trailing caveat rather than padding. Little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The existence of an output schema removes the need to describe return values, and annotations cover safety. But with 6 parameters at 17% schema coverage, the description leaves testId/limit/offset undocumented and gives no when-to-use routing against transcript/list siblings, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (just blockId), so the description must carry the load, and it only partly does: it clarifies 'exact ref' and the block/run-sourcing plus defaults. The required testId, plus limit and offset, are left completely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource ('Read a human session, task and transcript by exact ref'), which clearly separates it from the plural sibling list_human_sessions. It stops short of naming the natural alternatives (get_transcript, list_human_sessions), so sibling differentiation is implied 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent to source block/run IDs from list_test_blocks and that omitting them falls back to documented defaults, which is real usage context. However it never states when to choose this tool over get_transcript or the list variants, leaving the main routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insightGet InsightARead-onlyIdempotentInspect
Read a finding by exact ref from list_insights, including evidence quotes, impact and fix suggestions with recommendations, acceptance criteria and coding-agent prompts when available. Paywalled details may be redacted. Includes up to three available screenshot previews of referenced frames. Use get_frame_details for additional frames. Images may be unavailable. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | No | |
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| title | No | |
| frames | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| paywall | No | |
| category | No | |
| nextStep | No | |
| priority | No | |
| relevance | No | |
| userImpact | No | |
| description | No | |
| severityCard | No | |
| totalTesters | No | |
| fixSuggestion | No | |
| reporterCount | No | |
| businessImpact | No | |
| testerEvidence | No | |
| primaryCategory | No | |
| secondaryCategory | No | |
| technicalComplexity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds meaningful behavior beyond that: paywalled details may be redacted, only up to three screenshot previews are returned, and images may be unavailable. It still doesn't say what happens on an invalid or expired ref.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then caveats, then parameter sourcing. Dense but every sentence carries information; only the trailing 'Legacy tests also supported' is thinly connected to the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not strictly required, yet the description usefully previews the payload (quotes, impact, fix suggestions, prompts). Remaining gaps are minor: no failure/redaction-trigger detail and no explicit runId/testId semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description must carry weight. It clarifies that ref comes from list_insights and that blockId comes from list_test_blocks with omission using documented defaults, but it never explains the distinction between runId and testId or the 24-hex format constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a finding by exact ref from list_insights') and immediately enumerates exactly what the finding contains. An agent can distinguish it from list_insights (listing) and show_evidence (evidence display) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing guidance: use 'get_frame_details for additional frames' and take block/run IDs 'from list_test_blocks'. It does not explicitly say when to prefer this over show_evidence or list_insights, so it falls short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_research_summaryGet Market Research SummaryCRead-onlyIdempotentInspect
Read the market research summary for a test.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| title | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| questions | No | |
| keyInsights | No | |
| testConfidence | No | |
| respondentCount | No | |
| executiveSummary | No | |
| overallSentiment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is fully covered structurally. The description adds nothing beyond 'Read' – no note on what the summary contains, freshness, or whether a test must be completed first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no padding or redundancy. It is efficient, though its brevity is partly the under-specification flagged elsewhere rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, which lightens the burden. Still, for a tool in a dense read-tool family the description omits usage context and any parameter detail, leaving clear gaps for an agent choosing among many get_* options.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single testId parameter, whose only constraint (a 24-char hex pattern) lives in the schema with no description. The phrase 'for a test' hints at the id's referent but gives no source (e.g., list_tests) or format context to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('market research summary') scoped to a test, so an agent knows what the tool fetches. It does not, however, differentiate itself from the many adjacent read siblings such as get_test_summary, get_test_report, or get_insight, leaving the resource's actual content ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite a crowded sibling set of get_* summary/report tools. The agent must infer the appropriate situation entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_optimization_scoreGet Optimization ScoreARead-onlyIdempotentInspect
Read optimization score and contributing factors. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| about | No | |
| label | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| score | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| breakdown | No | |
| uosVersion | No | |
| description | No | |
| answerGuidance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description still adds genuine context beyond annotations: omitted IDs fall back to documented defaults, and legacy tests are supported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the purpose front-loaded and the parameter-sourcing hint following. No filler, though "documented defaults" is a vague pointer that costs a little precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so return values need no explanation. With only three parameters and one required, the description supplies enough to call it, though the referenced defaults remain unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (blockId documents itself), so the description must compensate. It partially does by tying block/run targeting to list_test_blocks, but testId (the required parameter) and runId receive no added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) plus resource (optimization score) and adds the scope of contributing factors. The resource is unique among siblings, but the description does not explicitly distinguish it from adjacent scoring tools like get_satisfaction_score or get_strengths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use IDs from list_test_blocks to target a block/run" gives a concrete prerequisite for sourcing parameters, and the omission note hints at a default path. However, it never says when to reach for this tool versus other scoring/reporting siblings, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_question_responsesGet Question ResponsesBRead-onlyIdempotentInspect
Read participant responses for a market-research question using its exact ref.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No | Segment to narrow to (e.g. 'Yes', a rating value, an option label, or a cluster theme) | |
| testId | Yes | ||
| questionId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| filter | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| returned | No | |
| responses | No | |
| questionId | No | |
| questionText | No | |
| questionType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), lowering the burden. The description adds that the question ref must be exact, which hints at matching behavior, but says nothing about pagination (limit default 30, max 50) or how filter interacts with the base query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the operative scope ('exact ref') comes early. Slightly terse given the ambiguity of 'market-research question' against the sibling tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. For a 4-param tool with 25% schema coverage and a confusingly similar sibling, the description omits pagination semantics and tool-selection guidance, leaving it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only filter is documented), so the description should compensate more. 'Using its exact ref' does add meaning beyond the schema's bare minLength=1 for questionId by implying exact-match lookup, but testId and limit remain unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (participant responses for a market-research question), which an agent can act on. However, it does not distinguish itself from the near-identically named sibling get_test_question_responses, nor clarify the 'market-research question' vs 'test question' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 named alternative. With a sibling like get_test_question_responses in the same family, the absence of routing guidance is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_satisfaction_scoreGet Satisfaction ScoreBRead-onlyIdempotentInspect
Read satisfaction score and contributing factors. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sus | No | |
| data | No | |
| about | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| uxiaQ | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| pillars | No | |
| computed | No | |
| nextStep | No | |
| availability | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds useful behavioral context ('contributing factors' as return content, 'legacy tests also supported'), but the phrase 'the documented defaults' points at documentation that isn't present here, leaving the fallback behavior opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the read purpose front-loaded and no filler. Slightly penalized for the dangling reference to 'documented defaults' rather than stating the behavior inline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations cover the safety profile. Still, the ID-sourcing story is incomplete (testId/runId undocumented) and the default-resolution behavior is deferred to external docs, leaving an agent with gaps for a tool that reads from a nested test/run/block hierarchy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% – blockId is documented but runId and testId are not. The description partially compensates by pointing to list_test_blocks for IDs and describing omission/default behavior for the block/run, but testId semantics and the runId format remain undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (satisfaction score) plus the return content ('contributing factors'). It is clear what the tool returns, but it never distinguishes itself from the similar-sounding sibling get_optimization_score, leaving that inference to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent where to obtain the ID ('Use IDs from list_test_blocks') and that omission uses defaults, which is genuinely useful routing. However, it gives no explicit when-to-use vs the neighboring score/report tools (get_optimization_score, get_test_report), so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screen_detailsGet Screen DetailsARead-onlyIdempotentInspect
Read one screen and its metrics using frameIndex from navigation results. Includes one available screenshot preview of the requested screen. Prototype screen indexes are zero-based; live gallery frame numbers are one-based. Images may be unavailable. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. | |
| frameIndex | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| loop | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| metrics | No | |
| nextStep | No | |
| frameIndex | No | |
| screenName | No | |
| testersOnScreen | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, non-destructive profile, but the description adds real behavioral context they don't carry: one screenshot preview is included, images may be unavailable, prototype indexes are zero-based while live gallery numbers are one-based, and legacy tests are supported. This is the kind of operational caveat an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and its selector are front-loaded in the first sentence, and the remaining sentences are short and information-bearing. It is slightly choppy and 'Legacy tests also supported' partially duplicates the legacy note already in the blockId schema description, but no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 described, and the description covers the non-obvious gaps: index bases, image availability, legacy support, and where to source IDs. It omits what 'metrics' entails and whether a missing screen or image produces an error versus an empty result, which are minor given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only blockId is documented), so the description carries most of the burden. It explains frameIndex's numbering scheme and where to obtain it, and points to list_test_blocks for block/run IDs, but testId and runId are never explained and the relationship between them is left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one screen and its metrics') and names the input that selects it ('frameIndex from navigation results'), which cleanly separates it from list-style siblings like list_screen_metrics. It does not explicitly distinguish itself from get_frame_details, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives useful sourcing guidance: frameIndex comes from navigation results, and block/run IDs come from list_test_blocks, with omission falling back to documented defaults. No explicit when-not conditions or direct sibling comparisons (e.g., vs. get_frame_details or list_screen_metrics), so it stops just 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.
get_strengthsGet StrengthsARead-onlyIdempotentInspect
Read positive findings supported by participant evidence. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| strengths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world behavior, so the safety profile is covered. The description adds the useful detail that legacy tests are supported and that omission falls back to defaults, but says nothing about volume, pagination, or result shape beyond what the output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the core purpose front-loaded and no filler. Every clause carries information, though the final 'Legacy tests also supported' fragment is slightly abrupt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description only needs to add purpose and sourcing context, which it largely does by naming the ID source and legacy support. The unresolved overlap with get_insight/list_insights keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with runId and testId having no schema descriptions, so the description is expected to compensate. It partially does by explaining that IDs come from list_test_blocks and target a block/run, but it never clarifies the required testId or the 24-hex ObjectId format, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read positive findings supported by participant evidence'), which is more precise than a tautology of the name. It does not, however, differentiate itself from close siblings like get_insight or list_insights, so an agent still has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives partial routing guidance by pointing to list_test_blocks as the source of IDs and noting that omission uses documented defaults. It offers no explicit when-to-use-vs-alternative guidance against the many get_* sibling tools, leaving selection largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_success_criterionGet Success CriterionARead-onlyIdempotentInspect
Read an accessibility criterion and its evidence using scId from list_success_criteria. Includes up to three available image previews of affected accessibility frames. Images may be unavailable. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| scId | Yes | ||
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| name | No | |
| scId | No | |
| level | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| result | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| category | No | |
| examples | No | |
| nextStep | No | |
| description | No | |
| remediationTeams | No | |
| understandingUrl | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, and the description adds genuinely new behavior: up to three image previews of affected frames and the caveat that images may be unavailable. It also notes legacy test support, which is not derivable from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences that front-load the read operation and the ID dependency, then add the image-preview caveat. No filler, though the 'Legacy tests also supported' clause is appended somewhat abruptly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the description still flags the unreliable image previews. The main gap is that testId, a required parameter, is never addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description must compensate. It explains scId's source, ties runId/blockId to list_test_blocks, and covers blockId omission semantics, but the required testId is never explained in the description and runId's role is only implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('accessibility criterion and its evidence'), and ties the scId to list_success_criteria. It does not explicitly contrast itself with nearby siblings like get_insight or list_success_criteria, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to list_success_criteria for scId and list_test_blocks for block/run targeting, and notes that omission falls back to documented defaults. No when-not-to-use guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_testGet TestARead-onlyIdempotentInspect
Read metadata for one accessible test using testId from list_tests: title, goal, status, type, source, creation date, version, result flag and Uxia link. Does not return findings, screenshots or session data; use result tools for those.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| goal | Yes | |
| type | Yes | |
| title | Yes | |
| source | Yes | |
| status | Yes | |
| testId | Yes | |
| version | No | |
| createdAt | Yes | |
| hasResults | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful scope context beyond that: what the payload contains versus what it deliberately omits (findings, screenshots, session data), which prevents mis-expectation about return content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The primary purpose and the returned-field list come first, and the exclusion/routing clause follows in the same breath.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with a full annotation set and an output schema present, the definition covers everything the agent needs: purpose, id source, field inventory, and explicit boundaries against sibling result tools. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is a single required param, so the description must carry the load. It does add meaning beyond the schema by giving the parameter's provenance ('from list_tests'), which tells the agent how to obtain a valid value; the 24-hex format is already self-documenting via the schema pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read metadata for one accessible test') and enumerates the exact fields returned (title, goal, status, type, source, creation date, version, result flag, Uxia link). This distinguishes it from siblings like get_test_definition, get_test_progress and show_evidence 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the upstream source for the required id ('testId from list_tests') and states the exclusion boundary plus the alternative: 'Does not return findings, screenshots or session data; use result tools for those.' An agent knows both when to call it and when to route elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_definitionGet Test DefinitionARead-onlyIdempotentInspect
Read the current draft, revision, validation and editability before editing. Includes ordered blocks and audience; excludes credential secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as read-only, idempotent, non-destructive, and closed-world. The description adds useful content-level behavior: it includes ordered blocks and audience while excluding credential secrets, which tells the agent what data is safe to expect and what is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no wasted words. The purpose and inclusion/exclusion notes are front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotations and the presence of an output schema, the description covers the important selection and content context well: when to use it and what the returned definition includes or excludes. The main remaining gap is the 0% input-schema description coverage for testId, which the description does not compensate for.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the sole required parameter, testId. The description never mentions testId, its expected format, or how to obtain it, so it adds no meaning beyond the raw schema pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific read action and enumerates the test definition's contents: current draft, revision, validation, editability, ordered blocks, and audience. It is clear what the tool retrieves, though it does not explicitly contrast itself with siblings like get_test or list_test_blocks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read ... before editing" gives a clear usage context: this tool is for preparing an edit. It does not name alternatives or state when not to use it, but the intended moment of use is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_testerGet TesterBRead-onlyIdempotentInspect
Read a participant profile using a tester name from the results. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| match | No | |
| query | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| status | No | |
| testId | No | |
| tester | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| candidates | No | |
| availableNames | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds useful behavioral context (defaults on omission, legacy-test support), but nothing about auth requirements or pagination. Adequate add-on over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core purpose and followed by targeting guidance. No filler sentences or restated title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations cover the safety profile. Still, with four parameters at 25% schema coverage, the description leaves the testId parameter and required-parameter coupling under-specified for a tool that demands both testId and name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only blockId is documented), so the description must compensate. It explains the name parameter ('tester name from the results') and the block/run targeting role of blockId/runId, but leaves testId's role and the runId format undescribed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read a participant profile using a tester name.' An agent can distinguish it from get_test, get_test_definition, and get_test_report, though it never explicitly names those siblings as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives implied guidance: 'Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults' and notes legacy tests are supported. However it never says when to prefer this tool over get_human_session, get_transcript, or other read siblings, so the routing is only partially resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_progressGet Test ProgressARead-onlyIdempotentInspect
Read run status, progress and credit usage. Omit runId for the latest run.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| url | Yes | User-facing test URL. Include this as a clickable Markdown link labelled View test progress in launch and progress summaries. |
| runId | Yes | Internal execution identifier for follow-up tool calls; never substitute it for the user-facing url. |
| blocks | Yes | |
| status | Yes | |
| testId | Yes | Internal identifier for follow-up tool calls; do not display unless explicitly requested. |
| outcome | No | |
| version | Yes | |
| creditsCharged | Yes | |
| currentBlockId | No | |
| creditsRemaining | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds a behavioral default not in the annotations: omitting runId returns the latest run. It stops short of noting rate limits or the shape of the progress/credit data, but the output schema covers returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, and the core action is front-loaded ahead of the parameter default. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the default-run behavior. The remaining gap is that neither parameter format (the 24-hex pattern) nor testId's role is described, a minor omission for a simple two-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden. It explains runId's behavior (omit → latest run) but says nothing about testId beyond it being required, leaving half the parameters relying on name inference alone. Partial compensation merits only a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource scope (run status, progress, credit usage). It implicitly distinguishes itself from the sibling get_test by focusing on run progress/credit rather than test configuration, though it never names or contrasts that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Omit runId for the latest run' gives clear operational guidance for one parameter, but there is no when-to-use-this-vs-alternatives guidance (e.g., get_test vs get_test_progress) and no prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_question_responsesGet Test Question ResponsesARead-onlyIdempotentInspect
Read typed participant answers for one Survey question, using its exact ref. Optionally filter by a real testerName returned by list_test_questions. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. | |
| testerName | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | No | |
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| number | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| clusters | No | |
| nextStep | No | |
| question | No | |
| paywalled | No | |
| responses | No | |
| questionType | No | |
| totalResponses | No | |
| testerResponses | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds marginal context — the defaults on omission and 'Legacy tests also supported' — but discloses nothing about pagination or result volume beyond what the output schema would carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences front-load the core action, then layer sourcing and defaults. No filler, though the final 'Legacy tests also supported' clause is a dangling fragment that could be integrated more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations carry the safety profile, so the description's remaining burden is parameter sourcing and defaults — both addressed. The one notable gap is the failure to distinguish this tool from the non-test get_question_responses sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (just blockId documented), so the description must compensate and partially does: it sources testerName from list_test_questions and block/run IDs from list_test_blocks, and explains the omission default. However, 'exact ref' and the mandatory testId/runId relationship are not elaborated, leaving gaps for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read typed participant answers for one Survey question') and pins scope with 'using its exact ref.' This is more precise than a generic read, but it never contrasts itself with the sibling get_question_responses, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional usage: testerName is optional and must be 'a real testerName returned by list_test_questions,' and block/run IDs come from list_test_blocks, with omission falling back to documented defaults. It names sibling tools for sourcing values but offers no exclusions or when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_reportGet Test ReportARead-onlyIdempotentInspect
Read the saved report for the whole test: introduction, study goals, audiences, task summaries, key findings, supporting surveys and selected participant quotes, or the A/B comparison report. Use when asked about the report or its conclusions. This is a generated snapshot, not fresh analysis. Does not generate or refresh a report. Does not require a blockId. If available=false, explain that no report has been generated; use evidence tools for analysis instead.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| mode | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| quotes | No | |
| report | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| available | No | |
| generatedAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real context beyond them: the report is a stale generated snapshot rather than fresh analysis, it does not require a blockId, and it prescribes handling of the available=false state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then short declarative sentences covering scope, staleness, exclusions, and the failure path. No filler sentences; each clause adds distinct decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description covers content, usage, staleness semantics, and the available=false fallback. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage, so the description carries the burden. It clarifies the identifier semantics indirectly by stating a blockId is not required, but adds nothing about the testId format or validation beyond what the schema pattern shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the saved report for the whole test') and then enumerates the contents (introduction, study goals, task summaries, key findings, quotes, A/B comparison), which lets an agent distinguish it from sibling summary/insight tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('Use when asked about the report or its conclusions'), explicit when-not ('Does not generate or refresh a report'), and names the alternative behavior ('use evidence tools for analysis instead') for the no-report case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_setupGet Test SetupARead-onlyIdempotentInspect
Get the current test setup: title, task (the concrete action the tester performs), scenario (the situational framing shown to testers), and configured post-test questions. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| task | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| title | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| scenario | No | |
| postTestQuestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds genuine context beyond that: what the payload contains, that omitting IDs yields documented defaults, and that legacy tests are supported. It does not cover auth requirements or how runId/testId interact, which keeps it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the returned-field list front-loaded and the targeting/omission rule following. Every clause carries information; nothing is padded. Slightly dense in the parenthetical definitions but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 names the key fields for selection purposes. For a read-only, idempotent, closed-world tool with three parameters, the description plus annotations plus output schema cover what an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%: only blockId carries a schema description, while runId and testId are pattern-only. The description partially compensates by explaining that block/run targeting uses IDs from list_test_blocks and that omission uses defaults, but it never clarifies the required testId or the relationship between runId and testId. Adequate but with clear gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource (get the current test setup) and enumerates exactly what is returned: title, task, scenario, and configured post-test questions. That field list distinguishes it from sibling readers like get_test, get_test_definition, and get_test_summary. It stops short of naming an alternative explicitly, so sibling differentiation is implied 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says to use IDs from list_test_blocks to target a block/run and that omission falls back to documented defaults, which is real usage context. However, it never says when to prefer this tool over get_test, get_test_definition, or get_test_summary, and gives no prerequisites or exclusions. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_summaryGet Test SummaryARead-onlyIdempotentInspect
Read a usability-results overview: test metadata, top five findings, optimization and satisfaction scores, strengths and navigation metrics. Optional runId and blockId scope the results. Missing, restricted or not-yet-ready sections are marked unavailable; ambiguous block selection returns references for follow-up. Does not launch or modify tests.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| test | Yes | |
| runId | No | |
| testId | Yes | |
| blockId | No | |
| insights | Yes | |
| strengths | Yes | |
| navigation | Yes | |
| optimization | Yes | |
| satisfaction | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds genuinely new traits: bounded output ('top five findings'), graceful degradation ('missing, restricted or not-yet-ready sections are marked unavailable'), and a defined edge-case response for ambiguous block selection. It stops short of describing pagination or ordering, but the edge-case disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler; the payload enumeration is front-loaded and the negative constraint is last. It is compact for the amount of information conveyed, though 'strengths and navigation metrics' reads as a list dump rather than a prioritized statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 needn't be spelled out, and annotations carry the safety profile, so the description's remaining job is scope plus edge cases — both covered. The only real gap is resolving the required testId versus the optional scoping IDs and the boundary against get_test_report.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description carries the burden, and it only partially discharges it: it names runId and blockId as optional scoping inputs and hints that blockId may resolve ambiguously, but it says nothing about the required testId, nor about ID formats or why blockId takes an arbitrary string while the other two are 24-char hex.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb ('Read') and a concrete resource ('usability-results overview'), then enumerates the payload (metadata, top five findings, optimization/satisfaction scores, strengths, navigation metrics). It differentiates itself from write siblings via 'Does not launch or modify tests,' but never contrasts itself with the near-neighbor get_test_report or get_test, so the reader must infer that this is the lighter-weight aggregate view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how runId and blockId scope results, which implies usage, and the closing sentence excludes launching/modifying. However, it never states when an agent should pick this overview instead of the many sibling result tools (get_test_report, get_optimization_score, get_satisfaction_score, get_test_progress), 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.
get_transcriptGet TranscriptARead-onlyIdempotentInspect
Read a session transcript by exact ref from list_transcripts. Paginate long transcripts with offset and limit in characters. For post-test answers, use get_test_question_responses. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| limit | No | ||
| runId | No | ||
| offset | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | No | |
| data | No | |
| text | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| duration | No | |
| nextStep | No | |
| question | No | |
| truncated | No | |
| nextOffset | No | |
| testerName | No | |
| totalLength | No | |
| answerPreview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond them: pagination semantics, that limits are measured in characters, legacy-test support, and the default behavior when block/run is omitted. The phrase "documented defaults" is slightly circular rather than stating the actual defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short, front-loaded sentences that lead with the core action before routing and pagination details. Efficient overall, though "omission uses the documented defaults" is vaguely worded filler rather than a concrete default value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. Combined with annotations and the routing/pagination guidance, the definition is nearly complete; the remaining gaps are the unexplained testId and the circular reference to "documented defaults" for block/run omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description must compensate, and it does for most parameters: ref's source (list_transcripts), limit's unit (characters), offset as pagination, and blockId/runId sourced from list_test_blocks. Only testId lacks added meaning, and the limit bounds/max are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read a session transcript") and immediately scopes it to "by exact ref from list_transcripts," distinguishing it from the sibling list_transcripts and from get_test_question_responses. An agent knows exactly what this returns 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: post-test answers go to get_test_question_responses, refs come from list_transcripts, and block/run IDs come from list_test_blocks. It also states the pagination path (offset/limit) and that legacy tests are supported, covering both when-to-use and when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_testLaunch TestADestructiveInspect
Launch the previewed revision and spend credits. Requires explicit approval of preview_test_launch costs; maximumCharge is that approved amount. Cost changes require new approval. Locks the definition. On success, show a clickable link using the returned url; do not display backend run/test IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| maximumCharge | Yes | ||
| definitionRevision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| url | Yes | User-facing test URL. Include this as a clickable Markdown link labelled View test progress in launch and progress summaries. |
| runId | Yes | Internal execution identifier for follow-up tool calls; never substitute it for the user-facing url. |
| blocks | Yes | |
| status | Yes | |
| testId | Yes | Internal identifier for follow-up tool calls; do not display unless explicitly requested. |
| outcome | No | |
| version | Yes | |
| creditsCharged | Yes | |
| currentBlockId | No | |
| creditsRemaining | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that credits are spent, that the definition gets locked, that cost changes invalidate approval, and gives explicit output-handling guidance (show the returned url link, never expose backend run/test IDs). The destructiveHint/openWorldHint annotations are corroborated and enriched rather than merely restated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, action-front-loaded, with the cost/approval gate next and output guidance last. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 documented, and the description still adds useful display guidance. The mutation and credit-spend semantics are covered; only the meaning of definitionRevision/testId is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry param meaning. It does define maximumCharge as the approved cost amount, but testId and definitionRevision are left unexplained, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Launch the previewed revision and spend credits') and pins the scope to the previewed revision, which cleanly separates it from preview_test_launch. An agent knows exactly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Establishes the prerequisite flow by naming preview_test_launch as the source of the approved cost and warning that cost changes require new approval. It doesn't phrase an explicit 'do not call before previewing' exclusion, but the sequencing is clear enough to route the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accessibility_testsList Accessibility TestsCRead-onlyIdempotentInspect
List accessibility tests with IDs and status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| tests | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only that results include IDs and status, which is modest value beyond the structured fields; it says nothing about ordering, pagination behavior, or result volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key information front-loaded and no wasted words. It is terse to the point of under-specification, but nothing in it is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, but for a list tool with a limit cap of 50, a query string, and a status enum, the definition leaves all invocation behavior unspecified. Given the dense sibling list, more context is needed to select this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters (limit, query, status), and the description compensates for none of them: it never mentions pagination limits, free-text query matching, or filtering by the status enum. 'with IDs and status' merely names a returned field and implies status is meaningful without explaining the filter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List accessibility tests') and adds the returned fields (IDs and status). It does not distinguish this from the many sibling list_* tools (list_tests, list_transcripts, list_insights), so an agent must infer 'accessibility' is the differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_tests or the other list_* siblings, no prerequisite conditions, and no exclusions. The description is a bare capability statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audiencesList AudiencesARead-onlyIdempotentInspect
List up to 10 audiences in the caller's Uxia workspace. Use this to discover existing audiences before creating a new one, to reference an audience by id in another action, or to summarize the workspace's targeting setup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| audiences | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, non-destructive, closed-world operation, so the safety profile is covered. The description still adds genuine value by disclosing the 'up to 10' result cap and the workspace scoping, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the what and the cap, followed by the three use cases. Every clause carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it covers scope, cap, and intent. It leaves one small gap: it doesn't say whether more than 10 audiences exist can be retrieved, which matters given there is no pagination parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description doesn't need to document input semantics, and it correctly implies the tool takes no filtering arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (List), resource (audiences), and scope (caller's Uxia workspace), plus a concrete cap of 10. An agent can immediately tell this apart from create_audience and the other list_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lays out three concrete when-to-use scenarios: discovery before creation, id-references in other actions, and summarizing targeting setup. It stops short of naming a specific alternative tool or any when-not-to-use condition, so it falls just shy of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dropoff_pointsList Dropoff PointsBRead-onlyIdempotentInspect
List screens where participants stopped progressing, ranked by drop-off count, including share of all testers and distinct drop-off paths. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| points | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that omission falls back to documented defaults and that legacy tests are supported, which is useful context, but it says nothing about result size limits, pagination, or error behavior beyond what the annotations and schema already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded ahead of the targeting guidance; nothing is padded. The trailing fragment 'Legacy tests also supported' is slightly disjointed but still earns its place by flagging a compatibility case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description is not obliged to explain return values, and the annotations cover the safety profile. Still, for a 4-parameter tool with 25% schema coverage, the required testId and the limit parameter's semantics are unexplained anywhere, leaving the definition adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only blockId is documented), so the description must carry weight: it explains block/run targeting via list_test_blocks IDs and the omit-for-defaults behavior, which covers blockId and partially runId. It never explains the required testId or what limit controls (default 8, max 20), so the low-coverage gap is only partially closed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List screens where participants stopped progressing') and even describes the ranking and included metrics, so the purpose is unambiguous. It does not explicitly differentiate itself from near-neighbors such as list_insights, list_paths, or list_screen_metrics, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults' gives real prerequisite guidance and points at the sibling that supplies IDs. However, there is no statement of when to prefer this tool over list_insights/list_paths, nor any exclusion or precondition beyond that, leaving usage implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_human_sessionsList Human SessionsBRead-onlyIdempotentInspect
List human sessions with exact refs and completion status. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| sessions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-open-world, non-destructive behavior, so safety is covered. The description usefully adds that results carry refs and completion status and that omissions fall back to defaults, but says nothing about pagination, result caps, or scope breadth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the resource and returned scope front-loaded and no filler. Tightly written, though the trailing 'Legacy tests also supported' is a dangling caveat without any actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, and annotations carry the safety profile. However, with two of three parameters undocumented and a 'legacy tests' caveat left unexplained, the definition is only minimally complete for a tool whose targeting logic is its main complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: blockId is documented in the schema while testId and runId carry only regex patterns. The description vaguely gestures at 'IDs from list_test_blocks to target a block/run' but does not explain the required testId format, the runId relationship, or the difference between omitting blockId vs runId, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (human sessions) and adds the returned scope: exact refs and completion status. It distinguishes itself from the singular get_human_session only implicitly, so it is clear but not fully sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives partial routing guidance: 'Use IDs from list_test_blocks to target a block/run' and notes omission uses documented defaults. It never states when to choose this over get_human_session or how it relates to list_transcripts, so usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_insightsList InsightsARead-onlyIdempotentInspect
List findings ranked by severity. Omit blockId for top insights across all AI task blocks; limit applies globally. Supply blockId for one task. Keep returned block/run IDs with evidence. One call includes all severities; do not iterate per severity or category. Use severity/category filters only when requested. testerName filters AI-tester evidence by name; use list_transcripts for names and get_human_session for human participants. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| runId | No | ||
| sortBy | No | severity | |
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. | |
| category | No | ||
| severity | No | ||
| testerName | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| paywall | No | |
| insights | No | |
| nextStep | No | |
| totalTesters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior. The description adds important behavioral context: limit is global when blockId is omitted, returned block/run IDs should be kept with evidence, and legacy tests are supported. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then layers usage constraints and resolver guidance. It is dense but every sentence provides an actionable instruction, aside from the brief legacy-tests note which remains useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be explained, and annotations cover safety. However, for an 8-parameter tool with low schema description coverage, omitting required testId semantics and sortBy behavior leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%, so the description must carry the load. It explains blockId omission/supply, global limit behavior, severity/category filter usage, and testerName scope, but does not explain sortBy (severity vs relevance), the required testId meaning, or the runId format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'List' and resource 'findings/insights', plus the ranking basis 'by severity'. It distinguishes from the singular sibling get_insight by describing a multi-item listing over AI task blocks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use rules: omit blockId for all AI blocks, supply blockId for one task, one call includes all severities, do not iterate per severity/category, and use filters only when requested. It also names list_transcripts and get_human_session as alternatives for name resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_loop_screensList Loop ScreensBRead-onlyIdempotentInspect
List screens participants returned to after leaving, indicating backtracking or possible confusion. A revisit means returning to a previously left screen. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| loops | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and non-destructive, so safety is covered. The description does add real conceptual context by defining what a "loop" is and that it signals backtracking/possible confusion, which helps interpret the output; it does not add permission, rate, or pagination behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, purpose front-loaded, definitions placed before the ID-sourcing instruction. It is tight overall, though the vague phrase "the documented defaults" gestures at the schema rather than stating the fallback directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 required testId plus the neutral safety profile are handled by structured fields. Still, for a 4-parameter analytical tool with low schema coverage, the description omits the default result count (8, max 20) and gives no cue on how this lens differs from its analytics siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (blockId is the lone documented parameter). The description partially compensates by pointing to list_test_blocks for the targeting IDs and noting that omission falls back to "documented defaults," but it says nothing about limit's range/meaning or what testId/runId require beyond their regex patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb and resource ("List screens participants returned to after leaving") and even defines the term "revisit," so the agent knows exactly what data it gets. It does not distinguish this from close analytical siblings like list_paths, list_dropoff_points, or list_screen_metrics, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use IDs from list_test_blocks to target a block/run" gives a concrete routing hint toward a sibling for obtaining valid IDs, and it notes legacy tests are supported. However, there is no guidance on when to choose this tool over the nearby path/dropoff/loop-adjacent analytics tools, so usage is implied rather than delimited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pathsList PathsBRead-onlyIdempotentInspect
List navigation paths and participant counts. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| runId | No | ||
| status | No | any | |
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| paths | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds useful context beyond that (participant counts are returned, defaults apply on omission, legacy tests are supported), but it says nothing about pagination behavior despite a limit default of 8.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core purpose front-loaded and no filler. Every sentence carries some signal, though the 'documented defaults' phrasing is vague enough to weaken the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explained. But for a 5-parameter listing tool with low schema coverage, the description omits pagination/limit semantics and status filtering meaning, leaving gaps an agent needs to call it precisely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must carry parameter meaning, and it largely does not. It gestures at block/run targeting and default behavior, but limit, status (enum success/drop-off/any), and testId are left unexplained, and the run/block semantics are asserted more than clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List navigation paths and participant counts'), which is more informative than a generic list tool. It partially differentiates from siblings by naming list_test_blocks as the ID source, though it does not distinguish itself from other list_* tools like list_dropoff_points or list_insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides workflow guidance by telling the agent to source IDs from list_test_blocks and that omission uses documented defaults. However, it gives no when-to-use vs when-not guidance or alternatives among the many sibling listing tools, leaving selection largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_screen_metricsList Screen MetricsARead-onlyIdempotentInspect
List per-screen misclick rate, average attempts, total clicks and testers reached. Use sortBy to select the ranking; default is misclickRate descending. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| runId | No | ||
| sortBy | No | misclickRate | |
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| screens | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and non-openWorld, so the safety profile is covered. The description adds default sort ordering and legacy-test support, which is useful, but says nothing about pagination, result caps, or how metrics are aggregated, so it slightly exceeds the annotation bar without being rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with what is returned and then the two knobs (sortBy, block/run targeting). No filler, though the closing 'Legacy tests also supported' is terse enough to be slightly ambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 description covers the core selection controls plus ID provenance. The unaddressed limit parameter and the vague 'documented defaults' phrasing keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must compensate. It meaningfully explains sortBy, blockId/runId targeting, and the omission default, but never mentions limit or its 1-30 cap, and gives no format guidance for runId vs testId, leaving real gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (list) plus resource (screen metrics) and an enumeration of the returned measures (misclick rate, average attempts, total clicks, testers reached), which is more than a restatement of the name. It also references sibling tool list_test_blocks for ID sourcing, giving the agent a routing anchor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains how to use sortBy (default misclickRate descending), how to target a block/run via IDs from list_test_blocks, what happens on omission (documented defaults), and that legacy tests are supported. It stops short of stating when NOT to use this versus related listers like list_insights.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_success_criteriaList Success CriteriaBRead-onlyIdempotentInspect
List accessibility criteria, status and exact refs. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| limit | No | ||
| runId | No | ||
| status | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. | |
| category | No | ||
| reviewScope | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| summary | No | |
| criteria | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds two useful behavioral facts: omission uses documented defaults, and legacy tests are supported. It says nothing about pagination interactions with the default limit of 100 or how filters combine, so it adds only moderate value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is returned before the targeting mechanics. No filler, though 'exact refs' is slightly opaque phrasing that could be spent on filter semantics instead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, but an 8-parameter tool with 13% schema coverage needs the description to pick up the slack on level/status/category/reviewScope filters. It does not, so an agent cannot tell how to narrow a result set that defaults to 100 items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only blockId has schema description coverage (13% of 8 params), so the description carries the burden of explaining the rest. It covers block/run targeting but is silent on level, status, category, reviewScope, limit and testId, leaving half the filter surface undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List accessibility criteria') plus the payload shape (status and exact refs), which is more than a restatement of the name. It does not explicitly differentiate itself from the singular get_success_criterion or list_accessibility_tests, but the plural list plus the returned fields make the intent readable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to list_test_blocks as the source of block/run IDs and says omission falls back to documented defaults, which is real usage guidance. It never states when to prefer this over get_success_criterion or list_accessibility_tests, so the sibling selection 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.
list_test_blocksList Test BlocksBRead-onlyIdempotentInspect
List ordered blocks, statuses and exact block/run IDs for result queries.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| url | Yes | User-facing test URL. Include this as a clickable Markdown link labelled View test progress in launch and progress summaries. |
| runId | Yes | Internal execution identifier for follow-up tool calls; never substitute it for the user-facing url. |
| blocks | Yes | |
| status | Yes | |
| testId | Yes | Internal identifier for follow-up tool calls; do not display unless explicitly requested. |
| outcome | No | |
| version | Yes | |
| creditsCharged | Yes | |
| currentBlockId | No | |
| creditsRemaining | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the genuinely useful traits that results are returned in a defined order and that the IDs are exact/authoritative for follow-up queries. It says nothing about pagination, large test behavior, or what happens for a test with no runs, which keeps it at an adequate-not-rich 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the returned fields front-loaded and no filler. It is arguably too compressed rather than bloated, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 narrated, and the safety semantics come from annotations. What is missing for a two-parameter query tool is the meaning of the optional runId and any prerequisite about test state, which leaves the definition minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description carries the full burden. It alludes to run vs. test scope but never explains what passing runId does versus omitting it, nor notes the 24-character hex ObjectId format the schema's pattern enforces. The agent is left to infer the relationship between the two IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List ordered blocks') and enumerates the payload ('statuses and exact block/run IDs'), which is enough to distinguish it from list_tests, list_audiences and list_insights. The trailing phrase 'for result queries' is vague and never explains what a 'block' actually is. Clear, but without any explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for result queries' is the only usage hint, and it is too thin to route an agent between this tool and neighbors like get_test_definition, prepare_test_block or show_evidence. No when-to-use, no when-not-to-use, no prerequisites (e.g., whether the test must already be launched or have results).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_test_questionsList Test QuestionsARead-onlyIdempotentInspect
List questions in one Survey block with exact refs, types, response counts and tester names. Legacy tests return their existing post-test questions. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| paywall | No | |
| nextStep | No | |
| questions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only the legacy-test behavior (returning existing post-test questions) and the default-inference note, but says nothing about pagination, ordering, or result volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is returned before the targeting instructions. The legacy-test note is stated twice in slightly different words ('Legacy tests return their existing post-test questions' / 'Legacy tests also supported'), which is mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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's field list is somewhat redundant with it). However, two of three parameters remain undescribed, and the description is thin on how runId interacts with blockId for non-legacy tests.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (blockId documented, testId/runId bare), so the description must compensate. It implies the block/run targeting relationship but never explains the required testId's role, and 'the documented defaults' is circular rather than informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List questions in one Survey block') and enumerates the returned fields (refs, types, response counts, tester names), which is more than a restatement of the name. It also implicitly positions itself against list_test_blocks as the ID source, though it does not sharply contrast the two list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear prerequisite workflow ('Use IDs from list_test_blocks to target a block/run') and covers the omission case ('omission uses the documented defaults', 'Legacy tests also supported'). There is no explicit when-not-to-use or alternative for retrieving individual question responses, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_testsList TestsARead-onlyIdempotentInspect
List tests in workspaces the caller can access, newest first. Optionally search titles with query, filter status, and limit results. Returns test metadata, Uxia links, result flags and the total matching count; does not return findings or session data.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| tests | Yes | |
| total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds ordering (newest first), the access-scope constraint, and an explicit return exclusion, but says nothing about pagination or how the total count relates to the page limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the core scope and ordering front-loaded. The return-value clause is partly redundant with the output schema, but it earns its place by ruling out findings/session data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-shape documentation is not required, and the annotations cover safety. The description supplies access scope, ordering, filter options and return exclusions, leaving only pagination behavior and sibling routing unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does: query is scoped to title search, status is a filter, limit caps results. The only gap is that limit's default (20) and max (50) are left to the schema to convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (list tests) plus scope (workspaces the caller can access) and ordering (newest first), which is more than the title restates. It does not differentiate itself from siblings like get_test or list_test_blocks, so the agent must infer when to prefer this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the optional narrowing knobs (query, status, limit) and rules out a class of use cases with 'does not return findings or session data.' However, it never names the alternative tool (get_test, list_test_blocks) or the condition that would select it, so routing 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.
list_transcriptsList TranscriptsARead-onlyIdempotentInspect
List AI-tester session transcripts with exact refs and step counts for clicks, reasoning and screen-by-screen behavior. For post-test answers, use list_test_questions and get_test_question_responses. testerName is an optional case-insensitive partial-name filter; omit to list all testers. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. | |
| testerName | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No | |
| transcripts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety and repeat-safety profile is fully covered without the description. The description adds only the legitimately useful note that legacy tests are supported, but says nothing about pagination, result caps, or performance on large sessions. Modest added value against an already-complete annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences; the core purpose leads, then routing, then parameter notes. Nothing is redundant with the schema or annotations, and the trailing legacy-tests note is short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 safety profile comes from annotations. However testId (required) and runId are never characterized in description or schema, leaving an agent to guess their relationship and whether runId narrows results. Adequate but with a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (25%), so the description must compensate. It does add real meaning for testerName (optional, case-insensitive partial-name filter; omit for all testers) and reiterates blockId's omission default, but testId and runId carry no semantics anywhere. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (AI-tester session transcripts), and adds scope detail: exact refs plus step counts for clicks, reasoning and screen-by-screen behavior. It implicitly distinguishes from list_human_sessions by specifying AI-tester sessions, though it doesn't explicitly name that sibling. Clear and specific overall.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real routing rule: post-test answers go to list_test_questions and get_test_question_responses instead. It also points to list_test_blocks as the source of block/run IDs and explains the omission default. It never clarifies this tool versus get_transcript, which is the closest-looking sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_test_blockPrepare missing test detailsARead-onlyIdempotentInspect
Collect up to two missing wording fields for an existing task. Uses forms when supported; otherwise ask returned questions in chat and report that no form appeared. Read-only: save accepted wording with update_task. Never include secrets or treat answers as launch approval.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | Draft one short sentence, usually 10–25 words: action + one target + essential constraints. Preserve accepted wording. | |
| testId | Yes | ||
| blockId | Yes | ||
| scenario | No | Draft 1–3 short sentences in second person, present tense: situation + reason to act now. Do not repeat the task. | |
| stopCondition | No | Draft one short "Stop when" sentence naming an observable on-screen state at task completion. No alternatives or off-screen events. | |
| expectedRevision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| saved | No | |
| status | Yes | |
| testId | No | |
| blockId | No | |
| message | No | |
| wording | No | |
| nextTool | No | |
| questions | No | |
| expectedRevision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely useful context beyond them: that it does not persist anything (update_task does), that it may or may not surface a form, and that answers are not launch approval. That is meaningful behavioral disclosure for a read tool with a side-channel UI dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, then fallback behavior, then constraints. Nearly every clause carries information; only the mid-sentence form/chat clause is slightly compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the description covers the one non-obvious return behavior (form vs. returned questions). The chief gap is the unlabeled identity/revision parameters, but the rest of the contract is sufficiently described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: task, scenario and stopCondition are well documented inline, but testId, blockId and expectedRevision carry no description text and the description does not compensate (no concurrency/conflict note for expectedRevision, no statement that testId/blockId identify the existing task). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and object ("Collect up to two missing wording fields for an existing task") and implicitly distinguishes itself from the sibling update_task, which persists the values. The phrase "wording fields" is a little abstract versus the concrete task/scenario/stopCondition names in the schema, so it is clear but not maximally crisp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real routing guidance: use forms when supported, otherwise ask the returned questions in chat, and save accepted wording via update_task. It also sets two negative rules (never include secrets, never treat answers as launch approval). It stops short of naming when this tool should be preferred over add_task or create_block_test.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_test_launchPreview Test LaunchARead-onlyIdempotentInspect
Preview the saved revision’s sequence, participants, costs and blockers. Present costs for explicit approval before launch_test. Any edit requires a new preview and approval.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| definitionRevision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| testId | Yes | |
| details | No | |
| blockers | Yes | |
| audiences | No | |
| canLaunch | Yes | |
| blockCosts | No | |
| expectedCredits | No | |
| creditsRemaining | No | |
| freeLaunchApplied | No | |
| definitionRevision | Yes | |
| expectedTesterCount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, so safety is covered. The description adds real behavioral context beyond that: this is a mandatory approval gate before launch_test and is invalidated by edits, which an agent must respect. It stops short of describing return/pagination detail, but an output schema exists to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with zero filler: what is previewed, the approval obligation, and the invalidation rule. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only preview tool with an output schema and strong annotations, the description covers purpose, workflow ordering, and invalidation. The remaining gap is parameter meaning, which is unaddressed despite 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for the two parameters. It only obliquely implies definitionRevision via 'the saved revision' and never addresses testId, leaving both parameters semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Preview) plus the exact resource it operates on, and enumerates the preview contents (sequence, participants, costs, blockers). This clearly distinguishes it from the sibling launch_test, which performs the actual launch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: present costs for approval before calling launch_test, and re-preview after any edit. The alternative (launch_test) and the gating condition are named outright, 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.
remove_test_blockRemove Test BlockADestructiveIdempotentInspect
Remove a draft block by ID. Clear dependent browser continuations first. Preserves other blocks and audience. No launch.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| blockId | Yes | ||
| construction | No | Optional decisions; proposed wording stays separate. Acceptance needs current proposalRevision and matching saved wording. Never launch approval. | |
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds value beyond them by disclosing cascade behavior (continuations must be cleared first), that other blocks and audience are preserved, and that no launch occurs — real side-effect context for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four terse sentences, front-loaded with the core action and then the constraint and side effects. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 description covers the main behavioral concerns (cascade, preserved state, no launch). It falls short only on clarifying the secondary parameters (testId, construction) for a 4-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the description only maps 'by ID' to blockId and says nothing about testId, the construction array, or the ignored expectedRevision. Since coverage is not high, the description fails to compensate for the undocumented half, leaving this at a minimum-viable 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (draft block) plus the identifier mechanism (by ID). The 'draft block' scope distinguishes it from siblings like update_test_block and add_test_block, so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a prerequisite ('Clear dependent browser continuations first') and a scope constraint, but never names when to use this over alternatives such as update_test_block or when not to use it. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_test_blocksReorder Test BlocksBDestructiveIdempotentInspect
Reorder using every block ID exactly once. Order controls execution and survey scope. Invalid browser continuations are rejected. No launch.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| blockIds | Yes | Every existing block ID exactly once, in the desired execution order. | |
| construction | No | Optional decisions; proposed wording stays separate. Acceptance needs current proposalRevision and matching saved wording. Never launch approval. | |
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds useful context ('Invalid browser continuations are rejected', 'No launch') but never discloses what reordering destroys or that it mutates persisted ordering, which the destructiveHint implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with the core operation stated first and no wasted prose. The 'No launch.' fragment is terse but functional; overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explained, and annotations cover safety. However, for a destructive, idempotent reorder with a nested construction parameter, the description is thin on preconditions and the consequences of invalid ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema itself documents blockIds thoroughly ('Every existing block ID exactly once...'). The description reinforces the blockIds constraint but says nothing about construction or expectedRevision, so it adds only marginal meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reorder test blocks, with the key constraint that every block ID must appear exactly once. The action is unmistakable, though it doesn't explicitly name how it differs from siblings like update_test_block or set_test_construction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use vs alternatives guidance. 'Order controls execution and survey scope' hints at why ordering matters but doesn't tell the agent when to pick this over list_test_blocks, update_test_block, or set_test_construction. No prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_testReview TestBRead-onlyIdempotentInspect
Open the draft review card. Retained for existing clients; get_test_definition also includes this card. Reads the saved draft without edits or launch.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description usefully adds that it 'reads the saved draft without edits or launch,' clarifying it has no launch side-effect (relevant given sibling launch_test) and noting its retained/legacy status — genuine context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the action is stated first and the caveats follow. The telegraphic style is efficient though slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explained, and the low-complexity single-parameter shape keeps the burden small. Still, the undefined 'review card' concept and the entirely undocumented testId leave a meaningful gap an agent would want closed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter testId has 0% schema description coverage (no description, only a 24-hex pattern), and the description never mentions it or explains which test identifier is expected. With one undocumented required parameter, the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (opening the draft review card) and states it reads the saved draft, but 'review card' is jargon that isn't defined, leaving the concrete output/resource ambiguous. It does distinguish itself from get_test_definition, which is a plus, but the core purpose remains only partially clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'Retained for existing clients; get_test_definition also includes this card,' which implies this tool is legacy and that get_test_definition is a broader alternative. However, it never states explicitly when to prefer this tool over get_test_definition, so the routing 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.
search_quotesSearch QuotesBRead-onlyIdempotentInspect
Search participant quotes; preserve attribution and wording. Use IDs from list_test_blocks to target a block/run; omission uses the documented defaults. Legacy tests also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| runId | No | ||
| testId | Yes | ||
| blockId | No | Select one block from list_test_blocks. Omit to infer a sole relevant block; list_insights defaults to all AI blocks. Omit for legacy tests. | |
| testerName | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| retry | No | |
| runId | No | |
| scope | No | |
| total | No | |
| quotes | No | |
| status | No | |
| testId | No | |
| blockId | No | |
| message | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so safety is covered. The description adds a genuinely useful constraint (preserve attribution and wording) but says nothing about result volume, ordering, or how the limit interacts with matching, leaving real behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action before the targeting guidance. No filler, though the 'Legacy tests also supported' clause is terse to the point of being ambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. Still, for a 6-parameter search tool with 17% schema coverage, the description leaves too many parameters and the block/run selection rules underspecified to be fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% across 6 parameters, so the description must compensate and largely does not. It gestures at blockId/runId via 'IDs from list_test_blocks' and mentions defaults, but query, limit, testId format, and testerName are left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search participant quotes') plus a behavioral constraint ('preserve attribution and wording'), which sets it apart from retrieval-style siblings like get_transcript and get_question_responses. It doesn't explicitly name those siblings, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use IDs from list_test_blocks to target a block/run' gives workflow context, and the legacy-test note implies a fallback case. However, there is no statement of when to pick this over get_transcript, get_question_responses, or list_insights, so usage 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_block_continuationSet Block ContinuationADestructiveIdempotentInspect
Resume a task from the nearest preceding website task with the same URL. Use null to clear. Both blocks must exist in this draft; cannot join separate tests or launched runs.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| blockId | Yes | ||
| fromBlockId | Yes | Earlier live-website AI block for the same URL whose browser session this block resumes. Use null to start independently. Both blocks must already exist in this draft. | |
| construction | No | Optional decisions; proposed wording stays separate. Acceptance needs current proposalRevision and matching saved wording. Never launch approval. | |
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so safety is covered. The description adds state preconditions beyond the annotations — both blocks must already exist in this draft, and cross-test or launched-run joins are rejected — which is exactly the extra behavioral context an agent needs. No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the effect before the clearing rule and the constraints. Not a word of padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 destructive annotation plus stated preconditions cover the mutation risk. The description is adequate for a draft-scoped link tool, though it says nothing about the optional construction payload beyond what the schema provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 60% schema description coverage, the schema already documents fromBlockId, construction, and expectedRevision in detail. The description only reinforces fromBlockId's null-clearing behavior; testId and blockId receive no semantic detail from either source. Baseline 3 is appropriate since the schema carries most of the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete effect — resuming a task from the nearest preceding website task with the same URL — which maps to setting a block continuation. It is clear and specific about what happens, but it does not name a sibling or otherwise disambiguate from tools like update_test_block or set_test_construction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use null to clear" tells the agent how to remove a continuation, and the constraint "cannot join separate tests or launched runs" clearly states a when-not condition. It stops short of naming an alternative tool for cases outside the draft, so it is not a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_surveySet SurveyADestructiveInspect
Add or replace a Survey block’s questions. Omit blockId to append with a server-assigned ID, or use an existing Survey ID to edit. Returns blockId for new surveys. Other blocks are preserved. No launch.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| blockId | No | Omit to append a new survey with a server-assigned ID. Supply an existing survey ID to edit. | |
| questions | Yes | Follow-up survey questions capture judgments, comparisons, friction and what the researcher wants to learn. Use explicit question objects with unique id, type, question and required fields. open_ended needs question text; multiple_choice, ranking and budget_allocation need at least two non-empty options. allowMultiple applies to multiple_choice. rating needs scaleMin < scaleMax; rating and ranking require scaleLabels.min and scaleLabels.max naming the endpoints. budget_allocation asks testers to split 100 points across options. yes_no asks for a yes/no answer. At most 10 questions per Survey; launch preview reports plan and test-wide limits. | |
| expectedRevision | No | Legacy compatibility only; ignored. Draft revisions are resolved automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false. The description adds genuinely useful context beyond them: mutations are scoped ('Other blocks are preserved'), new surveys receive a server-assigned ID returned as blockId, and no launch is triggered. It stops short of stating that existing questions in the block are overwritten, which is the main destructive consequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the primary action stated first and the blockId append-vs-edit rule front-loaded. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a rich input schema and an existing output schema, the description covers the key decisions: append vs edit, preservation of other blocks, and no launch. Return values need no explanation thanks to the output schema. Minor gap: it never warns that supplied questions replace the block's current contents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the questions sub-schema already documents types, options, scale labels, image shapes and the 10-question cap in detail. The description's blockId guidance duplicates the schema's own description text and says nothing about expectedRevision, so it adds little beyond structured data. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: add or replace a Survey block's questions. This is clearly distinct from siblings like add_test_block and update_test_block, and the scope ('Survey block's questions') is precise enough for an agent to select it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the two modes: omit blockId to append, supply an existing Survey ID to edit. It also rules out the launch step with 'No launch.' It does not, however, compare against adjacent tools such as preview_test_launch or update_test_block, so the when-not guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_test_audienceSet Test AudienceADestructiveIdempotentInspect
Replace shared audience selections and participant counts; null clears. Use existing audience/tester IDs. Preserves blocks. No launch.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| audience | Yes | ||
| construction | No | Optional decisions; proposed wording stays separate. Acceptance needs current proposalRevision and matching saved wording. Never launch approval. | |
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so safety is partly covered. The description still adds real value beyond them: "null clears" discloses a specific destructive behavior, "Preserves blocks" states what is not destroyed, and "No launch" scopes the side effects. It stops short of permissions or revision-conflict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short front-loaded clauses with no filler; the primary action leads. The telegraphic style is efficient, though for a destructive operation a slightly more explicit sentence would aid comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. The description covers the destructive null-clears behavior, block preservation, and the no-launch boundary, which is sufficient for an agent to call it correctly against documented annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description must compensate. It usefully documents the null-clears semantics of audience and the must-be-existing constraint on audience/tester IDs, but adds nothing about construction or expectedRevision. Marginal value over the schema, so the baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Replace) and resource (shared audience selections and participant counts), which cleanly separates it from siblings like create_audience (creation) and set_survey (different field). It does not explicitly name an alternative tool, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use existing audience/tester IDs" gives an input precondition, and "No launch" implies the boundary against launch_test, but the description never states when to choose this tool versus alternatives such as create_audience or edit_draft_advanced. Usage is implied 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.
set_test_constructionSet Test ConstructionBDestructiveIdempotentInspect
Record pending wording or user-supplied/delegated decisions. Set surveyChoice=no_questions when requested. Accept proposals with matching wording in update_test_block. Not launch approval; never include secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| construction | Yes | ||
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=false, so the mutation profile is covered structurally. The description adds useful operational context ('never include secrets,' 'Not launch approval,' decisions are client-reported), but it never explains what a destructive write replaces or how revision conflicts are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler; the primary action leads and constraints follow. The telegraphic style occasionally costs clarity, but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations cover the safety profile. Still, for a destructive, revision-sensitive state write with low schema description coverage, the description omits conflict/replacement semantics that an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it partially does: 'pending wording,' 'user-supplied/delegated,' and 'proposals' map onto the proposed/supplied/delegated/proposed status values, and it names surveyChoice=no_questions. It says nothing about blockId, proposalRevision, or the ignored expectedRevision, leaving meaningful gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description describes an action ('record pending wording or user-supplied/delegated decisions') but never names the resource as test construction state, leaving the agent to infer it from the title and the `construction` array. It does hint at scope via 'Not launch approval,' but does not cleanly separate itself from siblings like set_survey or update_test_block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete conditional ('Set surveyChoice=no_questions when requested') and one exclusion ('Not launch approval'), plus a pointer to update_test_block for matching proposals. However, it never states when to call this instead of set_survey, set_test_audience, or update_test_block, so routing remains partly inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskUpdate TaskADestructiveIdempotentInspect
Edit task/scenario/stopCondition wording by blockId. Only supplied fields change; all other settings are preserved. Empty strings clear wording. Use update_test_block for experience or credential changes. No launch. The concrete action the tester performs in the product. When drafting or suggesting wording, write one short sentence, usually 10–25 words: [action verb] + [single concrete target] + [essential method or constraint]. Describe one coherent goal; naturally paired actions are fine, but split independent goals into separate tasks. If multiple items could match, identify one by name or position; avoid "any item". Name the in-app mechanism when needed. Keep motivation and backstory in scenario, observable completion criteria in stopCondition, and judgments or research objectives in follow-up survey questions. Omit step-by-step navigation and unnecessary detail. Example: "Book a table for 2 at Bar Mut for tonight at 8:00 PM." Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices. When drafting or suggesting scenario wording, write 1–3 short sentences in second person, present tense ("You are…", "You have…"). Describe a believable situation and a concrete triggering moment explaining why the tester needs to act now. Keep the action in the task; do not repeat it here. Example: "It is Friday evening, you are exhausted from work, and you do not want to cook tonight." Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices. When drafting or suggesting stopCondition wording, write one short sentence starting with "Stop when". Name one observable on-screen state detectable from a screenshot or DOM that marks the task’s natural completion. Avoid alternative endings, user feelings and off-screen events such as receiving an email; do not stop mid-flow. Example: "Stop when the order confirmation page displays the order number and total amount." Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | Draft one short sentence, usually 10–25 words: action + one target + essential constraints. Preserve accepted wording. | |
| testId | Yes | ||
| blockId | Yes | ||
| scenario | No | Draft 1–3 short sentences in second person, present tense: situation + reason to act now. Do not repeat the task. | |
| stopCondition | No | Draft one short "Stop when" sentence naming an observable on-screen state at task completion. No alternatives or off-screen events. | |
| expectedRevision | No | Legacy compatibility only; ignored. Draft revisions are resolved automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description adds meaningful semantics: 'Only supplied fields change; all other settings are preserved' and 'Empty strings clear wording', which explains the destructive behavior hinted at by destructiveHint. This is genuine value the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded correctly but then balloons into hundreds of words of drafting guidance, with the sentence 'Preserve supplied or accepted wording unless the user requests a rewrite or delegates wording choices' repeated verbatim three times. The behavioral core (partial update, clearing, sibling routing) could be stated in a few sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 partial-update/clearing behavior is covered. However, the bulk of the text is authoring guidance rather than tool-operational context, and nothing addresses the required testId or the ignored expectedRevision parameter, leaving signal diluted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description's drafting rules for task/scenario/stopCondition largely restate what the schema already documents. The one addition beyond the schema is 'Empty strings clear wording', which is not stated in the parameter definitions. Baseline 3 is appropriate given the schema carries most of the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 — editing task/scenario/stopCondition wording by blockId — and explicitly separates the tool from update_test_block, which handles experience/credential changes. The purpose is clear despite the long tail of drafting guidance that follows, which is about content authoring rather than 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete boundary: 'Use update_test_block for experience or credential changes. No launch.' This routes the agent away from the wrong sibling and clarifies the tool does not trigger execution. It does not, however, address when not to edit wording at all (e.g., after a test is running).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_test_blockUpdate Test BlockADestructiveIdempotentInspect
Advanced: replace one complete block, preserving its ID, type and all unchanged settings. Prefer update_task for task wording. Read get_test_definition first. Other blocks are preserved. No launch.
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | AI draft example: {"id":"task-1","type":"ai-user-test","configuration":{"task":"","scenario":"","experience":null,"credentials":null}}. Prefer add_task/update_task for website tasks. | |
| testId | Yes | ||
| construction | No | Optional decisions; proposed wording stays separate. Acceptance needs current proposalRevision and matching saved wording. Never launch approval. | |
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: the replacement preserves ID, type and unchanged settings, sibling blocks are untouched, and no launch occurs. It does not mention revision/conflict behavior, so a 5 is unwarranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place, with the core action and the alternative front-loaded. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with an output schema and covering annotations, the description supplies the prerequisite, the alternative, the replacement scope, and the no-launch guarantee. The only gap is revision-conflict handling, which the schema notes are auto-resolved, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the baseline is 3, but 'replace one complete block' clarifies that the block parameter is a full replacement rather than a partial patch — a non-obvious semantic the schema's structure alone does not state. The construction and expectedRevision parameters get no additional description, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('replace one complete block') and immediately scopes it ('preserving its ID, type and all unchanged settings'). It explicitly differentiates itself from the sibling update_task, so an agent can route correctly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ('Read get_test_definition first'), an explicit alternative for the common case ('Prefer update_task for task wording'), and scope boundaries ('Other blocks are preserved. No launch.'). It stops short of naming when-not-to-use cases such as survey blocks (set_survey), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_test_definitionUpdate Test DefinitionADestructiveIdempotentInspect
Advanced: replace the COMPLETE definition. Preserve unchanged blocks, IDs, audience and browserContinuation.fromBlockId. Prefer targeted edits. No launch.
| Name | Required | Description | Default |
|---|---|---|---|
| testId | Yes | ||
| definition | Yes | ||
| construction | No | Optional decisions; proposed wording stays separate. Acceptance needs current proposalRevision and matching saved wording. Never launch approval. | |
| expectedRevision | No | Legacy compatibility only; ignored. The server resolves the current draft revision automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Open the draft in Uxia. |
| testId | No | |
| blockId | No | Server-assigned ID of the added block. Use it for subsequent edits and references. |
| editable | No | |
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the destructive profile is covered structurally. The description adds real value beyond them by specifying what must be carried over (unchanged blocks, IDs, audience, browserContinuation.fromBlockId) and by clarifying scope with 'No launch.' It doesn't address auth or whether the definition can be recovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded fragments with no filler; the replacement scope and preservation rule come first. The telegraphic fragments ('No launch.') are dense but slightly cryptic, which keeps it just below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a highly nested mutation tool with an output schema and rich annotations, the description covers the essentials: it is a full replace, it is advanced/prefer smaller edits, it does not launch, and it lists what must be preserved. The main omission is that it never flags the optional construction decision-tracking parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is roughly 50%, and the description touches the definition payload only indirectly, via 'audience' and 'browserContinuation.fromBlockId'. It says nothing about testId format, the optional construction array, or that expectedRevision is ignored, so it adds modest value over the schema rather than compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('replace the COMPLETE definition') and flags its advanced, whole-object nature, which distinguishes it from granular siblings like update_test_block or update_task. It does not, however, name those siblings, so an agent must infer the boundary from the phrase 'Prefer targeted edits.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Advanced' plus 'Prefer targeted edits' gives a clear when-to-use/when-not signal: reach for this only when a wholesale replacement is needed. It stops short of the 5-level bar because the targeted-edit alternatives (update_task, update_test_block, set_test_audience, set_test_construction) are never named.
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 tool update
- Changed
create_audience3 fields changed- changed
Input schema / properties / ageRange / descriptionPrevious value: -"Two-element [min, max] age range (integers, 0-120)."New value: +"Two-element [min, max] age range (integers, 16-100)." - changed
Input schema / properties / ageRange / items / maximumPrevious value: -120New value: +100 - changed
Input schema / properties / ageRange / items / minimumPrevious value: -0New value: +16
42 tool updates
- Added
add_test_block - Changed
create_block_test1 field changed- added
Input schema / properties / definitionAdded value: +{ + "additionalProperties": false, + "properties": { + "audience": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "selections": { + "items": { + "additionalProperties": false, + "properties": { + "audienceId": { + "pattern": "^[a-fA-F0-9]{24}$", + "type": "string" + }, + "requestedCount": { + "exclusiveMinimum": 0, + "type": "integer" + }, + "selectedTesterIds": { + "items": { + "pattern": "^[a-fA-F0-9]{24}$", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "audienceId", + "requestedCount" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "selections" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "blocks": { + "description": "Blocks in execution order, with stable unique IDs. Preserve existing blocks when replacing a draft definition.", + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "configuration": { + "additionalProperties": false, + "properties": { + "benchmarks": { + "items": { + "enum": [ + "sus", + "suprq" + ], + "type": "string" + }, + "type": "array" + }, + "browserContinuation": { + "additionalProperties": false, + "description": "Set when this AI task should continue where an earlier live-website AI block stopped. Keep full experience configuration and a separate task/stopCondition. Configure before launch.", + "properties": { + "fromBlockId": { + "description": "ID of the nearest preceding live-website AI block for the same website URL. Resume each participant’s browser session from that block’s final page. The source must be in this definition, before this block; not a testId or runId.", + "type": "string" + } + }, + "required": [ + "fromBlockId" + ], + "type": "object" + }, + "credentials": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "configured": { + "type": "boolean" + }, + "customFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "filesEnabled": { + "type": "boolean" + }, + "mode": { + "enum": [ + "dedicated", + "shared" + ], + "type": "string" + }, + "predefinedCredentialsEnabled": { + "type": "boolean" + } + }, + "required": [ + "enabled", + "filesEnabled", + "predefinedCredentialsEnabled", + "mode", + "customFields", + "configured" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Credential settings contain configuration status only. Enter or change login details in the authenticated Uxia editor using the returned test link. Never request or send passwords, API keys or authentication codes through MCP tools or forms. Preserve existing credential settings on edits; use null when login is not needed." + }, + "experience": { + "anyOf": [ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "advancedFiles": { + "items": { + "additionalProperties": false, + "properties": { + "fileKey": { + "minLength": 1, + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileSize": { + "minimum": 0, + "type": "number" + }, + "fileType": { + "type": "string" + }, + "height": { + "exclusiveMinimum": 0, + "type": "number" + }, + "uploadedAt": { + "type": "string" + }, + "width": { + "exclusiveMinimum": 0, + "type": "number" + } + }, + "required": [ + "fileKey", + "fileName", + "fileType", + "fileSize", + "uploadedAt" + ], + "type": "object" + }, + "type": "array" + }, + "antiBot": { + "type": "boolean" + }, + "browserHeadless": { + "type": "boolean" + }, + "isPrototype": { + "type": "boolean" + }, + "kind": { + "const": "live-website", + "type": "string" + }, + "previewFileKey": { + "type": "string" + }, + "provider": { + "anyOf": [ + { + "enum": [ + "figma_make", + "figma_proto", + "lovable", + "base44", + "google_stitch" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stopCondition": { + "description": "Draft one short \"Stop when\" sentence naming an observable on-screen state at task completion. No alternatives or off-screen events.", + "maxLength": 500, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "verified": { + "type": "boolean" + }, + "viewport": { + "additionalProperties": false, + "properties": { + "height": { + "exclusiveMinimum": 0, + "type": "number" + }, + "width": { + "exclusiveMinimum": 0, + "type": "number" + } + }, + "required": [ + "width", + "height" + ], + "type": "object" + } + }, + "required": [ + "kind", + "url", + "stopCondition", + "isPrototype", + "verified", + "antiBot", + "advancedFiles" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "figmaSource": { + "additionalProperties": false, + "properties": { + "fileKey": { + "type": [ + "string", + "null" + ] + }, + "selectedFlowIndex": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "fileKey", + "selectedFlowIndex" + ], + "type": "object" + }, + "files": { + "items": { + "additionalProperties": false, + "properties": { + "fileKey": { + "minLength": 1, + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileSize": { + "minimum": 0, + "type": "number" + }, + "fileType": { + "type": "string" + }, + "height": { + "exclusiveMinimum": 0, + "type": "number" + }, + "uploadedAt": { + "type": "string" + }, + "width": { + "exclusiveMinimum": 0, + "type": "number" + } + }, + "required": [ + "fileKey", + "fileName", + "fileType", + "fileSize", + "uploadedAt" + ], + "type": "object" + }, + "type": "array" + }, + "interactionFlow": { + "additionalProperties": false, + "properties": { + "endNodeId": { + "type": "string" + }, + "nodes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "additionalProperties": false, + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + }, + "parentId": { + "type": "string" + }, + "reactions": { + "items": { + "additionalProperties": false, + "properties": { + "actions": { + "items": { + "additionalProperties": false, + "properties": { + "destinationHandle": { + "enum": [ + "top", + "bottom", + "left", + "right" + ], + "type": "string" + }, + "destinationId": { + "type": "string" + }, + "sourceHandle": { + "enum": [ + "top", + "bottom", + "left", + "right" + ], + "type": "string" + }, + "type": { + "const": "NAVIGATE", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + }, + "type": "array" + }, + "trigger": { + "additionalProperties": false, + "properties": { + "direction": { + "enum": [ + "VERTICAL", + "HORIZONTAL", + "UP", + "DOWN", + "LEFT", + "RIGHT", + "ANY" + ], + "type": "string" + }, + "durationMs": { + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "SCROLL_TO", + "WAIT", + "DRAG_TO", + "ON_CLICK", + "INPUT", + "HOVER" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + }, + "required": [ + "trigger", + "actions" + ], + "type": "object" + }, + "type": "array" + }, + "rect": { + "additionalProperties": false, + "properties": { + "h": { + "type": "number" + }, + "w": { + "type": "number" + }, + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + }, + "required": [ + "x", + "y", + "w", + "h" + ], + "type": "object" + }, + "type": { + "enum": [ + "SCREEN", + "HOTSPOT" + ], + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "startNodeId": { + "type": "string" + } + }, + "required": [ + "startNodeId", + "nodes" + ], + "type": "object" + }, + "kind": { + "const": "prototype", + "type": "string" + }, + "presentation": { + "enum": [ + "slideshow", + "interactive" + ], + "type": "string" + }, + "provider": { + "anyOf": [ + { + "enum": [ + "figma_make", + "figma_proto", + "lovable", + "base44", + "google_stitch" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "kind", + "presentation", + "files" + ], + "type": "object" + } + ] + }, + { + "type": "null" + } + ], + "description": "Structured experience object, never prose. For a live website, put the plain URL in experience.url and include kind, stopCondition, isPrototype, verified, antiBot and advancedFiles. Use null for an unconfigured draft." + }, + "includeBenchmarks": { + "type": "boolean" + }, + "scenario": { + "description": "Draft 1–3 short sentences in second person, present tense: situation + reason to act now. Do not repeat the task.", + "maxLength": 500, + "type": "string" + }, + "task": { + "description": "Draft one short sentence, usually 10–25 words: action + one target + essential constraints. Preserve accepted wording.", + "maxLength": 500, + "type": "string" + } + }, + "required": [ + "scenario", + "experience", + "credentials", + "task" + ], + "type": "object" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "ai-user-test", + "type": "string" + } + }, + "required": [ + "id", + "type", + "configuration" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "questions": { + "description": "Follow-up survey questions capture judgments, comparisons, friction and what the researcher wants to learn. Use explicit question objects with unique id, type, question and required fields. open_ended needs question text; multiple_choice, ranking and budget_allocation need at least two non-empty options. allowMultiple applies to multiple_choice. rating needs scaleMin < scaleMax; rating and ranking require scaleLabels.min and scaleLabels.max naming the endpoints. budget_allocation asks testers to split 100 points across options. yes_no asks for a yes/no answer. At most 10 questions per Survey; launch preview reports plan and test-wide limits.", + "items": { + "additionalProperties": false, + "properties": { + "additionalContext": { + "type": "string" + }, + "allowMultiple": { + "type": "boolean" + }, + "generatedLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "onlyShowAfterFlowCompletion": { + "type": "boolean" + }, + "optionImages": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "fileKey": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileSize": { + "minimum": 0, + "type": "number" + }, + "fileType": { + "type": "string" + } + }, + "required": [ + "fileKey", + "fileName", + "fileType", + "fileSize" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": "array" + }, + "options": { + "items": { + "type": "string" + }, + "type": "array" + }, + "question": { + "type": "string" + }, + "questionImages": { + "items": { + "additionalProperties": false, + "properties": { + "fileKey": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileSize": { + "minimum": 0, + "type": "number" + }, + "fileType": { + "type": "string" + } + }, + "required": [ + "fileKey", + "fileName", + "fileType", + "fileSize" + ], + "type": "object" + }, + "type": "array" + }, + "required": { + "type": "boolean" + }, + "scaleLabels": { + "additionalProperties": false, + "properties": { + "max": { + "type": "string" + }, + "min": { + "type": "string" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "scaleMax": { + "type": "number" + }, + "scaleMin": { + "type": "number" + }, + "type": { + "enum": [ + "open_ended", + "multiple_choice", + "rating", + "ranking", + "budget_allocation", + "yes_no" + ], + "type": "string" + } + }, + "required": [ + "id", + "type", + "question", + "required" + ], + "type": "object" + }, + "maxItems": 10, + "type": "array" + }, + "type": { + "const": "survey", + "type": "string" + } + }, + "required": [ + "id", + "type", + "questions" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "configuration": { + "additionalProperties": false, + "properties": { + "conformanceLevel": { + "enum": [ + "AA", + "AAA" + ], + "type": "string" + }, + "files": { + "items": { + "additionalProperties": false, + "properties": { + "fileKey": { + "minLength": 1, + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileSize": { + "minimum": 0, + "type": "number" + }, + "fileType": { + "type": "string" + }, + "height": { + "exclusiveMinimum": 0, + "type": "number" + }, + "uploadedAt": { + "type": "string" + }, + "width": { + "exclusiveMinimum": 0, + "type": "number" + } + }, + "required": [ + "fileKey", + "fileName", + "fileType", + "fileSize", + "uploadedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "conformanceLevel", + "files" + ], + "type": "object" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "accessibility-test", + "type": "string" + } + }, + "required": [ + "id", + "type", + "configuration" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Card sorting shows participants a set of cards (content items, features or menu entries) and asks them to group the cards into categories, revealing how they expect information to be organized. Use a closed sort to test an existing structure: participants place every card into your predefined categories (at least 2). Use an open sort to discover participants' own mental model: they create and name their own categories; predefined categories are optional starting points. Card and category labels should be short and self-explanatory; avoid labels that repeat category names. Leave instructions empty to show default instructions in each participant's language. Costs 10 credits per participant and is unavailable on the Free plan.", + "properties": { + "configuration": { + "additionalProperties": false, + "properties": { + "cards": { + "description": "Cards to sort, 1 to 25.", + "items": { + "additionalProperties": false, + "properties": { + "description": { + "description": "Optional detail shown on the card when showDescriptions is true, up to 200 characters.", + "type": "string" + }, + "id": { + "description": "Stable unique ID, e.g. \"card-1\" or \"category-1\".", + "pattern": "^[A-Za-z0-9_-]{1,64}$", + "type": "string" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "fileKey": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileSize": { + "minimum": 0, + "type": "number" + }, + "fileType": { + "type": "string" + } + }, + "required": [ + "fileKey", + "fileName", + "fileType", + "fileSize" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Existing authorized workspace image; omit unless the user supplied one." + }, + "label": { + "description": "Short, self-explanatory card name, up to 50 characters.", + "type": "string" + } + }, + "required": [ + "id", + "label" + ], + "type": "object" + }, + "maxItems": 25, + "type": "array" + }, + "categories": { + "description": "Predefined categories, at most 10. Closed sorts need at least 2; open sorts may use [].", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "Stable unique ID, e.g. \"card-1\" or \"category-1\".", + "pattern": "^[A-Za-z0-9_-]{1,64}$", + "type": "string" + }, + "label": { + "description": "Short category name, up to 50 characters.", + "type": "string" + } + }, + "required": [ + "id", + "label" + ], + "type": "object" + }, + "maxItems": 10, + "type": "array" + }, + "hideCardNames": { + "description": "Hide the label of cards that have an image, so participants sort by image alone.", + "type": "boolean" + }, + "instructions": { + "description": "Participant instructions. Use \"\" for the default, localized instructions.", + "type": "string" + }, + "showDescriptions": { + "type": "boolean" + }, + "showImages": { + "type": "boolean" + }, + "sortType": { + "description": "closed: participants use only the predefined categories. open: participants create their own categories.", + "enum": [ + "closed", + "open" + ], + "type": "string" + } + }, + "required": [ + "instructions", + "sortType", + "categories", + "cards" + ], + "type": "object" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "card-sorting", + "type": "string" + } + }, + "required": [ + "id", + "type", + "configuration" + ], + "type": "object" + } + ], + "description": "AI draft example: {\"id\":\"task-1\",\"type\":\"ai-user-test\",\"configuration\":{\"task\":\"\",\"scenario\":\"\",\"experience\":null,\"credentials\":null}}. Prefer add_task/update_task for website tasks." + }, + "type": "array" + }, + "schemaVersion": { + "const": 2, + "type": "number" + } + }, + "required": [ + "schemaVersion", + "audience", + "blocks" + ], + "type": "object" +}
- Removed
edit_draft_advanced - Removed
find_operations - Added
get_audience - Added
get_card_sorting_results - Added
get_credits - Added
get_frame_details - Added
get_human_navigation_summary - Added
get_human_session - Added
get_market_research_summary - Added
get_navigation_summary - Added
get_optimization_score - Added
get_question_responses - Added
get_satisfaction_score - Added
get_screen_details - Added
get_strengths - Added
get_success_criterion - Added
get_test_question_responses - Added
get_test_report - Added
get_test_setup - Added
get_test_summary - Added
get_tester - Added
get_transcript - Added
list_accessibility_tests - Added
list_dropoff_points - Added
list_human_sessions - Added
list_loop_screens - Added
list_paths - Added
list_screen_metrics - Added
list_success_criteria - Added
list_test_questions - Added
list_transcripts - Removed
read_advanced - Added
remove_test_block - Added
reorder_test_blocks - Added
search_quotes - Added
set_block_continuation - Added
set_test_construction - Removed
show_evidence - Added
update_test_block - Added
update_test_definition
1 tool update
- Changed
get_insight2 fields changed- added
Output schema / properties / data / properties / reporterCountAdded value: +{ + "type": "integer" +} - added
Output schema / properties / reporterCountAdded value: +{ + "type": "integer" +}
1 tool update
- Changed
find_operations1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Find operations by topic: surveys, prototypes, benchmarks, transcripts, navigation, accessibility or construction."New value: +"Find operations by topic: surveys, prototypes, benchmarks, card sorting, transcripts, navigation, accessibility or construction."
4 tool updates
- Changed
add_task2 fields changed- added
Input schema / properties / expectedRevision / descriptionAdded value: +"Legacy compatibility only; ignored. Draft revisions are resolved automatically." - changed
Input schema / requiredPrevious value: -[ - "testId", - "expectedRevision" -]New value: +[ + "testId" +]
- Changed
set_survey2 fields changed- added
Input schema / properties / expectedRevision / descriptionAdded value: +"Legacy compatibility only; ignored. Draft revisions are resolved automatically." - changed
Input schema / requiredPrevious value: -[ - "testId", - "expectedRevision", - "questions" -]New value: +[ + "testId", + "questions" +]
- Changed
set_test_audience4 fields changed- changed
Input schema / properties / expectedRevision / descriptionPrevious value: -"Current definition.revision. Reread on conflict; never retry blindly."New value: +"Legacy compatibility only; ignored. The server resolves the current draft revision automatically." - removed
Input schema / properties / expectedRevision / exclusiveMinimumRemoved value: -0 - added
Input schema / properties / expectedRevision / minimumAdded value: +0 - changed
Input schema / requiredPrevious value: -[ - "expectedRevision", - "audience", - "testId" -]New value: +[ + "audience", + "testId" +]
- Changed
update_task2 fields changed- added
Input schema / properties / expectedRevision / descriptionAdded value: +"Legacy compatibility only; ignored. Draft revisions are resolved automatically." - changed
Input schema / requiredPrevious value: -[ - "testId", - "expectedRevision", - "blockId" -]New value: +[ + "testId", + "blockId" +]
9 tool updates
- Changed
add_task6 fields changed- added
Input schema / properties / blockId / descriptionAdded value: +"Omit when creating a task; the server returns its blockId. Supplied IDs are supported for existing clients." - added
Input schema / properties / scenario / descriptionAdded value: +"Draft 1–3 short sentences in second person, present tense: situation + reason to act now. Do not repeat the task." - added
Input schema / properties / stopCondition / descriptionAdded value: +"Draft one short \"Stop when\" sentence naming an observable on-screen state at task completion. No alternatives or off-screen events." - added
Input schema / properties / task / descriptionAdded value: +"Draft one short sentence, usually 10–25 words: action + one target + essential constraints. Preserve accepted wording." - changed
Input schema / requiredPrevious value: -[ - "testId", - "expectedRevision", - "blockId" -]New value: +[ + "testId", + "expectedRevision" +] - added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
- Changed
create_block_test1 field changed- added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
- Changed
edit_draft_advanced1 field changed- added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
- Changed
get_test_definition1 field changed- added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
- Changed
prepare_test_block3 fields changed- added
Input schema / properties / scenario / descriptionAdded value: +"Draft 1–3 short sentences in second person, present tense: situation + reason to act now. Do not repeat the task." - added
Input schema / properties / stopCondition / descriptionAdded value: +"Draft one short \"Stop when\" sentence naming an observable on-screen state at task completion. No alternatives or off-screen events." - added
Input schema / properties / task / descriptionAdded value: +"Draft one short sentence, usually 10–25 words: action + one target + essential constraints. Preserve accepted wording."
- Changed
review_test1 field changed- added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
- Changed
set_survey4 fields changed- added
Input schema / properties / blockId / descriptionAdded value: +"Omit to append a new survey with a server-assigned ID. Supply an existing survey ID to edit." - added
Input schema / properties / questions / descriptionAdded value: +"Follow-up survey questions capture judgments, comparisons, friction and what the researcher wants to learn. Use explicit question objects with unique id, type, question and required fields. open_ended needs question text; multiple_choice, ranking and budget_allocation need at least two non-empty options. allowMultiple applies to multiple_choice. rating needs scaleMin < scaleMax; rating and ranking require scaleLabels.min and scaleLabels.max naming the endpoints. budget_allocation asks testers to split 100 points across options. yes_no asks for a yes/no answer. At most 10 questions per Survey; launch preview reports plan and test-wide limits." - changed
Input schema / requiredPrevious value: -[ - "testId", - "expectedRevision", - "blockId", - "questions" -]New value: +[ + "testId", + "expectedRevision", + "questions" +] - added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
- Changed
set_test_audience1 field changed- added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
- Changed
update_task4 fields changed- added
Input schema / properties / scenario / descriptionAdded value: +"Draft 1–3 short sentences in second person, present tense: situation + reason to act now. Do not repeat the task." - added
Input schema / properties / stopCondition / descriptionAdded value: +"Draft one short \"Stop when\" sentence naming an observable on-screen state at task completion. No alternatives or off-screen events." - added
Input schema / properties / task / descriptionAdded value: +"Draft one short sentence, usually 10–25 words: action + one target + essential constraints. Preserve accepted wording." - added
Output schema / properties / blockIdAdded value: +{ + "description": "Server-assigned ID of the added block. Use it for subsequent edits and references.", + "type": "string" +}
12 tool updates
- Changed
add_task6 fields changed- removed
Input schema / properties / scenario / $refRemoved value: -"#/properties/task" - added
Input schema / properties / scenario / maxLengthAdded value: +500 - added
Input schema / properties / scenario / typeAdded value: +"string" - removed
Input schema / properties / stopCondition / $refRemoved value: -"#/properties/task" - added
Input schema / properties / stopCondition / maxLengthAdded value: +500 - added
Input schema / properties / stopCondition / typeAdded value: +"string"
- Changed
create_audience6 fields changed- removed
Input schema / properties / personalIncome / properties / range / $refRemoved value: -"#/properties/householdIncome/properties/range" - added
Input schema / properties / personalIncome / properties / range / descriptionAdded value: +"Two-element [min, max] range in the given currency." - added
Input schema / properties / personalIncome / properties / range / itemsAdded value: +{ + "maximum": 500000, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / personalIncome / properties / range / maxItemsAdded value: +2 - added
Input schema / properties / personalIncome / properties / range / minItemsAdded value: +2 - added
Input schema / properties / personalIncome / properties / range / typeAdded value: +"array"
- Changed
find_operations6 fields changed- removed
Output schema / properties / annotations / $refRemoved value: -"#/properties/operations/items/properties/annotations" - added
Output schema / properties / annotations / additionalPropertiesAdded value: +{} - added
Output schema / properties / annotations / typeAdded value: +"object" - removed
Output schema / properties / inputSchema / $refRemoved value: -"#/properties/operations/items/properties/annotations" - added
Output schema / properties / inputSchema / additionalPropertiesAdded value: +{} - added
Output schema / properties / inputSchema / typeAdded value: +"object"
- Changed
get_insight43 fields changed- removed
Output schema / properties / data / properties / businessImpact / $refRemoved value: -"#/properties/businessImpact" - added
Output schema / properties / data / properties / businessImpact / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / category / $refRemoved value: -"#/properties/category" - added
Output schema / properties / data / properties / category / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / description / $refRemoved value: -"#/properties/description" - added
Output schema / properties / data / properties / description / typeAdded value: +"string" - removed
Output schema / properties / data / properties / fixSuggestion / $refRemoved value: -"#/properties/fixSuggestion" - added
Output schema / properties / data / properties / fixSuggestion / anyOfAdded value: +[ + { + "additionalProperties": true, + "properties": { + "acceptanceCriteria": { + "items": { + "type": "string" + }, + "type": "array" + }, + "explanation": { + "type": "string" + }, + "prompt": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "title", + "explanation", + "acceptanceCriteria", + "prompt" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / data / properties / frames / $refRemoved value: -"#/properties/frames" - added
Output schema / properties / data / properties / frames / itemsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / data / properties / frames / typeAdded value: +"array" - removed
Output schema / properties / data / properties / paywall / $refRemoved value: -"#/properties/paywall" - added
Output schema / properties / data / properties / paywall / additionalPropertiesAdded value: +true - added
Output schema / properties / data / properties / paywall / propertiesAdded value: +{ + "feature": { + "type": "string" + }, + "hiddenCount": { + "type": "integer" + } +} - added
Output schema / properties / data / properties / paywall / requiredAdded value: +[ + "hiddenCount", + "feature" +] - added
Output schema / properties / data / properties / paywall / typeAdded value: +"object" - removed
Output schema / properties / data / properties / primaryCategory / $refRemoved value: -"#/properties/primaryCategory" - added
Output schema / properties / data / properties / primaryCategory / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / priority / $refRemoved value: -"#/properties/priority" - added
Output schema / properties / data / properties / priority / typeAdded value: +"string" - removed
Output schema / properties / data / properties / ref / $refRemoved value: -"#/properties/ref" - added
Output schema / properties / data / properties / ref / typeAdded value: +"string" - removed
Output schema / properties / data / properties / relevance / $refRemoved value: -"#/properties/relevance" - added
Output schema / properties / data / properties / relevance / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / secondaryCategory / $refRemoved value: -"#/properties/secondaryCategory" - added
Output schema / properties / data / properties / secondaryCategory / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / severityCard / $refRemoved value: -"#/properties/severityCard" - added
Output schema / properties / data / properties / severityCard / enumAdded value: +[ + "High", + "Medium", + "Low" +] - added
Output schema / properties / data / properties / severityCard / typeAdded value: +"string" - removed
Output schema / properties / data / properties / technicalComplexity / $refRemoved value: -"#/properties/technicalComplexity" - added
Output schema / properties / data / properties / technicalComplexity / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / testerEvidence / $refRemoved value: -"#/properties/testerEvidence" - added
Output schema / properties / data / properties / testerEvidence / itemsAdded value: +{ + "additionalProperties": true, + "properties": { + "gender": { + "type": [ + "string", + "null" + ] + }, + "hasMisclickEvidence": { + "type": "boolean" + }, + "misclickContext": { + "type": [ + "string", + "null" + ] + }, + "quote": { + "type": "string" + }, + "testerName": { + "type": "string" + } + }, + "required": [ + "testerName", + "quote", + "hasMisclickEvidence", + "misclickContext", + "gender" + ], + "type": "object" +} - added
Output schema / properties / data / properties / testerEvidence / typeAdded value: +"array" - removed
Output schema / properties / data / properties / title / $refRemoved value: -"#/properties/title" - added
Output schema / properties / data / properties / title / typeAdded value: +"string" - removed
Output schema / properties / data / properties / totalTesters / $refRemoved value: -"#/properties/totalTesters" - added
Output schema / properties / data / properties / totalTesters / typeAdded value: +"integer" - removed
Output schema / properties / data / properties / userImpact / $refRemoved value: -"#/properties/userImpact" - added
Output schema / properties / data / properties / userImpact / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / retry / properties / arguments / $refRemoved value: -"#/properties/nextStep/properties/arguments" - added
Output schema / properties / retry / properties / arguments / additionalPropertiesAdded value: +{} - added
Output schema / properties / retry / properties / arguments / typeAdded value: +"object"
- Changed
get_test_progress3 fields changed- removed
Input schema / properties / runId / $refRemoved value: -"#/properties/testId" - added
Input schema / properties / runId / patternAdded value: +"^[a-fA-F0-9]{24}$" - added
Input schema / properties / runId / typeAdded value: +"string"
- Changed
list_insights15 fields changed- removed
Output schema / properties / data / properties / insights / $refRemoved value: -"#/properties/insights" - added
Output schema / properties / data / properties / insights / itemsAdded value: +{ + "additionalProperties": true, + "properties": { + "category": { + "type": [ + "string", + "null" + ] + }, + "evidenceCount": { + "type": "integer" + }, + "frames": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "ref": { + "type": "string" + }, + "reporterCount": { + "type": "integer" + }, + "severity": { + "enum": [ + "high", + "medium", + "low", + "prototype", + "unknown" + ], + "type": "string" + }, + "summary": { + "type": "string" + }, + "testerSeeds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "required": [ + "ref", + "title", + "severity", + "category", + "summary", + "reporterCount", + "evidenceCount", + "testerSeeds", + "frames" + ], + "type": "object" +} - added
Output schema / properties / data / properties / insights / typeAdded value: +"array" - removed
Output schema / properties / data / properties / paywall / $refRemoved value: -"#/properties/paywall" - added
Output schema / properties / data / properties / paywall / additionalPropertiesAdded value: +true - added
Output schema / properties / data / properties / paywall / propertiesAdded value: +{ + "feature": { + "type": "string" + }, + "hiddenCount": { + "type": "integer" + } +} - added
Output schema / properties / data / properties / paywall / requiredAdded value: +[ + "hiddenCount", + "feature" +] - added
Output schema / properties / data / properties / paywall / typeAdded value: +"object" - removed
Output schema / properties / data / properties / total / $refRemoved value: -"#/properties/total" - added
Output schema / properties / data / properties / total / typeAdded value: +"integer" - removed
Output schema / properties / data / properties / totalTesters / $refRemoved value: -"#/properties/totalTesters" - added
Output schema / properties / data / properties / totalTesters / typeAdded value: +"integer" - removed
Output schema / properties / retry / properties / arguments / $refRemoved value: -"#/properties/nextStep/properties/arguments" - added
Output schema / properties / retry / properties / arguments / additionalPropertiesAdded value: +{} - added
Output schema / properties / retry / properties / arguments / typeAdded value: +"object"
- Changed
list_test_blocks3 fields changed- removed
Input schema / properties / runId / $refRemoved value: -"#/properties/testId" - added
Input schema / properties / runId / patternAdded value: +"^[a-fA-F0-9]{24}$" - added
Input schema / properties / runId / typeAdded value: +"string"
- Changed
prepare_test_block8 fields changed- removed
Input schema / properties / scenario / $refRemoved value: -"#/properties/task" - added
Input schema / properties / scenario / maxLengthAdded value: +500 - added
Input schema / properties / scenario / minLengthAdded value: +1 - added
Input schema / properties / scenario / typeAdded value: +"string" - removed
Input schema / properties / stopCondition / $refRemoved value: -"#/properties/task" - added
Input schema / properties / stopCondition / maxLengthAdded value: +500 - added
Input schema / properties / stopCondition / minLengthAdded value: +1 - added
Input schema / properties / stopCondition / typeAdded value: +"string"
- Changed
preview_test_launch3 fields changed- removed
Output schema / properties / details / $refRemoved value: -"#/properties/audiences/items" - added
Output schema / properties / details / additionalPropertiesAdded value: +{} - added
Output schema / properties / details / typeAdded value: +"object"
- Changed
read_advanced6 fields changed- removed
Output schema / properties / nextStep / properties / arguments / $refRemoved value: -"#/properties/data" - added
Output schema / properties / nextStep / properties / arguments / additionalPropertiesAdded value: +{} - added
Output schema / properties / nextStep / properties / arguments / typeAdded value: +"object" - removed
Output schema / properties / retry / properties / arguments / $refRemoved value: -"#/properties/data" - added
Output schema / properties / retry / properties / arguments / additionalPropertiesAdded value: +{} - added
Output schema / properties / retry / properties / arguments / typeAdded value: +"object"
- Changed
set_test_audience4 fields changed- changed
Input schema / properties / audience / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "selections": { - "items": { - "additionalProperties": false, - "properties": { - "audienceId": { - "pattern": "^[a-fA-F0-9]{24}$", - "type": "string" - }, - "requestedCount": { - "exclusiveMinimum": 0, - "type": "integer" - }, - "selectedTesterIds": { - "items": { - "$ref": "#/properties/audience/anyOf/0/properties/selections/items/properties/audienceId" - }, - "type": "array" - } - }, - "required": [ - "audienceId", - "requestedCount" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "selections" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "selections": { + "items": { + "additionalProperties": false, + "properties": { + "audienceId": { + "pattern": "^[a-fA-F0-9]{24}$", + "type": "string" + }, + "requestedCount": { + "exclusiveMinimum": 0, + "type": "integer" + }, + "selectedTesterIds": { + "items": { + "pattern": "^[a-fA-F0-9]{24}$", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "audienceId", + "requestedCount" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "selections" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / testId / $refRemoved value: -"#/properties/audience/anyOf/0/properties/selections/items/properties/audienceId" - added
Input schema / properties / testId / patternAdded value: +"^[a-fA-F0-9]{24}$" - added
Input schema / properties / testId / typeAdded value: +"string"
- Changed
update_task6 fields changed- removed
Input schema / properties / scenario / $refRemoved value: -"#/properties/task" - added
Input schema / properties / scenario / maxLengthAdded value: +500 - added
Input schema / properties / scenario / typeAdded value: +"string" - removed
Input schema / properties / stopCondition / $refRemoved value: -"#/properties/task" - added
Input schema / properties / stopCondition / maxLengthAdded value: +500 - added
Input schema / properties / stopCondition / typeAdded value: +"string"
4 tool updates
- Changed
add_task2 fields changed- added
Input schema / properties / isPrototype / defaultAdded value: +false - added
Input schema / properties / isPrototype / descriptionAdded value: +"Defaults to false for a regular website. Set true for a prototype website."
- Changed
get_test_progress3 fields changed- added
Output schema / properties / runId / descriptionAdded value: +"Internal execution identifier for follow-up tool calls; never substitute it for the user-facing url." - added
Output schema / properties / testId / descriptionAdded value: +"Internal identifier for follow-up tool calls; do not display unless explicitly requested." - added
Output schema / properties / url / descriptionAdded value: +"User-facing test URL. Include this as a clickable Markdown link labelled View test progress in launch and progress summaries."
- Changed
launch_test3 fields changed- added
Output schema / properties / runId / descriptionAdded value: +"Internal execution identifier for follow-up tool calls; never substitute it for the user-facing url." - added
Output schema / properties / testId / descriptionAdded value: +"Internal identifier for follow-up tool calls; do not display unless explicitly requested." - added
Output schema / properties / url / descriptionAdded value: +"User-facing test URL. Include this as a clickable Markdown link labelled View test progress in launch and progress summaries."
- Changed
list_test_blocks3 fields changed- added
Output schema / properties / runId / descriptionAdded value: +"Internal execution identifier for follow-up tool calls; never substitute it for the user-facing url." - added
Output schema / properties / testId / descriptionAdded value: +"Internal identifier for follow-up tool calls; do not display unless explicitly requested." - added
Output schema / properties / url / descriptionAdded value: +"User-facing test URL. Include this as a clickable Markdown link labelled View test progress in launch and progress summaries."
22 tool updates
- First observed
add_task - First observed
create_audience - First observed
create_block_test - First observed
edit_draft_advanced - First observed
find_operations - First observed
get_insight - First observed
get_test - First observed
get_test_definition - First observed
get_test_progress - First observed
launch_test - First observed
list_audiences - First observed
list_insights - First observed
list_test_blocks - First observed
list_tests - First observed
prepare_test_block - First observed
preview_test_launch - First observed
read_advanced - First observed
review_test - First observed
set_survey - First observed
set_test_audience - First observed
show_evidence - First observed
update_task
Publisher details
- Operator
- Uxia · Publisher source
- Operator website
- https://uxia.app · Publisher source
- Vendor relationship
- Not applicable
- Documentation
- https://platform.uxia.app/docs · Publisher source
- Trust center
- Not applicable
- Restrictions
- Paid plan required
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npmMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.