Skip to main content
Glama

Server Details

Browse, inspect and render Jetpack Compose Material 3 and Wear component catalogs.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
yschimke/compose-preview-server
GitHub Stars
1

TDQS

B3.2/5.0

Scored across 70 tools

Disambiguation3/5

Many tools are distinct, but several families overlap: catalog_list_previews vs list-all-documentation, catalog_render_preview vs preview-stories, and ui_builder_validate vs ui_builder_check_design all cover adjacent ground. The verbose descriptions do clarify intended boundaries, so an agent can usually pick correctly, but only after careful reading.

Naming Consistency3/5

Two large families (catalog_* and ui_builder_*) use a consistent verb_noun snake_case pattern, but the set also contains kebab-case Storybook aliases (get-documentation-for-story, preview-stories), bare names (status, request_access, poll_access), and mixed verb styles. The core is readable and predictable, yet the surface as a whole is not uniformly patterned.

Tool Count1/5

At 70 tools, this is an extreme over-supply for a single MCP server, far beyond the 25+ threshold that signals bloat. The server merges preview-catalog inspection, design authoring, Storybook compatibility, and access negotiation into one enormous surface, forcing agents to navigate a large toolspace for what are often related operations.

Completeness5/5

The surface is remarkably thorough: designs support create, read, update, delete/restore, branching, forking, merging, revision history, export, rendering, comments, decisions, guidelines, links, assets, and access control. Only tiny edges (e.g., no explicit comment-deletion tool) are missing, and the server clearly covers its stated domain end-to-end.

Available Tools

70 tools
catalog_diff_semanticsAInspect

Compare two previews' semantics by testTag: which tags are only in one side, which moved, and which changed occupancy count. Identity is the authored testTag, not a positional ref, so a tag that stops resolving is reported rather than silently retargeted at different pixels. Requires live grant scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo
otherYes
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNo
overridesNo
previewIdNo
otherOverridesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It adds useful context that identity is the authored testTag, that unresolved tags are reported rather than silently retargeted, and that live grant scope is required. It stops short of explicitly confirming the operation is read-only or non-destructive.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the comparison purpose, then the non-obvious identity behavior, then the prerequisite. No filler or repetition.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the invocation itself is under-specified. With 7 parameters and 14% schema coverage, the description should clarify how to identify the two previews and what overrides mean, which it does not.

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

Parameters1/5

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

Schema description coverage is only 14% across 7 parameters, and the description names no parameters. It does not explain the uri vs catalog+previewId alternatives, the nested other object, or the overrides/otherOverrides inputs, leaving most parameter semantics undocumented.

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

Purpose5/5

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

States a specific verb and resource — comparing two previews' semantics by testTag — and enumerates the result categories (only-in-one, moved, occupancy changed). The emphasis on authored testTag over positional refs distinguishes it from a generic positional diff.

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

Usage Guidelines3/5

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

The description implies the appropriate context: semantic diff by stable testTag identity, with a stated prerequisite of live grant scope. However, it does not name an alternative tool or say when not to use it versus siblings such as catalog_history_diff.

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

catalog_get_preview_dataBInspect

Fetch the merged accessibility or annotation product for a preview. This lane requires live grant scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo
kindYes
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNo
overridesNo
previewIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the live-grant-scope requirement, but says nothing about read-vs-write semantics (implied read by 'Fetch'), override behavior, or token/header interaction beyond what the schema's token property already documents.

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

Conciseness4/5

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

Two tight sentences with the action front-loaded and the precondition appended, no filler. It earns its small size, though the second sentence is terse enough to be cryptic.

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

Completeness2/5

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

An output schema exists, so return values need not be described. But for a 6-parameter tool with an anyOf identification structure and near-zero schema coverage, the description omits the valid 'kind' values and the meaning of the uri vs catalog/previewId paths, leaving gaps an agent cannot fill.

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

Parameters2/5

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

Schema coverage is only 17% (just token), yet the description explains no parameters: the required 'kind' has no described values, and the two alternative identification paths (uri vs catalog+previewId) and 'overrides' go unmentioned. With low coverage the description should compensate, and it does not.

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

Purpose4/5

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

States a specific verb (Fetch) and resource (the merged accessibility or annotation product) scoped to a preview, so an agent can broadly tell what it does. However, it does not distinguish itself from close siblings like catalog_render_preview or catalog_list_previews, leaving some ambiguity about which preview-oriented lane applies.

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

Usage Guidelines3/5

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

'This lane requires live grant scope' gives one real precondition for use, which is a genuine usage constraint. But it names no alternative tool and no when-not-to-use condition, so the agent must infer when this beats catalog_render_preview or poll_access.

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

catalog_history_diffAInspect

Compare two of a preview's recorded renders. Defaults to the two newest — did the last publish move this preview? A metadata comparison: the timeline's versions are already collapsed distinct renders, so whether the bytes changed is answered without fetching either image. Reports unstable so a difference on a nondeterministic preview is not mistaken for a real change.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
uriNo
fromNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNo
previewIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description does real work: it discloses that the comparison is metadata-only and needs no image fetch, that it defaults to the two newest renders, and that `unstable` is reported for nondeterministic previews. It omits auth/permission implications and any pagination or identifier-resolution behavior.

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

Conciseness4/5

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

Front-loads the core action in the first sentence and packs defaults, mechanism, and the `unstable` caveat into three tight sentences. The embedded aside about timelines being collapsed distinct renders is slightly elliptical but still earns its place.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the description covers the comparison mechanics and the `unstable` signal. However, with zero annotations and a non-obvious anyOf parameter identity scheme, the definition leaves an agent without guidance on which identity form to supply or what access it needs.

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

Parameters2/5

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

Schema coverage is only 17% and five of six parameters are undocumented there. The description only implicitly explains `from`/`to` via the default-to-newest behavior; the dual identity options (uri vs catalog+previewId) and the anyOf requirement are not addressed at all.

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

Purpose4/5

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

States a specific verb and resource: comparing two recorded renders of a preview, and clarifies it is a metadata comparison rather than an image fetch. This distinguishes it in spirit from catalog_diff_semantics and catalog_history_read, though it never names those siblings explicitly.

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

Usage Guidelines4/5

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

Gives a concrete motivating scenario ("did the last publish move this preview?") and states the default behavior of comparing the two newest renders. It lacks explicit when-not-to-use guidance or a named alternative such as catalog_diff_semantics for semantic comparison.

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

catalog_history_listBInspect

The render timeline for one preview: which versions of its rendered bytes exist, when each appeared, and whether the preview is unstable (re-renders differently on every publish) rather than genuinely changing. Where this server holds the timeline it is returned inline; where the catalog is published from a delivery branch the manifest lives on that branch and this reports where to fetch it.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNo
previewIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does add meaningful context: it explains that the timeline may be returned inline or, for delivery-branch catalogs, points to where the manifest must be fetched. It does not disclose authentication needs or other operational constraints, but the conditional return behavior is well described.

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

Conciseness5/5

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

The description is two tight sentences, front-loads the core purpose, and uses the second sentence to cover conditional behavior. Every clause contributes useful information without repetition.

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

Completeness3/5

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

An output schema exists, so return values need not be fully explained. However, because annotations are absent and input schema descriptions are sparse, the description should do more to explain how to target a preview and when this tool is the right choice among related history tools.

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

Parameters2/5

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

Schema coverage is only 25%, so the description must compensate for undocumented parameters. It does not explain uri, catalog, previewId, or the token parameter, and only loosely implies a 'one preview' scope without clarifying how that preview is identified.

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

Purpose4/5

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

The description states a specific resource and scope: the render timeline for one preview, including versions, timestamps, and instability. It is clear enough to identify the tool, but it does not explicitly differentiate itself from siblings such as catalog_history_read or catalog_history_diff.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no conditions for choosing this tool over catalog_history_read, catalog_history_diff, or catalog_get_preview_data, and no stated prerequisites. Usage is only implied by the purpose itself.

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

catalog_history_readBInspect

Fetch one historical render's pixels through this server, by commit or blob (a prefix is enough). Use when an agent cannot reach the delivery branch itself, or wants the bytes rather than the timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo
blobNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
commitNo
catalogNo
previewIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read ("Fetch"), but says nothing about auth expectations in prose, rate limits, or what the returned bytes represent beyond "pixels". The token/auth nuance lives only in the schema, so the description leaves significant behavioral ground uncovered.

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

Conciseness4/5

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

Two sentences, front-loaded with the action and the addressing modes, with the usage condition second. No filler. Slightly dense but every clause earns its place.

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

Completeness2/5

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

An output schema exists so return values need not be described, but with six parameters, 17% schema coverage, no annotations, and an anyOf-required structure, the description should do considerably more. It covers only the commit/blob addressing and omits the dual input modes entirely.

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

Parameters2/5

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

Schema description coverage is only 17% (just the token param), so the description must compensate. It clarifies commit/blob addressing ("a prefix is enough"), which is useful, but it never explains the anyOf mode (uri vs catalog+previewId), uri, catalog, or previewId — half the parameters remain undocumented in both places.

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

Purpose4/5

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

States a specific verb ("Fetch") and resource ("one historical render's pixels"), plus the addressing modes (commit or blob). The closing clause ("the bytes rather than the timeline") distinguishes it from siblings like catalog_history_list and catalog_history_diff. It does not name those siblings explicitly, so it stops short of a 5.

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

Usage Guidelines4/5

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

Gives a clear when-to-use: "when an agent cannot reach the delivery branch itself, or wants the bytes rather than the timeline." This implicitly contrasts with the delivery branch and the timeline/history-list siblings. No explicit when-not or named-alternative routing, so not a 5.

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

catalog_libraryPreview CatalogsAInspect

Open the hosted preview catalog browser app. With no arguments it lists every catalog with its preview count only; pass projectId to list one catalog's previews. To find previews without the app, call catalog_list_projects, then catalog_list_previews with a catalog id. Also opens from the ChatGPT/Codex sidebar.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
projectIdNoA catalog id from catalog_list_projects whose previews to list.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it discloses key behavioral traits: this opens an interactive hosted app rather than returning data, output differs by argument, and it can also be launched from the ChatGPT/Codex sidebar. It does not cover auth/permission requirements or failure behavior, though the token parameter description partially addresses session-token handling.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core purpose and the two modes; every sentence adds routing or parameter value. The trailing sidebar note is a mild fragment but still relevant context.

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

Completeness4/5

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

For a 2-param app-launcher with a fully-described schema and an output schema present, the description covers purpose, both argument modes, sibling alternatives, and launch surfaces. Return-value explanation is rightly omitted given the output schema; only failure/permission behavior is unaddressed.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema does not: omitting projectId changes the tool into a full-catalog listing with preview counts only, and projectId is sourced from catalog_list_projects. This clarifies the conditional semantics of the optional parameter.

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

Purpose5/5

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

States a specific verb (Open) and resource (hosted preview catalog browser app), then immediately clarifies its two modes: no-arg catalog listing vs. projectId-scoped preview listing. An agent can distinguish it from catalog_list_projects, catalog_list_previews, and ui_builder_open without opening any schema.

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

Usage Guidelines5/5

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

Explicitly states when to use each mode ('With no arguments it lists every catalog...; pass projectId to list one catalog's previews') and names the non-app alternative path (catalog_list_projects then catalog_list_previews with a catalog id). Routing guidance is complete.

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

catalog_list_data_productsBInspect

List the structured data-product kinds of one catalog, optionally one preview. Name the catalog with 'catalog' (ids from catalog_list_projects) or a preview 'uri'.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNo
previewIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataProductsYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'List' implies a safe read, and the schema's token note covers the auth header workaround, but the description itself says nothing about permissions, pagination, or the preview/catalog distinction. It adds some framing but not rich behavioral context.

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

Conciseness4/5

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

Two sentences, front-loaded with the operation and scope before the parameter guidance. Slightly awkward phrasing ('optionally one preview') but no wasted sentences.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and the catalog/uri identification is covered. However, the role of 'previewId' and its relationship to the catalog-or-uri anyOf is unexplained, leaving a real gap for a 4-parameter tool with no annotations.

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

Parameters3/5

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

Schema coverage is only 25% (only 'token' is documented), so the description must compensate. It clarifies that 'catalog' takes ids from catalog_list_projects and 'uri' denotes a preview, which helps, but 'previewId' remains undocumented in both the description and the schema, and the anyOf catalog-or-uri relationship is left implicit.

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

Purpose4/5

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

States a specific verb (list) and resource (structured data-product kinds) scoped to one catalog, which distinguishes it from the catalog_list_* siblings. It does not explicitly name those siblings, but the resource is specific enough that an agent can differentiate it.

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

Usage Guidelines3/5

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

It tells the agent how to identify the target — a catalog id from catalog_list_projects or a preview 'uri' — and notes preview is optional. But it gives no explicit when-to-use/when-not guidance versus siblings like catalog_get_preview_data or catalog_list_previews, leaving the preview-vs-catalog choice only implied.

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

catalog_list_devicesAInspect

List the @Preview(device = ...) ids this server's render lane recognises, with each one's dp size and density. The device override takes one of these ids; an unrecognised name renders the default frame rather than failing, so check here instead of guessing.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and delivers the key behavioral trait: an unrecognised name silently renders the default frame rather than failing. That non-erroring fallback is exactly the kind of context an agent cannot infer from the schema. It does not cover auth or rate-limit behavior, but the token param is documented in 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.

Conciseness5/5

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

Two sentences, no waste. The core purpose is front-loaded and the fallback caveat follows in the most useful position for an agent deciding whether to call it.

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

Completeness4/5

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

An output schema exists, so return values needn't be explained, and the description covers the one non-obvious behavior (silent default fallback). For a single-parameter, read-only catalog lister this is nearly complete; only auth/permission framing is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so the sole parameter (token) is already fully documented with its preference order relative to the header. The description adds nothing about that parameter, so the baseline of 3 applies; its mention of `device` refers to a different tool's parameter, not this one's.

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

Purpose4/5

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

States a precise verb and resource: 'List the @Preview(device = ...) ids this server's render lane recognises, with each one's dp size and density.' That clearly delimits the tool from siblings like catalog_list_previews or catalog_render_preview, though it never names a sibling to sharpen the distinction.

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

Usage Guidelines4/5

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

'The device override takes one of these ids ... so check here instead of guessing' tells the agent when to call it (before supplying a device override) and why. It gives clear positive guidance but names no alternative tool and states no explicit when-not condition.

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

catalog_list_previewsAInspect

List the Compose previews and published metadata of one hosted catalog. 'catalog' is required (ids from catalog_list_projects). Pass 'query' (a component name such as EdgeButton) to narrow by id or label; results are paged (100 by default, 'offset'/'limit' for more). This server holds published library catalogs only: previews of the project you are editing come from the local compose-preview-mcp server, not from here.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoCase-insensitive substring of a preview id or label, such as a component name.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
offsetNo
catalogYesA catalog id from catalog_list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose meaningful traits: default page size (100), offset/limit for further pages, and the server's scope (published library catalogs only). It does not discuss permissions or whether access is gated, though the schema's 'token' parameter hints at a grant flow.

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

Conciseness5/5

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

Four sentences, front-loaded with the core action, and each sentence adds non-redundant information (required param source, filtering, paging, server boundary). No filler or restatement of the tool name.

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

Completeness5/5

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

An output schema exists, so return values need not be described. Combined with the schema, the description supplies purpose, the required-parameter source, filtering, paging, and a clear server-scope exclusion — everything needed to invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 60%, and the description compensates for the undocumented parameters by explaining 'catalog' (required, sourced from catalog_list_projects), 'query' (component name narrowing by id or label), and 'offset'/'limit' paging semantics with the 100 default. Only 'token' is left to the schema, which documents it thoroughly.

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

Purpose4/5

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

The description opens with a specific verb+resource: 'List the Compose previews and published metadata of one hosted catalog', scoping both the operation and the target. It does not explicitly name neighboring tools like catalog_get_preview_data, so sibling differentiation rests on the scope sentence rather than direct contrast. Clear and specific, but not maximally differentiated.

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

Usage Guidelines5/5

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

It states where the required 'catalog' id comes from (catalog_list_projects), how to narrow results via 'query', and how pagination works. Critically, it gives an explicit when-not-to-use condition: previews of the project being edited come from the local compose-preview-mcp server, not this one.

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

catalog_list_projectsAInspect

List every remote catalog with its stable id and preview count. Call this first: catalog_list_previews and catalog_list_data_products take one of these ids as 'catalog'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read-only, side-effect-free operation and it discloses the returned fields, but it says nothing about permissions/access requirements or behavior when no catalogs exist, leaving real gaps for a no-annotation tool.

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

Conciseness5/5

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

Two sentences, zero filler, with the core listing behavior front-loaded and the sequencing directive immediately after. Every clause earns its place.

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

Completeness5/5

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

With an output schema handling return values, a fully documented single parameter, and explicit call-ordering guidance, an agent has everything needed to invoke this correctly. No significant omission remains.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one optional parameter (token), which the schema fully documents including its relationship to poll_access and the header alternative. The description adds nothing about it, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('List every remote catalog') and specifies the returned identity fields ('stable id and preview count'). It also distinguishes itself from catalog_list_previews and catalog_list_data_products by explaining that those consume the id this tool produces.

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

Usage Guidelines5/5

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

'Call this first' gives an explicit ordering instruction, and the description names the two sibling tools that depend on its output. An agent knows both when to use it and why it precedes the others.

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

catalog_render_matrixAInspect

Render one preview across the cross-product of the given override axes in a single call, returning a hash/size observation per cell (observe=png adds the pixels). Prefer this over a catalog_render_preview per combination: the cells share one catalog lease and are reported together, so comparing axes costs one round trip instead of N. Capped at 24 cells. Requires live grant scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo
axesYes
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNo
observeNo
overridesNo
previewIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and delivers: a hard cap of 24 cells, the shared-lease batching behavior, the auth requirement (live grant scope), and what is returned per cell (hash/size, with pixels only when observe=png). These are exactly the operational traits an agent needs and none are restated from structured fields.

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

Conciseness4/5

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

Three tight sentences, front-loaded with what the tool does before the alternative and the constraints. The dense parenthetical and trailing 'Requires live grant scope' fragment are slightly compressed but every clause carries information.

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

Completeness4/5

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

An output schema exists, so return-value detail is not required, and the description still covers cap, auth and batching behavior. It falls short on how the target is identified (uri vs. catalog+previewId) and on the overrides/axes relationship, which a 7-param nested-object tool would benefit from.

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

Parameters3/5

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

Schema description coverage is only 14% (one of seven params), so the description must compensate. It clarifies the meaning of axes (a cross-product) and observe=png materially, but leaves overrides vs. axes, the uri vs. catalog+previewId alternative, and token entirely to the schema.

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

Purpose5/5

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

States a specific verb (render) and resource (one preview across the cross-product of override axes) in a single call, and explicitly contrasts with the sibling catalog_render_preview. An agent can distinguish this from catalog_render_preview without opening either schema.

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

Usage Guidelines5/5

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

Names the alternative explicitly ('Prefer this over a catalog_render_preview per combination') and gives the selecting condition plus rationale (shared catalog lease, one round trip instead of N). It also states a precondition for use (live grant scope), which is more than most definitions provide.

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

catalog_render_previewAInspect

Render one preview. Like local compose-ai-tools, the default semantics observation is token-frugal; request observe=png for pixels, observe=svg for the compose/figma-svg vector export as SVG source, or observe=scroll-png / observe=scroll-svg for the full-page capture of a scrollable screen rather than the viewport crop. Overrides, other observations and fresh renders require live grant scope; without it, a call with no overrides returns the published snapshot (as resources/read does).

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNo
observeNo
overridesNo
previewIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
imageUrlNoShort-lived signed https URL of the rendered PNG, on a host with a public origin.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose key behaviors: the default is a token-frugal semantics observation, overrides/other observations/fresh renders require live grant scope, and without scope a no-override call returns the published snapshot. Auth/permission gating is surfaced, which is valuable, though other traits (rate limits, side effects) are unstated.

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

Conciseness3/5

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

The purpose is front-loaded, but the middle passage is dense and awkwardly phrased with unexplained jargon ('Like local compose-ai-tools'), which costs clarity. It is reasonably sized but not tightly written.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a 6-parameter tool with 17% schema coverage and no annotations, the description covers observation modes and grant-scope behavior but leaves the token parameter and the uri/previewId selection logic unexplained.

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

Parameters3/5

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

Schema coverage is only 17%, so the description must compensate. It explains the observe enum values (png, svg, scroll-png, scroll-svg, and semantics as default) and that overrides require grant scope, but omits 'hash', the token parameter, and the uri-vs-catalog+previewId selection. Partial compensation only.

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

Purpose4/5

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

The opening 'Render one preview' gives a clear verb+resource, and the description distinguishes observation modes (semantics default vs png/svg/scroll variants). However, the purpose is muddied by jargon like 'compose-ai-tools' and 'live grant scope' that an agent without prior context must infer.

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

Usage Guidelines4/5

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

Explicit conditional guidance is given for observe values ('request observe=png for pixels, observe=svg for ... SVG source, or observe=scroll-png/scroll-svg for full-page capture'). It also states the grant-scope precondition. It lacks routing against siblings like catalog_get_preview_data or catalog_render_matrix, keeping it below 5.

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

get-documentation-for-storyCInspect

Storybook-MCP-compatible preview metadata lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
storyIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet 'lookup' only weakly implies a non-destructive read. Nothing is said about auth requirements, token acquisition flow, caching, or error behavior, even though the schema's token parameter hints at a real access-control gate the agent needs to understand.

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

Conciseness2/5

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

One sentence with no waste, but this is under-specification masquerading as conciseness: the definition is far too small for a three-parameter tool with an access token. Brevity here costs the agent required context rather than saving it.

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

Completeness2/5

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

An output schema exists, so return values need no explanation, but that is the only dimension covered. With no annotations, 33% schema coverage, an ambiguous id/storyId requirement, and no usage guidance, the description leaves the agent unable to invoke this tool confidently.

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

Parameters2/5

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

Schema description coverage is only 33% (only token is documented), and with low coverage the description must compensate — it adds zero parameter information. Crucially, the anyOf requirement between storyId and id, the single most important invocation detail, is explained nowhere in either the description or the undocumented schema fields.

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

Purpose2/5

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

The phrase 'preview metadata lookup' gestures at the resource but has no verb and no scope, and 'Storybook-MCP-compatible' is protocol trivia rather than purpose. Nothing distinguishes it from siblings like list-all-documentation or preview-stories. It largely restates the tool name in different words.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when it is preferable to list-all-documentation or preview-stories, and no prerequisites stated. The only routing hint in the whole definition lives in a schema field (token), not in the description.

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

list-all-documentationCInspect

Storybook-MCP-compatible alias that lists every preview as a story.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It reveals only that this is an alias, disclosing nothing about ordering, completeness, auth beyond the schema, or how 'every preview' is scoped. The alias hint is the only behavioral signal.

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

Conciseness4/5

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

A single compact sentence, front-loaded with the identifying clause. It wastes nothing, though it is arguably too terse for the routing ambiguity it leaves unresolved.

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

Completeness2/5

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

An output schema exists, so return values needn't be explained, but for a tool whose whole value is disambiguating an 'alias' from its siblings, the description omits what a 'story' is, ordering, and why an agent would choose it. It leaves the core routing question unanswered.

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

Parameters3/5

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

Schema description coverage is 100% and the single token parameter is fully documented in the schema, including its relationship to poll_access and the X-Compose-Preview-Token header. The description adds no parameter meaning, so the baseline 3 applies.

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

Purpose3/5

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

It states a verb+resource ('lists every preview as a story') but frames itself as an 'alias' without naming what it aliases, leaving the relationship to sibling catalog_list_previews and preview-stories ambiguous. An agent can guess it enumerates everything, but cannot confidently distinguish it from those siblings.

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

Usage Guidelines2/5

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

The 'Storybook-MCP-compatible' phrasing faintly implies the audience (clients expecting Storybook's MCP surface), but there is no when-to-use, when-not, or explicit alternative. It never says whether to prefer this over catalog_list_previews or preview-stories.

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

poll_accessAInspect

Collect the outcome of a request_access, proving possession of its deviceSecret. It HOLDS THE CALL OPEN and answers the moment the human decides — one call instead of a dozen, since each poll here costs a whole round trip through you. It waits 8 seconds by default; pass waitSeconds (up to 30) if your client tolerates a longer call. Pass urlMode=true when the client supports URL elicitation: while the request is pending this returns the standard -32042 URL-elicitation-required error, and retrying the same call after the browser decision returns the outcome. A wait that times out answers status=pending, and you simply call again. Then approved (with the token) or denied/expired. Use the token on every later call: as the X-Compose-Preview-Token header where you control headers, and otherwise as each gated tool's 'token' argument — which is what an MCP client reaching this flow mid-session needs, since its headers were fixed when it connected.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlModeNoUse the protocol-standard URL elicitation UI while this request is pending.
requestIdYes
waitSecondsNo
deviceSecretYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: it holds the call open 8s by default (max 30), returns status=pending on timeout with a retry instruction, returns -32042 URL-elicitation-required in urlMode, and yields approved/denied/expired plus the token. This is exactly the behavioral context an agent needs and cannot get from structured fields.

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

Conciseness4/5

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

Dense and front-loaded with the long-poll behavior first, then waitSeconds, urlMode, timeout, and token usage in order of relevance. The closing token-propagation sentence is somewhat tangential to invoking poll_access itself, keeping it just below maximally tight.

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

Completeness5/5

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

For a 4-param long-polling tool with an output schema, this covers everything an agent needs: when to call, retry-on-pending, urlMode branching, and how to use the resulting token downstream. Nothing required to call it correctly is missing.

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

Parameters5/5

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

Schema coverage is only 25% (urlMode only), but the description compensates: it documents waitSeconds' 8s default and 30s ceiling, the urlMode elicitation/retry semantics, and deviceSecret's purpose (proving possession). Only requestId is left implicit, and its meaning is obvious from context.

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

Purpose5/5

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

States a specific verb+resource ('Collect the outcome of a request_access') and ties itself to the sibling that produces the request. An agent can immediately tell this is the completion half of the request_access handshake, distinguishable from status polling or catalog tools.

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

Usage Guidelines4/5

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

Gives clear when-to-use guidance (after request_access, to avoid a dozen round trips), plus conditions for waitSeconds and urlMode. It does not explicitly contrast with the sibling 'status' tool or state when not to use long-polling, so it stops short of the top band.

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

preview-storiesCInspect

Storybook-MCP-compatible rendering of one or more story ids. Requires live scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
idsNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
observeNo
storyIdNo
storyIdsNo
overridesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
observationsYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing: no auth/prerequisite detail beyond the vague 'live scope', no cost or latency signal for rendering, and no indication of what a preview operation produces. The token parameter's schema note hints at access control, but the description itself adds no behavioral context.

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

Conciseness4/5

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

Two short sentences, front-loaded with the rendering action. No padding, though the brevity here reflects under-specification rather than disciplined editing.

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

Completeness2/5

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

With 7 parameters, 14% schema coverage, no annotations, and an output schema that only excuses return-value description, the definition is far too thin. Prerequisites, id-alias semantics, observe modes, and overrides are all left unexplained.

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

Parameters2/5

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

Schema description coverage is 14% across 7 parameters, and only the token param is documented in the schema. The description says 'one or more story ids' but does not explain the four id-related aliases (id/ids/storyId/storyIds), the observe enum values, or the overrides object, leaving the agent to guess.

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

Purpose3/5

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

States a verb+resource ('rendering of one or more story ids') and a compatibility framing, but 'preview-stories' is not distinguished from close siblings like catalog_render_preview, catalog_render_matrix, or catalog_render_preview_catalog_recovery. An agent cannot tell from this text which render tool fits a given request.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative selection guidance is given. 'Requires live scope' hints at a precondition but is never defined or tied to the sibling tools that also render.

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

request_accessAInspect

Ask a human for access to this server. Returns an approveUrl and a userCode: show BOTH to the person you are working with, ask them to open the link and check that the code on the page matches, then call poll_access. When the client supports URL elicitation, call poll_access with urlMode=true instead of pasting the link into chat; clients without it keep this complete text fallback. The link grants nothing by itself — keep the deviceSecret this returns, it is what collects the token. Use this when a call answered 'authorization_required', or when your token stopped working (a server restart drops every grant).

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
scopeNo
ttlSecondsNo
capabilitiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses the returned approveUrl, userCode, and deviceSecret, warns that the link grants nothing by itself and the deviceSecret is what collects the token, and notes that a server restart drops all grants. This is far beyond what the empty annotation set provides.

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

Conciseness4/5

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

The core action and return handling are front-loaded, which is good. It is somewhat long and revisits the 'show the link to the human' idea twice (manual paste vs urlMode), but each clause conveys a distinct operational instruction rather than filler.

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

Completeness4/5

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

For a multi-step OAuth device-flow tool the flow guidance is thorough, and an output schema exists so return values need not be detailed (the description still usefully frames them). The one real gap is the wholly undocumented set of 4 input parameters, which an agent must guess at.

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

Parameters2/5

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

There are 4 parameters (label, scope, ttlSeconds, capabilities) with 0% schema description coverage, and the description mentions none of them. It explains the output flow but leaves the inputs — including the meaning of the preview/live/playground scope enum and the ttl/capabilities semantics — completely undocumented.

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

Purpose5/5

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

States a specific verb and resource ('Ask a human for access to this server') and clearly positions itself relative to its sibling poll_access as the initiating step of a two-call flow. An agent can distinguish it from poll_access and from the many catalog/ui_builder siblings without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit triggering conditions: use it 'when a call answered authorization_required', or 'when your token stopped working (a server restart drops every grant)'. It also routes the agent downstream, specifying to call poll_access with urlMode=true when URL elicitation is supported and to use the text fallback otherwise.

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

statusCInspect

Report readiness, the aggregate catalog set, and which host this is: origin, the canonical origin designs here are homed at, and originAliases, other hostnames that reach this same server.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses what is returned (readiness, catalog set, host identity) but not whether it is read-only, requires auth, or mutates state. The token parameter implies an access-control dimension that the description never addresses.

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

Conciseness3/5

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

It is a single sentence, but it packs three disparate concerns (readiness, catalog set, host identity) behind a colon-led list that is hard to parse and not front-loaded on the primary purpose.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and parameter count is minimal. However, with no annotations and a broad sibling set, the description leaves auth requirements and usage context unaddressed.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already fully documents the single token parameter. The description adds no parameter detail, so baseline 3 applies.

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

Purpose3/5

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

The name 'status' is generic, but the description does enumerate three concrete outputs: readiness, the aggregate catalog set, and host identity (origin and originAliases). It is specific about resource content but does not distinguish itself from siblings like ui_builder_list_catalogs, which also relates to catalogs.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives, despite a large sibling set containing catalog-listing and access tools. The only usage-adjacent hint is embedded in the token parameter, not the description body.

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

ui_builder_acknowledge_commentAInspect

Say that you have read a comment thread — which is not the same as resolving it. Resolving claims the question is settled; acknowledging claims only that you have seen it, which is the honest thing to say while you are still working on what it asked for. Omit threadId to acknowledge the whole discussion, which is what you mean after reading it with ui_builder_list_comments. Acknowledgement is per actor, so a thread you have read is still waiting for the other people in the design, and it is what clears the comments block the server puts on your ui_builder_apply, ui_builder_get_design, ui_builder_export and ui_builder_put_asset replies.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
threadIdNoOne thread. Omit for every thread on the design.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that acknowledgement is per-actor, that it is non-destructive relative to resolving, and that it clears the `comments` block on ui_builder_apply, ui_builder_get_design, ui_builder_export and ui_builder_put_asset replies. What it omits is auth/permission requirements and error or idempotency behavior, so it falls just short of a 5.

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

Conciseness4/5

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

The key distinction from resolving is front-loaded in the first clause, which is exactly right. It is a little long and rhetorical ('which is the honest thing to say'), but every sentence carries a distinct fact rather than padding.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and the description instead supplies the cross-tool side effect (clearing the comments block) that an agent could not infer from schema or annotations. Given five parameters and no annotations, nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 80%, so the baseline is 3. The description's only parameter guidance is the threadId omission rule, which the schema already states ('Omit for every thread on the design'), so it adds little. The token, agentName and agentModel parameters are left entirely to the schema.

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

Purpose5/5

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

States a specific verb (acknowledge) and resource (a comment thread), and immediately draws the boundary against the sibling operation that is easiest to confuse it with: resolving. An agent can distinguish this from ui_builder_resolve_comment_thread and ui_builder_react_to_comment without opening any schema.

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

Usage Guidelines5/5

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

Explicit when-to-use: acknowledge while still working on the request, after reading the thread with ui_builder_list_comments. Explicit when-not-to-use: resolving, which 'claims the question is settled.' It also gives the scoping rule for omitting threadId.

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

ui_builder_applyAInspect

Apply design mutations — insertNode, setProperty, deleteNode, moveNode and the rest of DesignMutationV1 — as one operation. baseRevision is the revision you read; the outcome reports conflicts or rejected edits. This is how an agent adds a scaffold, fills its slots and sets modifiers. Use setStateVariable with name and declaration to add or edit state, removeStateVariable with name to remove unused state, and setEventBinding with nodeId, event and an ordered actions array to edit behavior. An empty actions array removes the event handler. removeNodeProperty (or a setProperty whose value is {"type":"null"}) unsets the property — the way back after trying one — and is refused, naming the node and the field, when the catalog requires it. When somebody has commented on the design and you have not acknowledged it, the outcome carries a comments block naming the threads waiting on you; read it, because it is somebody talking about what you are editing.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
clientIdNo
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
operationsYesDesignMutationV1 objects. State example: {"type":"setStateVariable","name":"expanded","declaration":{"type":"value","valueType":"bool","initialValue":false,"nullable":false,"persistence":"preview"}}. Event example: {"type":"setEventBinding","nodeId":"button","event":"click","actions":[{"type":"toggle","variable":"expanded"}]}. Declare state before binding it in the batch.
operationIdYesYour id for this operation; makes a retry idempotent.
baseRevisionYesThe revision these mutations were written against.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so richly: it discloses conflict/rejection reporting against baseRevision, the refusal semantics of removeNodeProperty (refused, naming node and field, when the catalog requires it), that an empty actions array removes a handler, and that a comments block surfaces unacknowledged threads. These are exactly the mutation-safety and concurrency facts an agent needs and cannot get from structured fields.

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

Conciseness4/5

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

It is a long description, but the tool is genuinely complex and the length is mostly earned, with the core purpose front-loaded in the first sentence. A few sentences are verbose or editorial ('read it, because it is somebody talking about what you are editing'), which keeps it from a 5.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and the description covers the behavioral gaps that matter: conflicts, rejected edits, unset/refusal rules, and the comments block. For an 8-parameter batched-mutation tool with no annotations, this is complete enough to call correctly.

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

Parameters4/5

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

At 75% schema coverage the schema already documents most parameters, but the description adds real meaning beyond it: baseRevision as 'the revision you read', the shape of setStateVariable's name/declaration, and setEventBinding's nodeId/event/ordered actions. It clarifies the ordering constraint (declare state before binding it), which the schema does not state. Slightly short of 5 because several operation variants are only gestured at.

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

Purpose4/5

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

The description states a specific verb and resource: it applies DesignMutationV1 mutations (insertNode, setProperty, deleteNode, moveNode) as one batched operation. That is unambiguous about what the tool does. It does not, however, explicitly differentiate itself from sibling mutators like ui_builder_replace_design_document or the branch/merge tools, so it lands at 4 rather than 5.

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

Usage Guidelines4/5

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

It gives concrete usage context — 'This is how an agent adds a scaffold, fills its slots and sets modifiers' — and routes specific intents to specific mutation types (setStateVariable for state, setEventBinding for behavior, removeNodeProperty to unset). This is strong when-to-use guidance, but there is no explicit when-not-to-use or named alternative tool, so it stops short of 5.

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

ui_builder_archive_branchAInspect

Close a branch without merging it: it stays readable and listed, and can no longer be edited or merged. Needs write access to the parent, or to have made the branch.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
branchIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
branchYes
schemaYes
summaryYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the post-state ('stays readable and listed', 'can no longer be edited or merged') and the authorization requirement. The one gap is reversibility — it never says whether an archived branch can be restored, which matters 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.

Conciseness5/5

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

Two sentences, zero filler, with the core operation and its non-merge scope front-loaded before the permission clause. Every clause earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers effect plus authorization for a no-annotation mutation tool. The missing piece is whether archival is undoable, which an agent invoking a destructive-adjacent operation would reasonably want.

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

Parameters3/5

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

Schema coverage is 75%, with rich inline descriptions for token, agentName, and agentModel; only branchId lacks one, and its meaning is obvious from context. The description adds no parameter-level detail beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Close a branch') and immediately qualifies the scope with 'without merging it', which cleanly separates it from the sibling ui_builder_merge_branch. An agent can identify the operation and its effect without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear condition for use (close rather than merge) and states the permission prerequisite ('write access to the parent, or to have made the branch'). It does not explicitly name merge_branch as the alternative, but the 'without merging' framing implicitly routes the agent.

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

ui_builder_await_commentsAInspect

Wait for the discussion to move past afterSequence and return it, rather than polling for it. Returns as soon as anybody — a designer in the browser or another agent — posts, resolves or deletes; returns a timedOut reply if nothing happens within waitSeconds, which you answer by calling again with the same cursor. This is how you hold a conversation about a design: post, wait, read, act.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
waitSecondsNoUp to 120. Defaults to 25.
afterSequenceYesThe `sequence` you last saw. 0 for anything at all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden, and it delivers: it discloses what wakes the call (a post, resolve or delete by anyone — designer or agent), the timeout output name (`timedOut`) and its bound (`waitSeconds`), and the required retry semantics. Auth/token handling is covered by the schema's own token description.

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

Conciseness5/5

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

Three tight sentences: the operation, the wake/timeout behavior, then the conversational framing. The core behavior is front-loaded and no sentence is wasted.

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

Completeness5/5

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

With an output schema present, return-format detail isn't required, yet the description still explains the one output that matters for control flow (timedOut) and how to respond to it. Nothing an agent needs to call and continue the conversation is missing.

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

Parameters4/5

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

Schema coverage is already 83%, so the baseline is 3, but the description adds real meaning: `afterSequence` is framed as a cursor ('the discussion to move past'), and `waitSeconds` is tied to the timedOut reply and the re-call-with-same-cursor rule. Only the optional token/agentName/agentModel params are left to the schema.

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

Purpose5/5

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

States a specific action (wait for the discussion to move past a cursor and return it) and explicitly contrasts with the alternative behavior (polling). An agent can distinguish this from siblings like ui_builder_list_comments or ui_builder_await_decision without opening any schema.

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

Usage Guidelines5/5

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

Gives the exact usage loop — 'post, wait, read, act' — and states when to call again (after a timedOut reply, with the same cursor). It also names the pattern it replaces ('rather than polling'), which is the key decision point against sibling tools.

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

ui_builder_await_decisionAInspect

Wait for somebody to approve or reject a design, rather than asking again whether they have. Returns as soon as a decision lands after afterSequence — by default only a person's (from: "human"), on any revision unless you name one — or a timedOut reply after waitSeconds. Every reply carries latest (the newest matching verdict, new or not) and approved, so waitSeconds: 0 is a cheap, idempotent poll for a routine that can only check back later; quote the reply's sequence as the next afterSequence. People record theirs over the design's decisions HTTP route.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoWhose decisions count. Defaults to human.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
revisionNoOnly decisions on this revision.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
waitSecondsNoUp to 120. Defaults to 25; 0 checks without blocking.
afterSequenceNoThe `sequence` you last saw. 0 for anything at all.

Output Schema

ParametersJSON Schema
NameRequiredDescription
latestNo
schemaYes
summaryYes
approvedYes
designIdYes
sequenceYes
timedOutYes
decisionsNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does: it discloses the timeout behavior (`timedOut` reply after `waitSeconds`), the default filter (`from: "human"`), that `latest` may be a previously seen verdict, and the auth workaround for header-fixed MCP clients. This is unusually rich behavioral context.

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

Conciseness4/5

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

Front-loaded with the core purpose and the polling caveat; nearly every clause carries information. It is a dense, em-dash-heavy paragraph, but not padded — a mild deduction only for density that makes it slightly harder to scan.

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

Completeness5/5

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

For an 8-parameter blocking tool with an output schema, the description covers the essentials: blocking semantics, defaults, timeout result, return fields, and how to chain calls. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 88%, so the schema already documents most parameters. The description still adds value by tying parameters together operationally — the `afterSequence`/`sequence` loop, the default human filter, and `waitSeconds: 0` polling semantics — rather than merely restating field docs.

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

Purpose5/5

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

States a specific verb and resource ('Wait for somebody to approve or reject a design') and immediately contrasts it with the naive alternative ('rather than asking again whether they have'). An agent can distinguish it from siblings like ui_builder_check_design or ui_builder_await_comments without opening a schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it (waiting for a verdict instead of re-asking) and names the concrete degenerate mode ('waitSeconds: 0 is a cheap, idempotent poll for a routine that can only check back later'). The continuation pattern ('quote the reply's `sequence` as the next `afterSequence`') gives the agent the loop contract.

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

ui_builder_await_designAInspect

Wait for somebody else to change a design and return what they changed, rather than asking again whether they have. Returns the moment a designer in the browser or another agent commits an edit, as the same update frame the browser's own live socket receives; returns a timedOut reply if nothing happens within waitSeconds, which you answer by calling again with the same cursor. Quote as afterSequence the throughSequence of the delta you last received, or the lastSequence of the last snapshot; a cursor the server no longer retains is answered with a whole snapshot instead of the operations you missed. waitSeconds: 0 checks without blocking. Nothing is lost between calls — the cursor is replayed when you call again — so somebody merely looking at the design does not wake you, and only a committed change does.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
waitSecondsNoUp to 120. Defaults to 25.
afterSequenceYesThe `lastSequence` you last saw, from ui_builder_get_design or a previous wait.
includeCatalogNoWhen the reply is a whole snapshot, embed the pinned catalog in it. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full load and does so richly: it discloses the return trigger (a committed edit), the timedOut reply when nothing happens, that a non-retained cursor yields a whole snapshot, that only committed changes wake the caller (not viewers), and that nothing is lost between calls via cursor replay.

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

Conciseness4/5

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

Purpose is front-loaded and nearly every clause carries behavioral detail (timeout, cursor retention, non-blocking check). It is a single dense paragraph that runs slightly long, but no sentence is filler.

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

Completeness4/5

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

For a streaming/long-poll tool with an output schema and 7 parameters, the description covers the essentials: cursor lifecycle, timeout handling, snapshot fallback, and wake semantics. Return-value shape is left to the output schema, appropriately. Naming its sibling alternatives would close the remaining gap.

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

Parameters4/5

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

Schema coverage is 86%, so the baseline is 3. The description adds real meaning beyond the schema by explaining how to derive afterSequence (the throughSequence of the last delta or lastSequence of the last snapshot) and what waitSeconds: 0 does, going beyond the terse schema hints.

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

Purpose5/5

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

The description opens with a precise verb+resource: waiting for somebody else to change a design and returning what they changed. It explicitly contrasts this with 'asking again whether they have,' which distinguishes it from polling-style siblings like ui_builder_check_design without naming them.

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

Usage Guidelines4/5

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

It gives clear operational context: use it to wait instead of re-asking, answer a timedOut reply by calling again with the same cursor, and use waitSeconds: 0 to check without blocking. The alternative (polling via check_design) is implied rather than named explicitly, so it stops just short of a full when/when-not mapping.

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

ui_builder_branch_designAInspect

Fork a design at a revision into a branch to explore an alternative, or to change it without trampling somebody editing it live. A branch is a design with its own id: edit it with ui_builder_apply, look at it with ui_builder_view or ui_builder_get_design, compare it with ui_builder_diff_designs, then bring it back with ui_builder_merge_branch or drop it with ui_builder_archive_branch. Branch N times from the same revision to try N alternatives: merging one archives the others. Branches of a branch are refused; so are asset uploads, restores and document replacements on a branch. Needs write access to the design.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWhat this alternative is, e.g. `compact header`.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
branchIdNoThe branch's design id. Defaults to one minted from the parent's; naming one makes a retry idempotent.
designIdYesThe design to branch.
revisionNoA retained revision to fork at. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
branchYes
schemaYes
summaryYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: write access is required, branches-of-branches and several mutation types are refused on a branch, merging one branch archives its siblings, and naming branchId makes a retry idempotent. This is exactly the operational context 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.

Conciseness4/5

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

Purpose and primary use case are front-loaded, and nearly every clause adds routing or constraint information rather than filler. It is dense and packs multiple constraints into single sentences, which slightly hurts scanability but wastes little.

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

Completeness5/5

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

An output schema exists, so return values need not be explained. The description covers purpose, permissions, lifecycle routing, refusal cases and idempotency, leaving no significant gap for an agent deciding whether and how to call it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters including branchId idempotency and the token/header tradeoff. The description adds only the 'branch N times from the same revision' framing around the revision parameter, which is minimal beyond the schema baseline.

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

Purpose4/5

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

States a specific verb, resource and precondition: 'Fork a design at a revision into a branch', with the branch defined as 'a design with its own id'. It routes to many siblings by role (apply, view, get_design, diff_designs, merge_branch, archive_branch), but never distinguishes itself from the close sibling ui_builder_fork_design, which an agent could easily confuse with this tool.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('to explore an alternative, or to change it without trampling somebody editing it live'), names the alternatives for each subsequent step in the lifecycle, and states when-not via refusals (branch of a branch, asset uploads, restores, document replacements on a branch).

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

ui_builder_check_designAInspect

Check a design before you show it to anybody — one call instead of validate, view and an accessibility pass. Runs schema (document shape), catalog (the pinned catalog's validation, the mutation reducer and the Compose export gate — what ui_builder_validate runs) and a11y: controls with no label, icons and pictures with no contentDescription, touch targets under 48dp, text and icon contrast under WCAG 4.5:1 / 3:1, and text in a fixed height that clips at 200% font scale. Check a stored design (designId, optionally a past revision), a whole document, or operations applied to a scratch copy of designId exactly as ui_builder_apply would — nothing is saved. Returns summary first, then ok, the counts, and findings with the nodeId each is about, so you can fix them with ui_builder_apply and check again. rendered: true measures touch targets on a native render where the host has one (needs the ui-builder-export capability). Contrast against theme roles is resolved with the Material 3 baseline scheme, in both the light and the dark theme when a colour follows the theme (the finding names the theme that fails), and reported as a warning, never an error. guidelines runs only when named: a model judges the design against the Android design guides (developer.android.com) for its platform and reports each broken rule as a warning or note with its source. It uses this host's shared model key, so it runs only for the accounts the operator enabled and is reported as skipped for everyone else; with rendered: true the visual rules are judged on the native render too.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
checksNoWhich checks to run. Defaults to schema, catalog, a11y; `guidelines` runs only when named.
designIdNoA stored design to check, or to check `operations` against.
documentNoA whole DesignDocumentV1 to check instead of a stored design.
renderedNoMeasure touch targets on a native render, and show it to the guidelines model. Exported Kotlin that fails to compile there is an error finding (check `native`). Defaults to false.
revisionNoA past revision of `designId`. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
operationsNoDesignMutationV1 objects to apply to a scratch copy of `designId` and check — a dry run.
baseRevisionNoThe revision `operations` were written against; a stale one is a warning.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
checksYes
dryRunNo
errorsYes
schemaYes
skippedNo
summaryYes
designIdNo
findingsYes
revisionNo
warningsYes
truncatedNo
guidelinesNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations the description carries the full burden and does so: it discloses that nothing is saved, that rendered:true needs the ui-builder-export capability and surfaces Kotlin compile failures as error findings, that contrast issues are warnings never errors, and that guidelines depends on the host's shared model key and is skipped for non-enabled accounts.

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

Conciseness4/5

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

Front-loaded with the single most important fact (check before showing) and every clause carries information about checks, capabilities, or defaults. It is dense as one long paragraph and could be split for scannability, but there is little filler given the four checks and ten parameters.

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

Completeness5/5

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

For a 10-parameter tool with nested objects and an output schema, it covers the remaining gaps: auth via the token/header note, capability requirements, the guidelines account gating, and the shape/order of results (summary first, then ok, counts, findings). Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: guidelines runs only when named, operations execute against a scratch copy 'exactly as ui_builder_apply would', baseRevision staleness is a warning, and rendered measures touch targets on a native render.

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

Purpose5/5

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

States a concrete composite action and enumerates exactly what it bundles (schema document shape, catalog validation, a11y checks), and explicitly positions it against siblings: 'one call instead of validate, view and an accessibility pass.' An agent can distinguish it from ui_builder_validate and ui_builder_view without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear trigger ('Check a design before you show it to anybody') and names the alternatives it replaces, plus the dry-run semantics for operations. It stops short of stating when a narrower single check (e.g. ui_builder_validate) would be preferable, so there is no explicit when-not guidance.

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

ui_builder_compare_branchesAInspect

Put a design's alternatives side by side in one call: the parent's head and each open branch (or the branchIds named) rendered into ONE picture — a short-lived signed https link, numbered by caption — plus, per branch, what it changes against the parent at its fork (counts and a few lines, as ui_builder_diff_designs reports them). Show the person the picture and the numbered list, then ask with ui_builder_pick_branch; merge the choice with ui_builder_merge_branch. Writes nothing. Read access to the design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
deviceNoRender every picture at this device instead of each design's own size: a preset id (phone_small, phone, phone_landscape, foldable_folded, foldable_unfolded, tablet_portrait, tablet_landscape, wear_small_round, wear_large_round, wear_square, tv_1080p, widget_small_round, widget_small_squircle, widget_small_rectangular, widget_large_round, widget_large_squircle, widget_large_rectangular) or {"widthDp","heightDp"}. Nothing is saved.
inlineNoAlso return the picture as an image block. Defaults to false: the signed link.
designIdYesThe parent design.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
branchIdsNoOnly these branches of the design, in this order. Defaults to every open branch, oldest first.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNo
imageNo
deviceNo
parentNo
schemaYes
columnsNo
summaryYes
branchesNo
designIdYes
imageBase64No
parentRevisionYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it does disclose meaningful traits: 'Writes nothing. Read access to the design,' plus that the link is short-lived and signed, and that the render is 'nothing saved.' Missing only peripheral details like rate limits or expiry duration, but the safety and side-effect profile is clearly conveyed.

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

Conciseness4/5

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

Front-loads the core behavior and keeps the workflow guidance in a compact two-sentence tail. The dense em-dash phrasing packs a lot in, though the rendering/signed-link details are somewhat crowded, keeping it just short of maximally clean.

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

Completeness4/5

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

Complete enough for a read-only comparison tool: the side effects, output form (link vs inline image), and post-comparison workflow are all covered, and an output schema exists so return values need not be restated. Only a little more on when to prefer this over the related diff/matrix tools would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters in detail. The description echoes branchIds ('or the branchIds named') and the diff format, but adds no syntax or default nuance beyond the schema. Baseline 3 is appropriate when the structured fields do the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource — putting a design's alternatives side by side in one call — and concretely describes the output: the parent's head plus each open branch (or named branchIds) rendered into one signed picture, with a per-branch diff. This is distinguishable from siblings like ui_builder_diff_designs, ui_builder_render_design_matrix, and ui_builder_list_branches.

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

Usage Guidelines4/5

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

Gives a clear workflow: show the picture and numbered list, then ask with ui_builder_pick_branch and merge with ui_builder_merge_branch, which tells the agent where this fits in a decision sequence. It does not, however, explicitly state when to use this versus ui_builder_diff_designs or ui_builder_render_design_matrix, so the routing 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.

ui_builder_compare_referenceAInspect

Measure a design against its reference overlay (attach one with ui_builder_set_reference). Returns what the picture is against the frame and whether a pixel comparison means anything (facts.pixelComparable — a 328×56 dp crop stretched over a screen is not comparable until measured at its actual size); with differences, the share of pixels that differ and up to eight regions in dp, each with the layer it falls in; and for each of nodeIds, where that layer sits in the reference — from a box drawn over it in the editor, or a search of the reference's pixels, which for text also reads the font size — with the alignment that would make it agree (move, size, font size) and the exact operations to pass to ui_builder_apply. Nothing is written: apply the operations you agree with, then compare again and look with ui_builder_view. Layer matching needs node boxes, so nodeIds measures the native render (an export grant); differences alone use the PNG export. Treat confident: false as a hint to check, not an edit to make.

ParametersJSON Schema
NameRequiredDescriptionDefault
fitNoHow the picture is placed: contained and centred, across the width from the top, or at its own size from the top-left. Defaults to the fit the picture calls for (facts.recommendedFit).
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
nodeIdsNoLayers to match against the reference, each with a proposed alignment.
designIdYes
rendererNoWhich render to measure. Defaults to native when nodeIds is given, export otherwise.
revisionNoMeasure this revision. Defaults to the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
differencesNoMeasure where the frame differs. Defaults to true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
factsYes
notesNo
layersNo
schemaYes
designIdYes
rendererYes
revisionYes
referenceYes
differencesNo
differencesMessageNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it explicitly states 'Nothing is written', explains the pixelComparable caveat, notes that nodeIds needs an export grant while differences alone uses the PNG export, and warns to treat confident:false as a hint rather than an edit. This is unusually rich behavioral disclosure.

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

Conciseness4/5

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

Front-loaded with the core action and each sentence carries distinct information. The single dense paragraph with heavy em-dashes and nested parentheticals strains readability slightly, but little is wasteful.

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

Completeness5/5

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

For a 9-parameter tool with an output schema, the description supplies the comparability caveat, the renderer/permission dependency, the meaning of the returned regions and alignment operations, and the confident flag semantics. 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.

Parameters4/5

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

Schema coverage is 89% (baseline 3), and the description adds genuine value beyond it: fit defaults to facts.recommendedFit, renderer defaults to native when nodeIds is given and export otherwise, and nodeIds triggers native rendering. It stops short of covering every param, but meaningfully supplements the schema.

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

Purpose5/5

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

States a specific verb+resource: 'Measure a design against its reference overlay.' It also names the enabling sibling (ui_builder_set_reference) and the downstream tools (ui_builder_apply, ui_builder_view), so an agent can place it precisely in the workflow.

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

Usage Guidelines4/5

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

Gives strong workflow context — attach a reference first, apply the returned operations, then re-compare and view. However, it does not distinguish itself from potentially overlapping siblings like ui_builder_check_design or ui_builder_validate, so the when-not-to-use guidance is absent.

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

ui_builder_create_designAInspect

Create a design, either from a whole document you supply or by copying an existing design named by fromDesignId. Copying is usually right: a document's catalogPin must match a catalog revision this server serves, and a copy carries one that does. A document whose home is an existing design on this server is refused with a compose-preview-decision/v1 choice to put to the person — or, when your client supports form elicitation on this connection, the person is asked in a form and the call acts on their answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYesThe id for the new design.
documentNoA whole DesignDocumentV1.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
visibilityNoDefaults to the server's configured visibility, which is private unless the operator chose public. Public allows anyone with the link to view; editing still requires explicit access.
fromDesignIdNoCopy this design's document instead.
includeCatalogNoEmbed the pinned catalog in the returned snapshot. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so well. It discloses refusal behavior, the `compose-preview-decision/v1` response, form-elicitation fallback, catalog-pin compatibility requirements, and token/header handling context. These are meaningful operational traits beyond the schema.

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

Conciseness4/5

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

The description is appropriately sized and front-loads the core create action and its two modes. The later sentence about refusal and form elicitation is dense and slightly run-on, but every clause adds relevant procedural information.

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

Completeness4/5

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

For a complex 9-parameter creation tool with an output schema, the description covers the important behavioral context: creation modes, copying preference, catalog constraint, and refusal path. It omits permission/visibility details and some operational edges, but the output schema and parameter schema carry much of that burden.

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

Parameters4/5

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

Schema coverage is high (89%), so the schema already documents most parameters. The description still adds meaningful semantics for `document` and `fromDesignId`, especially around `catalogPin` compatibility and `home`-based refusal, which helps the agent choose between supplying a document and copying one.

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

Purpose4/5

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

It gives a specific verb and resource: create a design. It also clearly separates two creation modes (supply a whole `document` vs copy via `fromDesignId`). However, it does not explicitly differentiate this tool from close siblings such as `ui_builder_fork_design` or `ui_builder_branch_design`, so the sibling distinction is only implicit.

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

Usage Guidelines4/5

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

The description gives strong contextual guidance: copying is usually right, supplied documents must have a compatible `catalogPin`, and a document whose `home` is an existing server design will be refused with a `compose-preview-decision/v1` choice. It does not name alternative sibling tools for copying/forking, so the when-to-use guidance is clear but not fully routed.

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

ui_builder_delete_designAInspect

Delete a design: it moves to the trash with its history, access list, overlay and discussion, and is gone from every listing and tool until ui_builder_restore_design brings it back, which works until restorableUntilEpochMillis in the reply (a day). After that it is purged for good. Only the owner may delete, or an agent acting for the owner: on a design it created itself under its current grant, or on any of the owner's designs when the approver also ticked ui-builder-destructive — never an editor, a viewer, or anybody merely holding a write grant. Without that capability a session can clean up the designs it made and nobody else's; ask for it with request_access when you are asked to delete existing designs. A trashed id cannot be reused until it is restored or purged. Not the released envelope: the contract has no delete, so the reply names the design and its restore deadline.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: it discloses the soft-delete/trash lifecycle, the restore window (restorableUntilEpochMillis, ~a day), permanent purge afterwards, the non-reusable trashed id, and the exact auth conditions. This is far beyond what structured fields provide.

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

Conciseness3/5

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

Front-loaded correctly with the core action, but it is a dense run-on paragraph with many em-dash clauses, and the closing sentence about the 'released envelope' is opaque. Information earns its place but the structure could be tightened.

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

Completeness5/5

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

For a destructive tool with an output schema present, the description covers lifecycle, restore deadline, id reuse, and authorization completely. Nothing an agent needs to call it safely is missing, and return values are delegated to the output schema.

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

Parameters3/5

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

Schema description coverage is 75%, so most parameters are already documented. The description adds only marginal param meaning ('a trashed id cannot be reused' relates to designId) and does not clarify token, agentName, or agentModel beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Opens with a specific verb+resource ('Delete a design') and immediately scopes the operation as a soft delete to trash. It distinguishes itself from the sibling ui_builder_restore_design by naming the counterpart that undoes it.

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

Usage Guidelines5/5

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

Explicitly states when it can be used (owner, or agent acting for the owner under the right grant), the permission needed (ui-builder-destructive), and who is excluded (editors, viewers, mere write-grant holders). It even routes the agent to request_access when the capability is missing.

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

ui_builder_design_accessAInspect

Read who can open a design: its owner, and every actor it has been shared with, each with the role and the actions that grant carries. Only the owner may ask — this is the answer to "who else is in here" and to "what is the id I must name when sharing".

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose a real behavioral trait: the owner-only authorization requirement, which appears nowhere in the schema. It implies read-only via "Read" but adds no rate-limit or error-behavior context, keeping it short of a 5.

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

Conciseness4/5

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

Two tight sentences with the core purpose front-loaded, followed by the auth constraint and usage framing. The quoted phrasings are slightly discursive but each earns its place by clarifying intent.

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

Completeness4/5

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

An output schema exists so return values need no explanation, and the schema documents most parameters. Purpose, authorization, and usage intent are all covered, leaving only minor gaps (no explicit sibling routing) for a read tool of this complexity.

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

Parameters3/5

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

Schema coverage is 75% and the token/agentName/agentModel descriptions already explain themselves well. The description only adds meaning for designId (the id you must name when sharing); the other three params get nothing new, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Read) and resource (who can open a design), and enumerates the payload precisely: owner, every shared actor, each with role and granted actions. This clearly separates it from the mutating sibling ui_builder_share_design, though it never names a sibling explicitly.

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

Usage Guidelines4/5

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

Gives a concrete precondition ("Only the owner may ask") and two motivating scenarios ("who else is in here" and finding the id needed for sharing), which effectively routes the agent here versus share_design. No explicit when-not or named alternatives, so not a 5.

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

ui_builder_diff_designsAInspect

Compare two designs, or two retained revisions of one: nodes added, removed and moved, and properties, modifiers and other fields changed, each with its node id and path (root/slot[index]/node), plus changed document fields (title, environment, state). Works across a design and its fork. b defaults to the current revision of a's design. Values are the protocol's own JSON, ready to send back through ui_builder_apply. Read access to both.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bNo
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
aYes
bYes
nodesNo
countsYes
schemaYes
summaryYes
documentNo
identicalYes
truncatedNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it declares 'Read access to both', explains that output values are protocol JSON ready to be sent back through ui_builder_apply, and notes `b` defaults to `a`'s current revision. It omits auth/permission requirements and any limits, but the read-only and output-shape disclosures are strong.

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

Conciseness4/5

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

Dense but front-loaded: the comparison scope and diff contents come first, with the default and output-consumption notes trailing. Each sentence carries information, though the run-on enumeration of diffed fields is slightly heavy.

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

Completeness4/5

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

An output schema exists so return values need not be spelled out, yet the description still conveys the diff's structure and how to feed results back. For a nested-object, 5-param read tool with no annotations, the coverage of scope, defaults, and read semantics is nearly complete.

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

Parameters4/5

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

Schema coverage is 60%, and the description adds meaning beyond the schema by clarifying that `b` defaults to the current revision of `a`'s design and by describing the node id/path format produced for each change. The token/agentName/agentModel parameters are covered by the schema itself, so this is adequate.

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

Purpose5/5

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

States a specific verb (compare/diff) and resource (two designs or two retained revisions), and enumerates exactly what the diff reports (nodes added/removed/moved, changed properties, modifiers, document fields). This clearly distinguishes it from siblings like ui_builder_compare_branches and ui_builder_compare_reference.

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

Usage Guidelines4/5

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

Explains the comparison modes (two designs, two revisions of one, across a fork) and the default for `b`, giving clear context for when the tool applies. However, it never explicitly excludes or routes against the closely-related compare_branches/compare_reference siblings, leaving that inference to the agent.

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

ui_builder_exportCInspect

Export a design. compose returns the Kotlin the generator writes, or — when the design holds something it cannot express — diagnostics naming each reason. This is the same gate the browser's code pane shows, so an agent and a designer get the same answer about the same design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
formatNoDefaults to compose. Available formats: compose, svg, png, bundle. Check the catalog exportCapabilities.
designIdYes
revisionNo
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses one important behavioral trait: the tool returns either generated code or diagnostics, and it acts as a validation gate matching the browser pane. However, it does not mention permission requirements, token handling, or whether the operation is read-only or has side effects.

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

Conciseness4/5

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

The description is two tight sentences with no wasted words. The first sentence states purpose, the second explains the 'compose' format's outcome and its parity with the browser. It is front-loaded and easy to parse.

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

Completeness3/5

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

The tool has 6 parameters, no annotations, and an output schema. The description covers the 'compose' format's behavior but leaves other formats, permission/token semantics, and revision handling unexplained. With an output schema, return-value details need not be repeated, but the gap around multi-format behavior and access control makes it only partially complete.

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

Parameters3/5

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

Schema coverage is 67%, so some parameters are documented. The description adds meaning for the 'format' parameter by explaining what 'compose' returns, but it does not address the 'token', 'revision', 'agentName', or 'agentModel' parameters. Baseline 3 is appropriate given the schema handles most parameter descriptions.

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

Purpose3/5

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

The description states it 'exports a design' and clarifies the 'compose' format's behavior, but it never mentions the other formats (svg, png, bundle) that the tool actually supports, nor does it distinguish itself from many siblings like ui_builder_render_native or catalog_render_preview. The core verb+resource is present, but the scope is narrower than the tool's real function.

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

Usage Guidelines2/5

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

There is no explicit statement of when to use this tool versus alternatives like ui_builder_render_native, ui_builder_validate, or catalog_render_preview. The description implies it is the code-pane gate, but an agent has to infer that context rather than being told. No exclusions or prerequisites are given.

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

ui_builder_find_design_for_prAInspect

From a pull request back to the design(s) it implements: every design you can read whose implementation record or links name pr, with the implementation status and revision. Then call ui_builder_implementation_status for what the design expects.

ParametersJSON Schema
NameRequiredDescriptionDefault
prYesThe pull request URL, exactly as recorded.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
prYes
schemaYes
designsYes
summaryYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it does disclose meaningful behavior: results are scoped to designs the caller 'can read' (implying permission-filtered, read-only access) and each result carries implementation status and revision. It omits pagination/rate-limit behavior and does not state the read-only guarantee as plainly as an annotation would.

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

Conciseness5/5

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

Two sentences, zero filler, front-loaded with the reverse-lookup purpose followed immediately by the routing hint. Every clause earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description still summarizes the payload (status and revision). For a read-only lookup tool this is nearly complete, though auth/permission nuances around the token are only implied.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning about `pr`: it is matched against the design's implementation record or links, not treated as an opaque id. The token/agentName parameters are left to the schema, which documents them thoroughly.

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

Purpose5/5

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

States a specific reverse-lookup verb and resource: 'From a pull request back to the design(s) it implements.' It names the exact match criterion (implementation record or links naming `pr`) and explicitly contrasts itself with the sibling ui_builder_implementation_status, so an agent can distinguish it without opening any schema.

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

Usage Guidelines4/5

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

Gives clear context — use this to go from PR to design, then follow with ui_builder_implementation_status for what the design expects. It names the follow-up sibling and its condition, but offers no explicit when-not guidance or alternative reverse-lookup paths.

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

ui_builder_fork_designAInspect

Make a new design from one revision of another — yours to edit, owned by you, with its parent recorded: the fork's forkedFrom (design, revision, document digest) and the parent's forks both show in ui_builder_get_links. A fork is not a branch: it never inherits the parent's canonical home and nothing flows back on its own, so tell the person it exists and bring a chosen change back with ui_builder_apply on the parent. Needs write access on this server and read access to the parent.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoThe fork's title. Defaults to the parent's, marked with the revision.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYesThe design to fork.
revisionNoA retained revision. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
newDesignIdNoThe fork's id. Defaults to one derived from the parent; an id already taken is refused.

Output Schema

ParametersJSON Schema
NameRequiredDescription
homeNo
titleYes
schemaYes
summaryYes
designIdYes
revisionYes
forkedFromYes
ancestryRecordedYes

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden, and it does: ownership of the fork, that the parent link is recorded on both sides and surfaces in ui_builder_get_links, that no canonical home is inherited, that no changes flow back automatically, and the required write/read permissions. These are exactly the behavioral traits an agent needs before invoking a state-creating tool.

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

Conciseness4/5

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

Two dense sentences with no filler and the key semantic constraint front-loaded ahead of the mechanics. It is information-rich rather than bloated, though the second sentence is long enough that it could be split for scannability.

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

Completeness5/5

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

For a 7-parameter mutation tool with an output schema, the description covers the semantic behavior (fork vs branch), where fork metadata appears, the access requirements, and the round-trip workflow. Return values are handled by the output schema, so nothing an agent needs is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema, including the token/header distinction and newDesignId collision behavior. The description adds only the general notion of forking 'one revision,' which the schema's revision param already conveys, so the baseline 3 is correct.

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

Purpose5/5

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

States a specific verb+resource ('make a new design from one revision of another') and immediately scopes ownership and parentage. It explicitly distinguishes itself from the closest sibling by declaring 'A fork is not a branch,' so an agent can route between fork_design and branch_design without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance and an exclusion: a fork 'never inherits the parent's canonical home and nothing flows back on its own,' plus the follow-up path ('bring a chosen change back with ui_builder_apply on the parent'). It also states the access precondition (write on this server, read on the parent).

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

ui_builder_get_designAInspect

Read one design: its whole document — nodes, slots, properties, modifiers, state variables and catalog pin — plus the revision to quote as baseRevision when editing it. The catalog the design pins is left out unless includeCatalog is true: it is the same for every design on the pin, ui_builder_list_catalogs serves it, and it is most of the bytes. home, at the top of the reply, is where the design is canonical ({kind: server, url, designId} or {kind: repo, path}): edit it there. It is absent when none is recorded (a design made before homes existed, or on a host with no public origin), and then the canonical home cannot be verified. On hosts with design discussions, unacknowledgedComments is the number of comment threads this actor has not acknowledged; a nonzero count also carries the bounded comments notice.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
revisionNoA past revision. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
includeCatalogNoEmbed the pinned catalog's whole CatalogCapabilityV1 in the snapshot, as the released shape does. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it explains why the catalog is omitted by default (same for every design on the pin, most of the bytes), the `includeCatalog` default, and the exact conditions under which `home` is absent and unverifiable. It stops short of stating auth/permission requirements, though the token semantics live in the schema.

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

Conciseness4/5

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

Front-loaded with the core action and its contents, then the catalog caveat, then the optional output-field notes. Dense and largely waste-free, though the trailing `home` and `unacknowledgedComments` sentences lengthen it beyond what a caller strictly needs to invoke it.

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

Completeness4/5

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

For a read tool with an output schema, the description is complete on invocation and semantics: it flags the two non-obvious fields (`home`, `unacknowledgedComments`), the catalog default, and the revision-to-quote. No annotation coverage means it must carry behavior alone, which it largely does.

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

Parameters4/5

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

Schema coverage is 83% (>80%), so baseline is 3; the description lifts it by adding rationale for `includeCatalog` beyond the schema's terse text and by tying `revision`/`baseRevision` to the edit workflow. It adds value without restating the schema.

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

Purpose5/5

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

States a precise verb and scope — 'Read one design: its whole document — nodes, slots, properties, modifiers, state variables and catalog pin' — and immediately names the editing-relevant payload (`baseRevision`). An agent can distinguish this single-design full-document read from list/diff/check siblings without opening a schema.

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

Usage Guidelines4/5

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

Routes the agent on the catalog decision ('it is ... served by ui_builder_list_catalogs') and tells it what to do with `home` ('edit it there'). It does not explicitly contrast this tool against the other read siblings (list_designs, view, check_design), so the guidance is clear but not exhaustive.

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

ui_builder_get_guidelinesAInspect

Read a design's latest design-guidelines result, whoever ran it — a person in the editor on their own key, ui_builder_check_design on this host's key, or an agent that recorded verdicts with ui_builder_record_guidelines. Returns the record (model, revision, rules asked, verdicts, ranBy), the findings it implies, and stale: true when the design has changed since it was checked.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
staleNo
recordNo
schemaYes
summaryYes
designIdYes
findingsNo
unansweredNo
currentRevisionYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it does meaningful work: it names the returned record fields (model, revision, rules asked, verdicts, ranBy), the implied findings, and the `stale: true` flag with its exact trigger (design changed since checked). It does not cover auth requirements, the token/header path, or any access constraints, leaving a gap for an unannotated tool.

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

Conciseness4/5

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

Front-loaded with the core action and resource, then a second sentence enumerating the return contents and staleness. Two dense sentences with little waste, though the first sentence is long and packs producer routing, return shape, and source-of-truth into one clause.

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

Completeness4/5

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

An output schema exists, so return values needn't be re-explained, yet the description usefully summarizes them and adds staleness semantics that the schema alone would not convey. For a read tool with no annotations the safety profile is low-risk, but auth/token handling is left entirely to the schema.

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

Parameters3/5

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

Schema description coverage is 75%, and the token and agentName/agentModel parameters are documented in the schema. The description adds no parameter-level meaning (designId is bare in both), so this is the baseline 3 where the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb (Read) and resource (latest design-guidelines result) and immediately disambiguates against siblings by naming the three producers — a person, ui_builder_check_design, or ui_builder_record_guidelines. An agent can tell this is the read-side companion to those write/run 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.

Usage Guidelines4/5

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

The 'latest... whoever ran it' framing tells the agent this fetches existing results rather than re-running a check, which implicitly routes it away from ui_builder_check_design. It stops short of an explicit 'use when X, not Y' statement or listing any exclusion, so it is clear context rather than full when/when-not guidance.

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

ui_builder_guidelines_promptAInspect

Read the exact prompt a design-guidelines model is given for a design, before anybody spends a key on it: the rules for the design's platform (Android design guidance from developer.android.com, each with its source), the fixed system prompt, the user message with the design tree and Compose source, the JSON schema the verdicts must follow, a sentence on where each part comes from, and the pictures as image blocks — a Wear screen on its device (and unrolled when it scrolls), a Wear widget in the Samsung and Pixel Watch containers, a phone or tablet design at phone and tablet size. It spends no key. Judge it with your own model, then record the verdicts with ui_builder_record_guidelines so the editor and other agents see them. rendered: false leaves out the pictures and source (and the visual rules), and needs only read access; otherwise it needs the ui-builder-export capability.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
renderedNoAttach native renders and the Compose source. Defaults to true.
revisionNoA past revision. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rulesYes
schemaYes
designIdNo
picturesNo
platformYes
revisionYes
userTextYes
provenanceNo
systemPromptYes
responseSchemaYes
sourceAttachedNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and mostly delivers: it states the call spends no key (cost), spells out access levels ('needs only read access' vs the 'ui-builder-export capability'), and discloses what is returned. It omits rate limits and any failure modes, keeping it out of the top band.

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

Conciseness3/5

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

The purpose is front-loaded, which is good, but the body is a single dense run-on with heavy em-dash nesting and a long parenthetical enumerating every render variant. Much of that enumeration is useful, yet the block is oversized for the task and would benefit from structure.

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

Completeness4/5

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

For a read tool with an output schema (so return shape need not be re-explained), it covers cost, permissions, the rendered/no-rendered branch, and the follow-up recording step. The main gap is that the non-`rendered` parameters (token, revision, agentName, agentModel) get no narrative treatment, but the schema handles them.

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

Parameters4/5

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

Schema coverage is already 83%, so baseline is 3. The description adds real meaning the schema lacks by explaining the consequence of `rendered: false` — it drops the pictures and Compose source (and the visual rules) and lowers the permission requirement. It says nothing extra about token, revision, or the self-reported agent fields, which the schema already documents.

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

Purpose5/5

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

States a precise verb and resource: 'Read the exact prompt a design-guidelines model is given for a design', and enumerates the payload (platform rules, system prompt, user message, JSON schema, images). It explicitly distinguishes itself from the sibling that consumes its output, ui_builder_record_guidelines, so an agent can route between inspecting and recording without opening either schema.

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

Usage Guidelines4/5

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

Gives clear workflow context: use it to inspect the prompt 'before anybody spends a key on it', judge it with your own model, then persist verdicts via ui_builder_record_guidelines. It also branches on the `rendered: false` case. It stops short of an explicit when-not / alternative-tool exclusion, so it is strong but not exhaustive.

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

ui_builder_implementation_statusAInspect

Everything the code side needs to implement a design, in one call: the revision, its links (issue, reference, PR, thread), the implementation PR with its status and whether its previews were found to match, the latest verdict on this revision, and the Compose export with the generator's diagnostics. summary says in one line whether the PR implements this revision and whether it was approved. includeExport: false leaves the Kotlin out and needs only read access; with it the call needs the ui-builder-export capability.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
revisionNoA past revision. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
includeExportNoInclude the Compose export. Defaults to true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
exportNo
schemaYes
summaryYes
designIdYes
revisionYes
implementationNo
latestDecisionNo
implementsRevisionYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it discloses the read-vs-capability-gated behavior of includeExport, summarizes what `summary` reports, and explains the token/header auth model for session grants. It does not state whether the call is read-only overall or mention rate/pagination behavior, so it is good but not complete.

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

Conciseness4/5

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

Front-loaded with the payload summary, then two short sentences covering `summary` and the export/capability gating. Slightly dense and run-on, and the export behavior is touched in both the first and third sentences, but each sentence carries information.

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

Completeness4/5

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

For a composite read tool with an output schema present, the description need not detail return shapes, and it correctly focuses on auth and the export capability gate. An agent has enough to call it correctly; only explicit sibling routing is missing.

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

Parameters4/5

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

Schema coverage is already 83% (baseline 3), and the description adds real meaning on top: it explains the capability implication of `includeExport` and the header-vs-token tradeoff for the `token` parameter. It adds little beyond the schema for designId/revision/agentName.

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

Purpose4/5

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

The description names the resource (a design revision's implementation status) and enumerates exactly what the call returns: revision, links (issue/reference/PR/thread), the implementation PR with status and preview match, latest verdict, and Compose export. That is specific and distinguishes it from narrow siblings like ui_builder_get_links or ui_builder_export, though it never names those alternatives.

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

Usage Guidelines3/5

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

It implies the usage condition (everything needed on the code side to implement a design) and states that `includeExport: false` needs only read access while the default export path requires the ui-builder-export capability. There is no explicit when-to-use-this-vs-another-tool guidance despite many overlapping siblings.

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

ui_builder_list_branchesBInspect

A design's branches, newest first: each one's id, name, owner, status (open, merged, archived), fork revision, head revision and the number of commands a merge would replay; for a merged one the parent revision it landed at, for an archived sibling the branch whose merge superseded it. Read access to the design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
statusNoOnly branches in this state. Defaults to all.
designIdYesThe parent design.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaYes
statusYes
summaryYes
branchesYes
designIdYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses read-only access ('Read access to the design') and the ordering guarantee ('newest first'), plus per-field semantics for merged/archived branches, but says nothing about pagination, result limits, or what happens with large branch sets.

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

Conciseness4/5

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

Two sentences, front-loaded with the resource and its ordering, with zero filler. The long field enumeration is somewhat redundant given an output schema exists, but it is tightly written and scannable.

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

Completeness4/5

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

An output schema covers return values and the schema covers all parameters, so the description's job is scope, ordering, and access — all of which it supplies. Only pagination/volume behavior is left unstated for a moderate-complexity read tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented, including the token/agentName/agentModel fields. The description adds no parameter-level syntax or defaults beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

Names a specific verb+resource ('a design's branches') and enumerates the returned fields, so the agent knows exactly what is being listed. It does not explicitly contrast with near neighbors such as ui_builder_list_revisions or ui_builder_compare_branches, but the 'branches of one design' framing is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no alternative tool is named; the agent must infer from the sibling list that list_revisions/compare_branches are different operations. Only the trailing 'Read access to the design' hints at a precondition.

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

ui_builder_list_catalogsAInspect

List the component catalogs a UI-builder design can pin to. Start here: a design's catalogPin must name a revision this server actually serves, and each catalog's catalogPin here is exactly that. By default a summary of what authoring needs, a few KB rather than the whole capability: per component its id, role, traits, slots as name[min..max]:accepted|roles and properties as name:type, with ! when required and =a|b listing the allowed values; per catalog its export formats and the modifier vocabulary. full: true returns the released CatalogsResponseV1 envelope with adapter status, parity and export notes per component; componentIds narrows either to the components you are about to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoThe whole CatalogCapabilityV1 per catalog, as the released envelope. Defaults to false.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
componentIdsNoOnly these components. Omit for all of them.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose behavior: the default is a summary ('a few KB rather than the whole capability') versus the full CatalogsResponseV1 envelope, and it sketches the returned shape per component and catalog. It does not discuss auth/permission requirements or rate limits, which is a gap, though the operation is read-only and low-risk.

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

Conciseness4/5

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

Front-loads the purpose in the first clause, then layers the prerequisite and mode behavior. The dense format spec for slots/properties (`name[min..max]:accepted|roles`) is long but earns its place as output-interpretation guidance. Slightly heavy overall but not padded.

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

Completeness4/5

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

An output schema exists, so return values need not be exhaustively re-explained, and the description still usefully summarizes the default shape and the full mode. Combined with a fully covered schema, an agent has enough to invoke it correctly; only auth context is left implicit.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema text: `full: true` is characterized as returning the released envelope with adapter status, parity and export notes, and `componentIds` is described as narrowing either mode. That is genuine added semantics for two of the five parameters.

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

Purpose5/5

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

States a specific verb and resource ('List the component catalogs a UI-builder design can pin to') and frames its role relative to sibling concerns by naming the catalogPin prerequisite. An agent can tell this apart from ui_builder_search_components or catalog_library without opening a schema.

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

Usage Guidelines4/5

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

'Start here' plus the explanation that a design's catalogPin must name a revision this server actually serves gives a clear entry-point rationale. It also explains when to use the default summary vs `full: true` vs `componentIds`. It does not explicitly name a competing sibling to use instead, 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.

ui_builder_list_commentsAInspect

Read the discussion on a design: every thread, where each is pinned — a markup stroke, a design node, or a point on the frame — whether it is resolved, and every reply under it. sequence rises on each change and is the cursor to quote to ui_builder_await_comments. Comments are kept beside the design and are never part of it: no node holds them and no export sees them. Each thread carries acknowledgedBy, so you can see what you have already caught up with; say you have read the rest with ui_builder_acknowledge_comment.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and delivers real non-obvious behavior: comments live beside the design and are never part of it ('no node holds them and no export sees them'), `sequence` rises on each change, and threads carry `acknowledgedBy`. It omits auth/permission requirements and any pagination or volume behavior, so it is solid but not exhaustive.

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

Conciseness4/5

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

Front-loaded with the core read purpose, then behavior and sibling routing; no filler sentences. It runs slightly long with three separate behavior clauses, but each carries information an agent would otherwise have to infer.

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

Completeness5/5

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

An output schema exists, so return shape need not be explained; the description instead covers the domain semantics (what a thread is, where it is pinned, that comments are outside the document) and the cursor/acknowledge workflow. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 75%, with token, agentName, and agentModel already documented in the schema, so the schema does the heavy lifting. The description adds no per-parameter syntax or format detail beyond the implicit cursor concept (which is a return field, not an input).

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

Purpose5/5

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

States a specific verb and resource ('Read the discussion on a design') and enumerates the scope of what a thread contains: pin location (markup stroke, design node, frame point), resolved status, and replies. An agent can distinguish it from ui_builder_await_comments and ui_builder_post_comment purely from the description.

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

Usage Guidelines4/5

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

Routes the agent to siblings: 'sequence ... is the cursor to quote to ui_builder_await_comments' and 'say you have read the rest with ui_builder_acknowledge_comment', establishing the read/await/acknowledge workflow. It stops short of an explicit when-to-use-this-instead-of-await rule, so it is strong context rather than a full decision rule.

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

ui_builder_list_designsCInspect

List the UI-builder designs on this server, newest first, with the cursor to continue.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDesigns per page. Defaults to 50.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
cursorNoContinue a previous page.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses ordering ('newest first') and mentions a continuation cursor, but says nothing about default page size behavior beyond the schema, auth requirements (though token param hints at it), or what happens on errors. No annotations to cover the gap, so 2 is warranted.

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

Conciseness4/5

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

A single sentence front-loads the resource and includes ordering and pagination hints. No wasted words, but very terse for a five-parameter tool with no annotations.

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

Completeness2/5

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

With five parameters, no annotations, no output schema (though a cursor return is implied), and a crowded sibling set, this short description leaves important context unaddressed: how to filter, what designs represent versus branches/revisions, and no guidance on the token vs header decision beyond the schema. Incomplete for the tool's complexity.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents limit, token, cursor, agentName, and agentModel in detail. The description only mentions the cursor's role, which is already in the schema. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('List the UI-builder designs') and adds ordering ('newest first') plus a return element ('the cursor to continue'). Clear on what it does, though it does not name or differentiate from siblings like ui_builder_list_branches, ui_builder_list_revisions, or ui_builder_list_catalogs.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance. Given the large family of list_* siblings (list_branches, list_revisions, list_comments, list_catalogs) and get_design, the description does not indicate which listing tool applies when. A reader must infer usage from other tools' definitions.

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

ui_builder_list_revisionsAInspect

A design's retained revisions, newest first: each one's number, who made it, when, the operation that produced it (setProperty ×2, insertNode, undo, restored r3) and its document digest. retention says how far back the history still reaches — older revisions are gone, and get, diff, restore and fork stop at that floor. Page with before. Read access.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoRevisions per page. Defaults to 20.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
beforeNoOnly revisions older than this one; pass the previous reply's `nextBefore`.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaYes
summaryYes
designIdYes
retentionYes
revisionsYes
nextBeforeNo
currentRevisionYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses newest-first ordering, that retention defines a floor beyond which revisions are permanently gone, and that get/diff/restore/fork all stop at that floor. It also marks the operation as read access, which is the key safety signal an agent needs.

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

Conciseness4/5

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

Front-loads the resource and its ordering, then layers in retention and pagination detail in a compact form. The example operation strings add useful concreteness without serious bloat, though the sentence is dense.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out, yet the description still characterizes them helpfully. Combined with pagination and retention-floor context, an agent has enough to call this list tool correctly; only the sibling-routing guidance is thin.

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

Parameters3/5

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

Schema coverage is 83%, so the schema already documents most parameters including the `before` paging cursor and the token/agent fields. The description adds the 'page with before' hint but no syntax or format detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific resource and scope: a design's retained revisions, newest first, with the fields each entry carries. It implicitly distinguishes itself from restore/fork/diff by noting those operations stop at the retention floor, so an agent can tell it apart from the mutation siblings.

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

Usage Guidelines3/5

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

Gives some usage context ('Read access', 'Page with before') and explains the retention floor that bounds this and related operations. However, it never explicitly states when to use this list versus siblings like ui_builder_restore_revision or ui_builder_diff_designs, leaving the routing to inference.

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

ui_builder_list_trashAInspect

The designs in the trash that you could restore — ones you deleted, or ones you own — most recently deleted first, each with who deleted it and its restorableUntilEpochMillis. Use it to undo a ui_builder_delete_design you regret, or to check what a cleanup removed. Takes no arguments.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose real behavior: ordering ('most recently deleted first') and per-item contents (who deleted it, restorableUntilEpochMillis). It omits auth/permission requirements and what happens when the trash is empty.

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

Conciseness4/5

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

Two dense sentences that front-load what the list contains, followed by purpose. The trailing 'Takes no arguments' is an inaccurate throwaway that costs a point but does not bloat the definition.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, yet the description usefully previews the fields an agent will act on. Given zero annotations and a read-only list tool, the only meaningful gaps are pagination/result-size limits and permission context.

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

Parameters3/5

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

Schema coverage is 100%, so the three optional params (token, agentName, agentModel) are already documented and the description needn't repeat them. However, 'Takes no arguments' is an over-broad claim that could lead a header-constrained client to skip the token param; it also adds no semantic value, so only the baseline applies.

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

Purpose5/5

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

States a specific verb+resource+scope: designs in the trash that are restorable, with a note on scope ('ones you deleted, or ones you own'). An agent can distinguish this from ui_builder_list_designs and ui_builder_restore_design without opening a schema.

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

Usage Guidelines4/5

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

Gives two concrete use cases: undoing an ui_builder_delete_design you regret, or auditing what a cleanup removed. It names the delete sibling but never routes to ui_builder_restore_design, the natural next step, so it stops short of explicit when/when-not guidance.

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

ui_builder_merge_branchAInspect

Replay a branch's edits onto its parent's current revision through the same reducer every edit goes through — all or nothing. The reply reports every command: applied with the revision it landed at and any STALE_* notice of what it overwrote, or refused with the rejection code that stopped the run (nothing is then written), plus skippedOperationIds and how many were never tried. Run dryRun: true first: it reports merged: false and wouldMerge (true when every command would land) and writes nothing. Resolve a refusal by passing that command's id in skipOperationIds (skip an undo with what it undoes), or branch again from the parent. On success the branch is merged and its open siblings — branches forked at the same revision — are archived. Needs write access to the parent.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
dryRunNoReplay and report without writing anything: the reply's merged is then false and wouldMerge carries the verdict. Defaults to false.
branchIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
skipOperationIdsNoLogged commands to leave out of the replay.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dryRunYes
mergedYes
schemaYes
summaryYes
branchIdYes
commandsYes
remainingYes
wouldMergeYes
forkRevisionYes
parentDesignIdYes
archivedSiblingIdsNo
parentRevisionAfterYes
skippedOperationIdsNo
parentRevisionBeforeYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the atomic all-or-nothing semantics, the per-command applied/refused reply shape, STALE_* overwrite notices, that a refusal writes nothing, skippedOperationIds semantics, dryRun writing nothing, sibling branches being archived on success, and the required write access to the parent.

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

Conciseness4/5

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

Front-loads the core action and atomicity, then layers reply format, dry-run guidance, and recovery. Dense but nearly every clause earns its place; slightly heavy for a single paragraph.

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

Completeness5/5

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

Even though an output schema exists, the description explains the reply contract (applied/refused, STALE_*, skippedOperationIds, wouldMerge), preconditions like write access to the parent, and recovery paths. 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.

Parameters4/5

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

Schema coverage is 83%, so the schema already documents most parameters. The description adds genuine meaning beyond it, notably how skipOperationIds is used to resolve refusals (skip an undo with what it undoes) and what dryRun changes in the reply, which the schema states more terse-ly.

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

Purpose5/5

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

States a specific verb+resource: replaying a branch's edits onto its parent's current revision through the reducer, all-or-nothing. This is clearly distinguishable from siblings like ui_builder_apply, ui_builder_fork_design, and ui_builder_archive_branch, which do different things to branch state.

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

Usage Guidelines4/5

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

Gives strong procedural guidance: run dryRun:true first, resolve a refusal by passing the command id in skipOperationIds (or branch again from the parent). These are effectively when-to-use and recovery instructions. It stops short of naming alternative sibling tools for the same goal, so it is not a full 5.

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

ui_builder_move_design_homeAInspect

Move a design's canonical home between this server and a repository checkout. This changes real authoritative state: quote the exact baseRevision and current sourceHome from ui_builder_get_design, provide a stable operationId, and name the new targetHome. The old server record remains as a retained copy pointing at the new home. The reply is an idempotent operation outcome with the new revision; a stale revision or changed source home is refused rather than overwriting a concurrent move. Unless the person already chose this move, call first with dryRun: true: it changes nothing and returns the choices to put to them — or, when your client supports form elicitation on this connection, asks them in a form and, if they choose to move, returns this move's outcome.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
dryRunNoValidate and return the person's choices without changing anything.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
sourceHomeYesThe exact current DesignHomeV1, or null when the design is unhomed.
targetHomeYes
operationIdYesYour stable id; makes a retry idempotent.
baseRevisionYesThe exact current revision read from the design.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses that this changes authoritative state, that the old server record is retained as a pointer copy, that the reply is an idempotent outcome carrying a new revision, and that stale revisions or a changed source home are refused rather than overwriting a concurrent move.

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

Conciseness4/5

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

Purpose is front-loaded and most sentences earn their place, but the final sentence packing dry-run, form elicitation, and conditional return-outcome is dense and slightly overloaded. Still efficient overall for a complex mutation tool.

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

Completeness5/5

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

An output schema exists so return values need not be explained, and the description fills the remaining gaps for a state-changing concurrency-sensitive tool: preconditions, idempotency, conflict refusal, and dry-run options. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 78% (baseline 3). The description adds meaning by tying baseRevision and sourceHome to exact values read from get_design, characterizing operationId as a stable id for idempotent retry, and explaining dryRun's no-op behavior, which the schema alone states only briefly.

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

Purpose5/5

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

States a precise verb+resource ('Move a design's canonical home between this server and a repository checkout'), which is clearly distinct from siblings like ui_builder_rename_design, fork_design, or branch_design. An agent can tell what the tool does without opening the schema.

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

Usage Guidelines5/5

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

Names the prerequisite read (ui_builder_get_design) and which values to quote from it, plus explicitly instructs calling with dryRun: true first unless the user already chose the move. This gives both when-to-call and a decision route for the dry-run case.

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

ui_builder_openUI BuilderBInspect

Open the UI Builder's design list: pick a design to see it as the editor draws it. Takes no arguments. Also opens from the ChatGPT/Codex sidebar, and a deep link to /design/ opens one design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose genuinely useful behavior beyond the schema: this is a UI-opening/navigation action, not a data fetch, and it can be entered from the sidebar or a /design/<id> deep link. However, it omits any auth or session context even though a token parameter exists, and the claim 'Takes no arguments' is inaccurate against the schema.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, and the description is short with no padding. The one wasted-and-inaccurate sentence is 'Takes no arguments,' which costs it a point.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. But for a tool whose schema includes a session-grant token tied to poll_access, the description says nothing about the auth path and instead asserts there are no arguments, leaving an agent without guidance on the token parameter.

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

Parameters2/5

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

Schema description coverage is 100%, so the baseline would be 3. But the description's statement 'Takes no arguments' actively contradicts the schema, which defines three optional parameters (token, agentName, agentModel), and it adds no meaning about the token/auth flow the schema describes. Misleading param framing pushes this below the baseline.

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

Purpose4/5

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

States a specific verb and resource: 'Open the UI Builder's design list.' It also clarifies the follow-on behavior ('pick a design to see it as the editor draws it') and mentions the deep-link path. It does not explicitly distinguish itself from close siblings like ui_builder_view or ui_builder_list_designs, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied: open the builder when you want to see designs as the editor renders them. The other sentences describe alternate entry points (ChatGPT/Codex sidebar, /design/<id> deep link) rather than when to choose this tool over ui_builder_view, ui_builder_list_designs, or ui_builder_get_design. No when-not guidance or explicit alternative is given.

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

ui_builder_pick_branchAInspect

Ask the person which alternative (open branch) of a design to keep, and return their choice. In ChatGPT or Codex it is a thumbnail picker, one option per branch; with plain form elicitation it is a single-choice form; otherwise — and in chat tools like Slack — it returns a numbered list and one picture for YOU to post, and the person replies with a number. It never waits on a client that cannot answer. outcome is chosen (with branchId), declined, ask-in-chat or no-branches. Writes nothing: merge the chosen branch with ui_builder_merge_branch (dryRun first). Read access to the design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
inlineNoWith a numbered list, also return its picture as an image block.
messageNoThe question to put to the person. Defaults to asking which alternative to keep.
designIdYesThe parent design.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
branchIdsNoOnly these open branches, in this order. Defaults to every open branch, oldest first.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
viaNo
imageNo
schemaYes
optionsNo
outcomeYes
summaryYes
branchIdNo
designIdYes
imageBase64No

TDQS

A4.3/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden, and it does so well: 'It never waits on a client that cannot answer' discloses graceful degradation, 'Writes nothing' plus 'Read access' declares the safety profile, and the four outcome values (chosen/declined/ask-in-chat/no-branches) tell the agent exactly what terminal states to handle.

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

Conciseness4/5

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

Front-loaded with the core action and its outcome, then the client-dependent rendering rules. The long middle clause packs several modalities into one sentence, which is dense but each clause carries distinct information; little is wasted.

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

Completeness4/5

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

With an output schema present the description needn't explain return values, and it still enumerates the outcome states and the degradation behavior. Combined with 100% schema coverage this is nearly complete, though it could have noted prerequisites for branch availability (e.g., requiring open branches).

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters (token, branchIds, message, etc.), including the token-preference guidance. The description adds no parameter-level detail beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Ask the person which alternative (open branch) of a design to keep, and return their choice'), plus the exact scope (open branches). An agent can distinguish it from siblings like ui_builder_merge_branch and ui_builder_await_decision without opening a schema.

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

Usage Guidelines4/5

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

Explains the modality-dependent behavior (thumbnail picker in ChatGPT/Codex, single-choice form, numbered list elsewhere including Slack) and routes the agent to the follow-up step: 'merge the chosen branch with ui_builder_merge_branch (dryRun first)'. It gives clear context but doesn't explicitly state when to prefer this over ui_builder_await_decision or when this step is unnecessary.

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

ui_builder_post_commentAInspect

Say something on a design — a reply into threadId, or a new thread when it is omitted. Pin a new thread with markId (a stroke on the reference overlay), nodeId (a node in the design), or x/y in frame fractions, so the person reading it can see what you meant. The comment is attributed to your own grant; you cannot post as somebody else.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoPin to a point on the frame, 0..1 across.
yNoPin to a point on the frame, 0..1 down.
bodyYes
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
markIdNoPin to a markup stroke on the reference.
nodeIdNoPin to a design node.
designIdYes
threadIdNoReply into this thread. Omit to start one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
displayNameNoThe name to show beside your actor id.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses an attribution constraint ('attributed to your own grant; you cannot post as somebody else'), but says nothing about required permissions, whether the comment is immediately visible, or failure behavior for an 11-parameter mutation tool.

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

Conciseness5/5

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

Three sentences, front-loaded with the core action before pinning options and attribution. Every sentence carries information an agent needs, with no filler.

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

Completeness4/5

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

An output schema exists, so return values need not be described. The description covers both posting modes, all pinning strategies, and attribution, which is adequate for correct invocation; only permission/error context is missing for a mutation tool with no annotations.

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

Parameters3/5

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

Schema description coverage is 82%, so the baseline is 3. The description reinforces the meaning of threadId, markId, nodeId, and x/y (frame fractions) and gives a rationale for pinning, but largely restates what the schema already documents and adds no syntax beyond it.

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

Purpose5/5

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

The description states a concrete verb+resource (posting a comment on a design) and immediately distinguishes its two modes: a reply into `threadId` versus a new thread when it is omitted. This clearly separates it from read/management siblings like ui_builder_list_comments, ui_builder_react_to_comment, and ui_builder_resolve_comment_thread.

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

Usage Guidelines4/5

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

It gives explicit conditions for the two invocation modes (supply `threadId` to reply, omit it to start a thread) and explains the three ways to pin a new thread (markId, nodeId, or x/y). It stops short of naming alternative tools or stating when not to use this one, so it is clear context without exclusions.

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

ui_builder_preview_catalog_recoveryAInspect

Dry-run recovery of a design whose stored catalog pin no longer resolves. The server selects the exact currently served pin for the same catalog system and returns a CatalogUpgradePreviewV1 with changes, issues and the hashes required by a later upgradeCatalog mutation through ui_builder_apply. This call never writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the safety burden and does so well by stating 'Dry-run' and 'This call never writes.' It also describes the returned preview artifact and its role as preparation for a later mutation, though it does not mention authentication or token requirements beyond what the 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.

Conciseness5/5

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

Three tight sentences, front-loaded with the core dry-run recovery purpose, followed by return details and the non-write guarantee. Every sentence earns its place.

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

Completeness4/5

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

Given that an output schema exists, the description needn't explain return values in depth, but it helpfully names CatalogUpgradePreviewV1 and its key contents. Combined with the no-write statement and the apply relationship, this is nearly complete for a preview tool, with only minor auth/prerequisite context left to the schema.

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

Parameters3/5

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

Schema coverage is 75%, with token, agentName, and agentModel documented in the schema. The description mentions the design and catalog context but adds no parameter-level details, and designId itself has no schema description, so the description does not compensate for that gap.

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

Purpose5/5

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

The description states a specific operation ('Dry-run recovery') and resource ('a design whose stored catalog pin no longer resolves'), and it distinguishes the tool from the later mutation by naming `upgradeCatalog` through ui_builder_apply. An agent can tell this is the non-mutating recovery preview, not the apply step.

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

Usage Guidelines4/5

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

It clearly identifies the triggering scenario ('whose stored catalog pin no longer resolves') and explains the intended follow-up path through ui_builder_apply. It stops short of explicit when-not-to-use guidance, but the context strongly implies the correct usage condition.

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

ui_builder_put_assetAInspect

Put a picture behind an assetKey, so an asset/image node naming that key draws it instead of a placeholder. Send the PNG, JPEG, GIF or WebP bytes base64-encoded in imageBase64; the server stores them by content digest and pins {mediaType, contentDigest, source: uploaded} into the design's assets map under the key. This moves the design's revision, and the reply carries the new one to quote as baseRevision. Idempotent by content — the same bytes under the same key change nothing. Put the picture first, then insert the asset/image node with ui_builder_apply: the reducer refuses a key that is neither pinned in the design nor in the catalog's own registry. A pinned key whose bytes a lane cannot show renders as a visible placeholder, never as an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
assetKeyYes1 to 64 characters of letters, digits, '.', '_' or '-'; what the node's assetKey property names.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
imageBase64YesThe image bytes, base64. At most 1 MiB decoded.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses storage by content digest, the exact map entry pinned ({mediaType, contentDigest, source: uploaded}), that the design revision advances and the new one returns as baseRevision, idempotency by content, and the failure/placeholder semantics. This is unusually rich behavioral disclosure.

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

Conciseness5/5

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

Front-loaded with purpose and effect, then mechanism, then the sequencing requirement, then edge-case behavior. Every sentence carries distinct information with no filler, despite the density.

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

Completeness5/5

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

For a mutation tool with an output schema present, the description supplies everything an agent needs: input format, side effects on the revision, idempotency, and the coordination constraint with ui_builder_apply. Return values are covered by the output schema and only the salient baseRevision is restated.

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

Parameters4/5

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

Schema coverage is 83%, so the baseline is 3, but the description adds meaning beyond it: accepted formats (PNG/JPEG/GIF/WebP), that bytes are base64-encoded, and how assetKey ties to the node's assetKey property. It stops short of documenting the optional token/agentName/agentModel parameters, which the schema already handles.

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

Purpose5/5

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

States a specific verb (put), resource (a picture behind an assetKey), and the downstream effect (an asset/image node draws it instead of a placeholder). It also names the sibling it cooperates with (ui_builder_apply), so an agent can place it in the workflow without opening other schemas.

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

Usage Guidelines5/5

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

Explicitly prescribes ordering ('Put the picture first, then insert the asset/image node with ui_builder_apply') and gives the precondition that makes the call succeed: the reducer refuses a key neither pinned in the design nor in the catalog registry. When-to-use is fully covered for this step.

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

ui_builder_react_to_commentAInspect

React to one comment with an emoji, or take the reaction back with on: false. The lightest thing you can say: 👀 on a comment you have just picked up, 👍 on a fix somebody made, where a reply would be noise in a thread a person has to read. commentId is the id of a comment inside a thread, from ui_builder_list_comments. Reacting also acknowledges that thread for you, so it counts as the lightest acknowledgement; it says nothing about whether the question is settled.

ParametersJSON Schema
NameRequiredDescriptionDefault
onNoFalse takes your reaction back. Defaults to true.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
reactionYesOne emoji, at most 24 characters.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
commentIdYesThe comment to react to, from its thread's `comments`.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it does disclose key behavior: on:false is reversible, reacting has a side effect (it 'acknowledges that thread for you'), and it is bounded ('says nothing about whether the question is settled'). It does not address auth/permission requirements beyond pointing at the token parameter's schema text.

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

Conciseness4/5

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

The action is front-loaded in the first clause, and the emoji examples earn their place by illustrating the intended usage. It is somewhat conversational and longer than strictly necessary, but no sentence is pure filler.

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

Completeness4/5

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

An output schema exists, so return values need not be described. The description covers the action, its inverse, its side effect, and where commentId comes from, which is sufficient for a 7-parameter tool whose remaining params are documented in the schema.

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

Parameters4/5

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

Schema description coverage is 86%, so the baseline is 3, but the description adds provenance the schema lacks: commentId 'is the id of a comment inside a thread, from ui_builder_list_comments'. The on:false behavior and reaction semantics are largely restated from the schema, so the gain is modest.

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

Purpose5/5

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

States a specific verb and resource ('React to one comment with an emoji') plus the inverse action ('take the reaction back with on: false'). It distinguishes itself from siblings by naming its role as 'the lightest acknowledgement', implicitly contrasting with a full reply or explicit acknowledge.

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

Usage Guidelines4/5

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

Gives concrete when-to-use examples ('👀 on a comment you have just picked up, 👍 on a fix somebody made') and a when-not condition ('where a reply would be noise in a thread a person has to read'). It stops short of explicitly naming the alternative tools (ui_builder_post_comment, ui_builder_acknowledge_comment), so routing is inferred rather than stated.

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

ui_builder_record_decisionAInspect

Record a review verdict — approve or reject — on one revision of a design, with an optional note. Kept beside the design, like comments: it never moves the revision. Recorded as an agent's decision, so a person waiting with ui_builder_await_decision's default from: "human" is not answered by it. Pass your own decisionId to make a retry idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoWhy, in a sentence or two.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
verdictYes
designIdYes
revisionYesThe revision the verdict is about.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
decisionIdNoYour id for this decision; makes a retry idempotent.
displayNameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
latestNo
schemaYes
summaryYes
approvedYes
designIdYes
sequenceYes
timedOutYes
decisionsNo

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the side-effect scope ('kept beside the design, like comments: it never moves the revision'), the authorship semantics (recorded as an agent's decision), the audience limitation relative to await_decision, and idempotency behavior. These are exactly the traits an agent needs before invoking a mutation-like record call.

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

Conciseness5/5

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

Four tight sentences, front-loaded with verb+resource and scope, then audience semantics, then the idempotency tip. Every sentence carries distinct information; nothing is repeated from the name or title.

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

Completeness4/5

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

An output schema exists so return values need no explanation, and the description covers side effects, audience, and idempotency for a 9-parameter tool. The remaining gap is authorization context — the token/header interaction is left to the schema's token description rather than summarized here — which keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 67% across 9 parameters, so the schema already documents the subtle ones (token, note, revision, agentName/agentModel). The description adds meaning only for decisionId (idempotency), which the schema also states, and names the two verdict values already in the enum. It does not compensate for the undocumented remainder, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Record a review verdict — approve or reject — on one revision of a design') and immediately distinguishes it from the nearest sibling by noting it never moves the revision and does not satisfy ui_builder_await_decision's human waiter. An agent can separate this from post_comment, apply, and await_decision without opening a schema.

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

Usage Guidelines4/5

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

Gives clear context for when this is the right call (recording an agent's verdict beside a design) and an explicit when-not: it will not answer a person waiting on ui_builder_await_decision with from: "human". It also states the retry condition (pass your own decisionId to make a retry idempotent). It does not name a direct alternative for the human-waiting case beyond the implication, so it falls short of a full routing rule.

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

ui_builder_record_guidelinesAInspect

Record your own model's verdicts on ui_builder_guidelines_prompt as the design's latest design-guidelines result, so the editor's Issues panel and other agents show them. Pass the revision and rule ids the prompt asked (rules.asked[].id), and one verdict per rule you answered: pass, fail or not_applicable, with confidence 0..1, the nodeIds it is about and a one-sentence reason. ranBy is taken from your credential. Returns what ui_builder_get_guidelines returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
askedYesThe rule ids the prompt asked.
modelYesThe model that judged it, e.g. anthropic/claude-haiku-5.5.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
revisionYesThe revision the prompt was built from.
verdictsYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
rulesVersionNoThe prompt's `rules.version`. Defaults to this host's.

Output Schema

ParametersJSON Schema
NameRequiredDescription
staleNo
recordNo
schemaYes
summaryYes
designIdYes
findingsNo
unansweredNo
currentRevisionYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden, and it does add real context: verdicts become the design's latest result visible to the editor and other agents, `ranBy` is derived from the credential rather than supplied, and the return mirrors ui_builder_get_guidelines. It does not describe failure modes, idempotency, or how the token/header auth interacts, which keeps it short of a 5.

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

Conciseness4/5

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

Front-loaded with the core purpose, then the required inputs, then the return. It is dense but each clause maps to a real field or behavior; the only minor cost is that the middle sentence is packed with several field explanations at once.

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

Completeness4/5

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

Given 9 parameters, a nested verdicts object, and an output schema that already governs return values, the description covers the workflow and the credential-derived `ranBy` well. It omits explicit permission requirements, but nothing an agent needs to invoke it correctly is glaringly missing.

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

Parameters3/5

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

Schema description coverage is 78%, so the schema already documents most parameters. The description reinforces the verdict shape (pass/fail/not_applicable, confidence 0..1, nodeIds, one-sentence reason) and ties `asked` to the prompt's `rules.asked[].id`, but much of this repeats the nested schema rather than adding new meaning.

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

Purpose5/5

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

States a specific verb and resource: recording the model's verdicts as the design's latest design-guidelines result. It clearly separates itself from the requesting sibling (ui_builder_guidelines_prompt) and the reading sibling (ui_builder_get_guidelines) by naming both the input prompt and the equivalent return.

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

Usage Guidelines4/5

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

It explains the context of use – verdicts on the prompt asked by ui_builder_guidelines_prompt, recorded so the Issues panel and other agents see them. The workflow (answer the prompt, then record one verdict per rule) is clear, though there is no explicit 'do not use this when...' exclusion.

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

ui_builder_rename_designAInspect

Give a design a new title. The title is the one thing about a design nothing else could change: it is set at creation, shown in every listing and the editor, and not part of any mutation. Anybody who may write the design may rename it. The revision does not move — a title is not design content — so baseRevision is not needed and an edit in flight is unaffected. Not the released envelope: the contract has no rename, so the reply is the design's listing entry with its new title.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: title is set at creation, shown in listings/editor, not design content, requires write access, does not move the revision, leaves in-flight edits unaffected, and returns the design's listing entry. This is well beyond what structured fields provide.

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

Conciseness4/5

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

Front-loaded with the core action in the first sentence, then layered detail. Most sentences earn their place, though the 'Not the released envelope: the contract has no rename' phrasing is somewhat convoluted and could be tighter.

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

Completeness5/5

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

For a rename tool with an output schema, the description covers the safety profile (permission requirement), revision semantics, and side-effect scope, so 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.

Parameters3/5

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

Schema coverage is 60%, and the description explains only the absence of baseRevision and the title's semantics, not syntax for title/designId. The token, agentName, and agentModel params are documented in the schema itself, so the description adds only marginal parameter meaning.

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

Purpose5/5

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

States a specific verb and resource ('Give a design a new title') and immediately distinguishes it from sibling mutations by noting the title is 'not part of any mutation' and that the revision does not move. An agent can separate this from ui_builder_apply or ui_builder_replace_design_document without opening their schemas.

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

Usage Guidelines3/5

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

Gives a permission condition ('Anybody who may write the design may rename it') and explains why baseRevision is not needed, which is useful context. However, it never explicitly routes the agent away from an alternative (e.g., why not a mutation or replace), leaving when-to-use largely implied.

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

ui_builder_render_design_matrixAInspect

See one design on several devices in ONE picture: a contact sheet with a captioned cell per device × theme × font scale, plus each cell's device, size and box on the sheet. Nothing is saved — the design's environment is swapped on a scratch copy for each cell. Name devices by preset (phone_small, phone, phone_landscape, foldable_folded, foldable_unfolded, tablet_portrait, tablet_landscape, wear_small_round, wear_large_round, wear_square, tv_1080p, widget_small_round, widget_small_squircle, widget_small_rectangular, widget_large_round, widget_large_squircle, widget_large_rectangular) or as {widthDp, heightDp, label?, round?}; or a formFactor (phone, foldable, tablet, wear, tv, widget, adaptive) for its default set; with neither you get the design's own form factor — phone, foldable and tablet for a mobile catalog, the round watches for Wear, and for a Wear widget (a widget-container-* root) its own container in each widget host: Samsung round, Pixel Watch squircle and rectangular, at the container's frame. Widget host cells are drawn natively in that host when the caller holds ui-builder-export and the host has a native lane (renderer: "native"); otherwise by the editor's export, masked to the host's outline. Add themes: ["light","dark"] and fontScales: [1, 2] to cross them; at most 16 cells. The sheet is a short-lived signed https link kept under 3.5 MB, so a chat surface can show it inline; inline: true puts the bytes in the reply as well.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
inlineNoAlso return the PNG as an image block. Defaults to false; a host with no public origin always does.
themesNoDefaults to the design's own theme.
devicesNoDevices to draw. Omit for the form factor's defaults.
designIdYes
revisionNoA past revision. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
fontScalesNoDefaults to the design's own font scale.
formFactorNoA default device set, instead of `devices`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
cellsYes
imageYes
schemaYes
columnsYes
summaryYes
designIdYes
revisionYes
imageBase64No

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: 'Nothing is saved — the design's environment is swapped on a scratch copy for each cell', a 16-cell ceiling, output as a short-lived signed https link kept under 3.5 MB, `inline: true` returning bytes, and the native/masked rendering condition tied to the ui-builder-export grant. These are exactly the traits an agent needs and none are 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.

Conciseness3/5

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

The key value proposition is front-loaded in the first clause, but the body is a single dense run-on that re-enumerates all 17 device presets already present in the schema enum, which is redundant with structured data. The remaining content earns its place, but the wall-of-text form and duplicated enum hurt scanability.

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

Completeness4/5

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

For a 10-parameter tool with no annotations, the description covers the important unknowns: output form and size cap, the no-persistence guarantee, the 16-cell limit, and the conditional native-rendering lane. With an output schema present it needn't explain return values, and the remaining parameter details (token, revision, agentName) are handled in the schema.

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

Parameters4/5

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

Schema coverage is already 90%, so baseline is 3, and the description adds real meaning on top: it explains what each `formFactor` default set contains, how `themes`/`fontScales` cross-multiply against devices, and the at-most-16-cells constraint that governs the combination. It does restate the device preset enum, which the schema already lists.

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

Purpose5/5

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

The description names a specific verb and artifact — 'See one design on several devices in ONE picture: a contact sheet with a captioned cell per device × theme × font scale' — and the scratch-copy/no-save scope implicitly separates it from ui_builder_render_native and ui_builder_export. An agent can tell what this produces without opening the schema.

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

Usage Guidelines4/5

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

It gives concrete selection rules for inputs: name `devices` by preset or {widthDp,heightDp}, or pass a `formFactor` for its default set, and with neither you get the design's own form factor (with per-family defaults spelled out for mobile, Wear and Wear widgets). It also states the native-vs-editor lane condition (caller must hold ui-builder-export). What's missing is any explicit routing to a sibling tool for the cases this one doesn't cover.

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

ui_builder_render_nativeAInspect

Compile a design and render it with real Compose on this host, rather than in the browser's Wasm canvas — the way to see what a design looks like on Android. Returns the first frame, the token the live frame stream is opened with, and the design node ids the render is tagged with, so catalog_get_preview_data can report each node's bounds and a client can put selectable regions over the image. This host has a native render lane. The reply is not an McpResponseEnvelopeV1: the released contract defines no request type for a native render.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
revisionNoA past revision. Omit for the current one.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the load well: it discloses a host precondition (native render lane required), an auth path (handling tokens you cannot set as headers), and a significant protocol anomaly (the reply is not an McpResponseEnvelopeV1). It does not discuss failure modes, resource cost of compiling, or whether the token must be pre-approved, so it is strong but not exhaustive.

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

Conciseness4/5

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

Front-loaded with the core action and the native-vs-Wasm distinction, and each sentence carries new information (return shape, downstream consumer, protocol caveat). The long em-dash clauses make it denser than necessary but nothing is padding.

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

Completeness4/5

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

For a 5-param tool with no annotations but an output schema, the description supplies the missing behavioral context: auth token provenance, host precondition, and the fact that the response is not an envelope. Given the output schema covers return values, this is near-complete, with only error/edge behavior left unstated.

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

Parameters3/5

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

Schema description coverage is 80%, so the schema already documents token, revision, agentName, and agentModel. The description largely restates the token concept and otherwise adds no syntax, defaults, or format guidance for parameters, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource (compile a design and render it) and pins the distinguishing axis against siblings: native Compose on the host rather than the browser's Wasm canvas. The Android framing and the mention of the native render lane let an agent tell this apart from catalog_render_preview or ui_builder_render_design_matrix without opening a schema.

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

Usage Guidelines4/5

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

Clearly states the condition that selects this tool (you want to see the design as it appears on Android, via the host's native lane, not the Wasm canvas) and names catalog_get_preview_data as a downstream consumer for node bounds. It stops short of explicitly naming the render siblings to avoid, so it is not a full when/when-not routing statement.

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

ui_builder_replace_design_documentAInspect

Replace one stored design from a complete DesignDocumentV1 copy — the authoritative save-back and re-import operation. The document must name the same design and the same canonical home you read from ui_builder_get_design; baseRevision must still be current. The runtime validates the complete document and quotas, preserves server-owned identity, access and creation time, retains the old revision, and broadcasts a whole snapshot. Retry with the same operationId; never invent a new id after a lost response. Unless the person already chose to save back or re-import onto this home, call first with dryRun: true: it changes nothing and returns the choices to put to them — or, when your client supports form elicitation on this connection, asks them in a form and returns the outcome of the write they chose.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
dryRunNoValidate and return the person's choices without changing anything.
designIdYes
documentYesThe complete replacement DesignDocumentV1, including the existing home.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
operationIdYesYour stable id; makes a retry idempotent.
baseRevisionYesThe exact current revision being replaced.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so richly: it discloses server-side validation against quotas, preservation of server-owned identity/access/creation time, retention of the old revision, whole-snapshot broadcast, and idempotent retry semantics via operationId. It also clarifies that dryRun changes nothing.

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

Conciseness4/5

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

Dense but front-loaded: the core replace action and its scope open the description, followed by preconditions, side effects, and the dryRun routing rule. It is long and slightly packed, but nearly every clause conveys actionable constraint rather than filler.

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

Completeness5/5

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

Given an output schema exists (return shape need not be explained), a mutation-style tool with nested document input and 8 params is fully covered: preconditions, side effects, quota validation, retry, and dryRun/elicitation behavior are all present.

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

Parameters4/5

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

Schema coverage is high (88%), so the baseline is 3, but the description adds real meaning beyond the schema: baseRevision must still be current, document must match the design and canonical home, operationId is the retry key that must be reused, and dryRun validates/returns choices without writing.

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

Purpose5/5

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

States a specific verb and resource ('Replace one stored design from a complete DesignDocumentV1 copy') and positions it precisely among siblings as 'the authoritative save-back and re-import operation,' distinguishing it from create/apply/fork/move tools without needing their schemas.

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

Usage Guidelines5/5

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

Gives explicit preconditions (document must name the same design and canonical home read from ui_builder_get_design; baseRevision must still be current) and an explicit routing rule: unless the person already chose to save back, call first with dryRun: true, describing both the elicitation and non-elicitation paths. It also names the exact retry condition and warns against inventing a new operationId.

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

ui_builder_resolve_comment_threadAInspect

Close a comment thread once it is answered, or reopen one by passing resolved: false. The resolution is attributed to you and is reversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
resolvedNoDefaults to true.
threadIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose two key mutation traits: the resolution is attributed to the caller and it is reversible. It omits permission/auth requirements and any side effects on other viewers, so it is good but not rich.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the primary action and immediately followed by the inverse case. Every clause earns its place with no filler.

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

Completeness4/5

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

An output schema exists, so return values need not be described. Purpose, trigger condition, and reversibility/attribution are covered; only the auth path (token vs header) and any multi-viewer effects are left to the schema, which is acceptable.

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

Parameters4/5

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

Schema coverage is 67%; the description adds meaning the schema lacks by explaining that `resolved: false` reopens rather than merely defaulting to true. token/agentName/agentModel are already documented in the schema, and designId/threadId are self-evident identifiers, so no major gap remains.

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

Purpose4/5

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

States a specific verb and resource ('Close a comment thread') and covers the inverse action ('reopen... by passing resolved: false'), which distinguishes it from the other comment siblings like post/acknowledge/react. It never explicitly names an alternative sibling, so differentiation is implicit rather than stated.

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

Usage Guidelines3/5

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

'Close a comment thread once it is answered' gives a usable trigger condition, and the reopen case is described. However it offers no guidance on when to prefer this over ui_builder_acknowledge_comment or react_to_comment, and no exclusions.

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

ui_builder_restore_designAInspect

Bring a deleted design back out of the trash exactly as it was: the same revision, history, access list, overlay and discussion. Allowed to whoever could have deleted it, until its restorableUntilEpochMillis; after that it is not found. The reply is the design's listing entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it delivers: the authorization rule, the restore scope/state effect, and a temporal expiry after which the resource is 'not found'. It adds real behavioral context beyond a bare 'restore'. Rate-limit or idempotency behavior is unstated, keeping it from a 5.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the action and its effect, then the constraint and the return shape. No filler or hedging.

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

Completeness5/5

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

For a restore operation with an output schema present, this covers the effect, authorization, and expiry window, and even notes the reply type. An agent has everything needed to decide and call correctly.

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

Parameters3/5

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

Schema coverage is 75%, and the schema already documents token, agentName and agentModel; designId is self-evident as the required target. The description adds no format, syntax, or usage detail for any parameter, so the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource: bringing a deleted design back out of the trash, and enumerates exactly what is restored (revision, history, access list, overlay, discussion). This clearly distinguishes it from sibling ui_builder_restore_revision, which is a different operation.

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

Usage Guidelines4/5

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

Gives clear conditions: allowed to whoever could have deleted it, valid until restorableUntilEpochMillis, and after that it is not found. This is strong when/when-not guidance, though it never names the sibling restore_revision to explicitly route the agent away from it.

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

ui_builder_restore_revisionAInspect

Make a retained revision the design's current content again, forward: it is committed as a new revision and nothing after it is lost, so a restore is undone by restoring again. baseRevision must be the current revision (a restore that raced an edit is refused as stale). dryRun: true writes nothing and returns the diff the restore would apply. Needs write access to the design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
dryRunNoReturn the diff without restoring. Defaults to false.
designIdYes
revisionYesThe retained revision to restore.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
operationIdNoMakes a retry idempotent. Defaults to a fresh id.
baseRevisionYesThe design's current revision, from ui_builder_get_design or ui_builder_list_revisions.

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
staleYes
dryRunYes
schemaYes
appliedYes
summaryYes
designIdYes
revisionYes
operationIdNo
baseRevisionYes
documentDigestNo
currentRevisionYes
committedRevisionNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it explains forward-commit semantics (nothing after the revision is lost, a restore is undone by restoring again), the stale-race refusal, that dryRun writes nothing, and the required write access. This is meaningful behavioral disclosure well beyond the schema.

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

Conciseness5/5

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

Three dense sentences that are front-loaded with the core semantic (forward restore) before the guard condition and dryRun note. No filler, and bolding highlights the key terms.

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

Completeness5/5

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

An output schema exists, so return values need not be spelled out, yet the description still notes dryRun returns the diff. For a mutation with eight parameters, the description supplies the mutation semantics, staleness rule, auth need, and preview path — enough for an agent to call it correctly.

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

Parameters4/5

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

Schema coverage is already 88%, so the baseline is 3, but the description adds real meaning: baseRevision must be the current revision and a stale value is refused, and dryRun's no-write/diff-returning behavior. It still does not clarify the revision integer's relationship to baseRevision ordering beyond the staleness rule.

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

Purpose5/5

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

States a specific verb (restore) and resource (retained revision) plus the resulting state change: the revision becomes the design's current content. Readily distinguishable from siblings like ui_builder_list_revisions or ui_builder_get_design, which are read-only lookups.

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

Usage Guidelines4/5

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

Gives clear operating context: baseRevision must be the current revision, and dryRun: true is the way to inspect the change first. It names where to get baseRevision (ui_builder_get_design / ui_builder_list_revisions) but does not explicitly state when NOT to use this versus alternatives such as replace_design_document.

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

ui_builder_search_componentsAInspect

Find catalog components by id, display name, Compose symbol, role or trait, e.g. TextField, text field, OutlinedTextField, Button, Card. Case, spaces, hyphens, underscores, slashes and camelCase are ignored, and the components the query names come first: an exact name, then a prefix, then a name containing it, then role and traits. Returns the same summary as ui_builder_list_catalogs (id, role, traits, slots, properties, and the catalog pin) for only the matches, so you don't pay for the whole catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText to look for in a component's id, display name, Compose symbol, role or traits.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
catalogNoOnly this catalog system id, e.g. m3-catalog. Omit to search every catalog; an id this server does not serve is an error.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
catalogSystemIdNoThe same as `catalog`.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses normalization rules (case, spaces, hyphens, underscores, slashes, camelCase ignored) and an explicit ranking order (exact name, prefix, containing, then role/traits). It stops short of stating auth/permission scoping or whether results are paginated, so it is strong but not complete.

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

Conciseness4/5

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

Two dense sentences, front-loaded with the search scope before the ranking and return-payload details. Every clause adds information, though the second sentence is long and packs ranking and return-shape into one utterance.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out, yet the description still characterizes the returned summary and its cost advantage. With 6 params fully documented in the schema and the token mechanics covered there, the description leaves little an agent needs missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning to `query` by explaining matching fields, normalization, and result ordering beyond the schema's one-line description. It also implicitly clarifies the catalog-scoping behavior described in the schema for `catalog`/`catalogSystemId`.

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

Purpose5/5

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

States a specific verb+resource ("Find catalog components") and enumerates exactly which fields are matched (id, display name, Compose symbol, role, trait), with concrete examples. It also explicitly contrasts itself with the sibling ui_builder_list_catalogs, so an agent can distinguish the two without opening schemas.

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

Usage Guidelines4/5

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

It names the sibling ui_builder_list_catalogs and gives the selecting condition: search returns the same summary "for only the matches, so you don't pay for the whole catalog." That is clear context for when to prefer this tool, though there is no explicit when-not guidance beyond the cost tradeoff.

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

ui_builder_set_implementationAInspect

Record the pull request that implements a design: its URL, its status (draft, open, merged, closed), the design revision it implements, and — once you have compared the PR's rendered previews with the design — previewMatch {status: match|mismatch|unknown, evidence: a URL to the comparison, note}. Replaces the whole record; pass only designId to clear it. Writing the same record again changes nothing and wakes nobody. Needs write access to the design.

ParametersJSON Schema
NameRequiredDescriptionDefault
prNoThe pull request URL.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
statusNoDefaults to open.
designIdYes
revisionNoThe design revision the PR implements.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
previewMatchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: full-replace semantics ('Replaces the whole record'), the clear path, idempotency ('writing the same record again changes nothing and wakes nobody'), and an explicit permission requirement ('Needs write access to the design'). These are exactly the non-obvious mutation traits 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.

Conciseness4/5

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

Purpose is front-loaded and the sentences are dense but each earns its place (replace semantics, idempotency, permission). The long opening sentence packs several concepts together, which slightly hurts scanability but wastes no words.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description supplies the mutation semantics, clearing behavior, and auth requirement an agent needs. The token/poll_access integration is left entirely to the schema, which is acceptable but a minor omission.

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

Parameters4/5

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

Schema coverage is 75%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains the previewMatch object's intent and when to populate it, and specifies that only designId should be passed to clear the record. It does not cover the token/poll_access flow, which the schema handles.

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

Purpose4/5

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

States a specific verb and resource ('Record the pull request that implements a design') and enumerates the fields being recorded. An agent can distinguish this write from the read-oriented sibling ui_builder_implementation_status, though neither sibling is named explicitly.

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

Usage Guidelines3/5

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

Provides condition-based guidance for one field ('once you have compared the PR's rendered previews with the design') and explains the clearing case ('pass only designId to clear it'). It never states when to reach for this tool versus ui_builder_implementation_status or ui_builder_find_design_for_pr, so tool selection is left to inference.

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

ui_builder_set_referenceAInspect

Attach the picture a design is being built against — a Figma frame, a screenshot of a shipped screen, a mock — as its reference overlay, or clear it. The same overlay the browser editor's Frame, density and reference panel shows, so a person opening the design sees what you attached. Kept beside the design and never part of it: no node holds it, no export sees it, the revision does not move. Send PNG, JPEG, WebP or SVG bytes in imageBase64. For a Figma frame, fetch the picture with your Figma tools (a screenshot of the node) and pass the frame's URL as sourceUrl; this host fetches nothing itself. State the export scale as density (2 for a Figma 2x export) or in the name (card@2x.png): without it a screen-shaped picture is read across the frame's width and anything else at the design's own density. The reply says what the picture is against the frame — size in dp, density, whether it is a screen or a region — and whether pixel comparison means anything. Marks drawn in the editor are kept; the alignment is reset, as a new picture in the editor does. A user-supplied image is stored on this host: say so, and attach it only with their permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoWhat the editor calls it. An `@2x` suffix declares the density.
clearNoRemove the reference, its marks and pieces instead.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
densityNoThe picture's pixels per dp, e.g. 2 for a 2x export, 2.625 for a Pixel screenshot.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
sourceUrlNoWhere it came from, such as the Figma frame URL. Provenance only; never fetched.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
imageBase64NoThe picture, base64. PNG, JPEG, WebP or SVG; at most the host's reference size limit.

Output Schema

ParametersJSON Schema
NameRequiredDescription
factsNo
notesNo
schemaYes
attachedYes
designIdYes
referenceNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: the overlay is kept beside the design, no node holds it, no export sees it, and the revision does not move. It also discloses that alignment is reset while marks are kept, that the image is stored on this host (with a permission caveat), and that the reply reports size/density/region and whether pixel comparison is meaningful.

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

Conciseness4/5

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

Purpose and the clear/attach duality are front-loaded, and most sentences carry distinct information (effects on revision, storage, density semantics). It is dense and sprawling with long em-dash clauses, so it is slightly heavier than strictly necessary, but little is pure waste.

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

Completeness5/5

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

For a 9-parameter mutation tool with no annotations, the description covers what changes, what is preserved, storage/permission implications, density interpretation, and reply contents. An output schema exists, yet the return summary is still useful context rather than filler.

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

Parameters4/5

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

Schema coverage is already 89%, so the baseline is 3, but the description adds genuine meaning: the behavioral effect of density (without it a screen-shaped picture is read across the frame width, others at design density), the @2x name-suffix convention, and that sourceUrl is provenance-only and never fetched. It doesn't cover agentName/agentModel/token, which the schema handles.

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

Purpose5/5

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

The description opens with a specific verb+resource: attaching (or clearing) a reference picture/overlay against a design. It clearly distinguishes the operation from siblings like ui_builder_put_asset or ui_builder_compare_reference by describing the overlay as an out-of-band artifact 'never part of' the design.

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

Usage Guidelines4/5

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

It gives clear context for when to use it — attaching the picture a design is being built against — and describes the Figma-frame workflow (fetch with your own Figma tools, pass the URL as sourceUrl). It also states the permission precondition for user-supplied images. It stops short of naming an explicit alternative tool or when-not-to-use condition.

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

ui_builder_share_designAInspect

Share a design with somebody else, or take that sharing back. actorId is the other party's actor id as this server spells it — github:<login> for a signed-in person, operator for the token holder, agent:<fingerprint> for another agent's grant; ui_builder_design_access lists the ones a design already carries. A viewer may read and export, an editor may also change the design, and neither may share it on. Only the design's owner may share it, and an agent acting under an approved grant shares as the person who approved that grant. Pass visibility instead of actorId to choose private or public (read only). Private keeps existing invited collaborators.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoeditor or viewer. Defaults to viewer.
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
revokeNoTake this actor's access away instead.
actorIdNoWho to share with, e.g. github:octocat.
designIdYes
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
visibilityNoChange visibility instead of an actor grant. Public is read only. Private keeps invited collaborators.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden and does so richly: role capabilities (viewer read/export, editor change, neither may reshare), owner-only authorization, agent-shares-as-approver semantics, and private-preserves-collaborators behavior. These are non-obvious policy facts an agent could not infer 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.

Conciseness4/5

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

Purpose is front-loaded in the first clause, then supporting policy detail follows in dense, mostly waste-free sentences. It is on the long side, but each clause adds a distinct constraint rather than restating the schema.

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

Completeness5/5

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

For a multi-modal mutation tool (grant, revoke, visibility) with no annotations, the description supplies authorization rules, role semantics, actorId format, and the visibility alternative; an output schema exists so return values need no explanation. Nothing essential to correct invocation is missing.

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

Parameters4/5

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

Schema coverage is already 88%, so the baseline is 3; the description adds real value by decoding actorId ('github:<login>', 'operator', 'agent:<fingerprint>') and explaining role/visibility semantics and the actorId-vs-visibility choice. It does not cover token/agentName/agentModel, but those are well documented in the schema.

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

Purpose5/5

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

States a specific verb+resource ('Share a design ... or take that sharing back') and immediately distinguishes itself from the sibling that reads access (ui_builder_design_access), which it explicitly names. An agent can tell this is the mutation counterpart to the read-only access listing.

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

Usage Guidelines5/5

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

Gives explicit conditions: use actorId to grant/revoke a specific party, or pass visibility to flip private/public, with 'Private keeps existing invited collaborators'. It also states the authorization precondition ('Only the design's owner may share it') and the agent-grant case, which is exactly when-to-use guidance.

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

ui_builder_validateAInspect

Check a design without saving it: a whole document, a stored design by designId, or operations against a stored design exactly as ui_builder_apply would apply them. Runs the same checks the real call does — document shape, catalog pin, the catalog's own validation, the mutation reducer — and then the Compose export gate, which is the list the editor's problems panel shows. Returns {valid, problems:[{severity, source, code, message, nodeId?, field?, operationIndex?}]}; valid is false exactly when a problem is an error. Nothing is written, no revision moves and nobody watching the design is notified. The shapes are published as the resources compose-preview://schemas/ui-builder-document-v1.json and compose-preview://schemas/design-mutation-v1.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
designIdNoA stored design to check, or to check `operations` against.
documentNoA whole DesignDocumentV1 to check.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.
operationsNoDesignMutationV1 objects to check against `designId`'s current document, as ui_builder_apply takes them.
baseRevisionNoThe revision the operations were written against; a stale one is reported as a warning.

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
schemaYes
designIdNo
problemsYes
revisionNo

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so well: it lists the exact checks performed (document shape, catalog pin, catalog validation, mutation reducer), describes the export gate, and states side-effect guarantees ('Nothing is written, no revision moves and nobody watching the design is notified') plus the `valid` semantics. This is rich behavioral disclosure beyond what any structured field supplies.

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

Conciseness4/5

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

The definition is front-loaded with the three modes before descending into mechanism, and nearly every clause carries information. It is dense but slightly overpacked — the inline return-shape literal and the schema resource URIs could be trimmed given an output schema already exists — so it is not maximally economical.

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

Completeness5/5

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

For a complex, multi-mode validation tool with nested objects, the description covers side effects, the check pipeline, the returned shape, and where the input shapes are published as resources. With an output schema and 100% parameter coverage already present, nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful framing by explaining how the parameters relate — `operations` are checked against `designId`'s current document 'as ui_builder_apply takes them,' and `baseRevision` is tied to the operations. That relational context is not fully captured by the individual schema entries.

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

Purpose4/5

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

The description states a specific verb and resource ('Check a design without saving it') and enumerates the three input modes it accepts: a whole `document`, a stored `designId`, or `operations` against a stored design. It clearly separates itself from `ui_builder_apply` by emphasizing nothing is written, though it never explicitly distinguishes itself from the sibling `ui_builder_check_design`, which an agent could easily confuse it with.

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

Usage Guidelines4/5

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

It gives clear context for use — validating operations 'exactly as ui_builder_apply would apply them' before committing — which implies the dry-run use case and names the relevant alternative. However, it offers no explicit 'when not to use' guidance and does not route the agent away from `ui_builder_check_design` or `ui_builder_get_design`.

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

ui_builder_viewAInspect

See a design the way a person in the editor sees it: a PNG of the canvas with the overlays drawn on — the selection outline, the reference picture when one is attached, the discussion's comments pins, and the layout bounds — and beside it JSON with the revision, each visible node's id and box, each pin's thread and position, all in the returned image's pixels. The picture is a short-lived signed https link by default; inline: true puts the bytes in the reply as well. The frame is the PNG export (renderer: "export", the editor's own renderer), which reports no node boxes; renderer: "native" draws real Compose on a host with a native render lane, reports every node's box so the selection can be outlined, and needs the ui-builder-export capability. With no renderer, a non-empty selection is drawn on the native frame when the host has a lane and the caller the capability, and otherwise on the export with a note saying why it is not outlined. A node with no box is reported in notes, never drawn at a guessed position. Not an McpResponseEnvelopeV1.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoA grant token from poll_access, when you cannot set the X-Compose-Preview-Token header yourself — an MCP client fixes its headers at connect time, so this is how a token approved during this session is used in it. Prefer the header where you control it.
inlineNoAlso return the PNG as an image block. Defaults to false; a host with no public origin always does.
includeNoOverlays to draw. Defaults to comments, reference, selection; [] draws the bare frame.
designIdYes
rendererNoDefaults to export, or native when a selection is to be outlined and this host and grant can render it.
revisionNoA past revision. Omit for the current one.
viewportNoFit the picture inside this many pixels, keeping its aspect ratio. Omit for the render's own size.
agentNameNoOptional agent/client name shown to design viewers; self-reported.
selectionNoNode ids to show as selected.
agentModelNoOptional current model name shown to design viewers; self-reported. Omit when unknown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
frameYes
imageYes
nodesNo
notesNo
schemaYes
includeYes
commentsNo
designIdYes
rendererYes
revisionYes
referenceNo
selectionYes
imageBase64No
boundsUnavailableNo

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the default short-lived signed https link vs `inline: true` returning bytes, the renderer/capability dependency (native needs the ui-builder-export capability), the fallback-and-note behavior when a selection cannot be outlined, that boxless nodes go to `notes` rather than a guessed position, and that the result is not an McpResponseEnvelopeV1.

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

Conciseness4/5

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

The core purpose is front-loaded in the first clause, and each subsequent sentence covers a distinct behavior (renderer defaults, capability, notes, response envelope). It is dense and clause-heavy with some run-on sentences, but virtually every clause earns its place for a tool this complex.

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

Completeness5/5

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

For a 10-parameter tool with nested objects, an output schema, and no annotations, the description covers what an agent needs: what is returned, how overlays and renderers behave, capability prerequisites, fallback semantics, and default link vs inline bytes. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is already 90%, so the baseline is 3; the description adds real meaning beyond it by explaining how `renderer`, `selection`, `include`, and `inline` interact and what the native/export choice implies for node boxes. It stops short of covering every parameter (e.g. token, agentName, agentModel) in prose, but the schema handles those.

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

Purpose4/5

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

The description gives a specific verb and resource — 'See a design the way a person in the editor sees it' — and enumerates exactly what is returned (PNG canvas with selection outline, reference picture, comment pins, layout bounds, plus JSON with revision and node boxes). It does not, however, explicitly name or contrast itself with close siblings such as ui_builder_export or ui_builder_render_native, so 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool is for visually inspecting a design, and the renderer-selection paragraph describes conditional behavior. But there is no explicit 'use this when / use X instead' routing against the many similar render/export siblings, so an agent must infer when this is the right call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables coding agents to turn existing Compose and SwiftUI previews into a static Storybook-style gallery, including setup diagnosis, coverage analysis, and generating or building the gallery. It automates the creation of browsable component catalogs for native mobile apps without requiring a SaaS account.
    5
    247 npm
    11
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables precise, offline-ready exploration of AOSP internals and Jetpack/AndroidX sources, including class and method lookup, hierarchy inspection, regex search, and optional cross-file definition/reference navigation.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables discovery, exploration, and inspection of mobile app UI designs, microinteractions, animations, and UX/UI flows from Collect UI, with fast direct access to video variants and metadata.
    4 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.