recipebooq
Server Details
Look up @recipebooq/ui components: props, provider order, theme tokens, and the blank-render rules.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 14 tools
Most tools are clearly distinct by action and object, but emit_app, emit_screen, and add_screen have adjacent responsibilities, as do get_rules and get_component. The detailed descriptions are strong enough to prevent serious misselection, though an agent would need to read carefully.
Every tool follows a consistent verb_noun snake_case pattern, such as list_components, get_component, install_component, and verify_app. The verbs are specific and the nouns clearly identify the target resource, making the surface predictable.
14 tools is well within the sweet spot for a domain covering component discovery, installation, app/screen emission, verification, and maintenance. Each tool has a clear role and the set does not feel bloated or thin.
The tool surface covers the core workflow well: discover and inspect components, install them, emit full apps or screens, verify correctness, and update exported files. Missing operations like explicit removal or single-component updates are minor gaps that can be worked around or handled by existing tools.
Available Tools
14 toolsadd_screenAInspect
PAID. Add one new screen to an app that was already exported: the screen file, the route that mounts it, the exact line to register it, and how to navigate to it. Reads the .recipebooq/files.json manifest to work out the route tree — it never reads or rewrites your source, so the one edit to an existing file is handed to you as a line to add rather than a file to overwrite.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | nest it in this tab's stack so the tab bar stays visible. Omit to put it at the root, where it covers the tab bar (right for a modal). | |
| manifest | Yes | the parsed .recipebooq/files.json from the project root | |
| componentName | No | React component name, e.g. "InvoiceDetail". Defaults to GeneratedScreen. | |
| compositionId | Yes | share code for the new screen, from the composer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly states it reads the .recipebooq/files.json manifest, never reads or rewrites source, and returns a line to add rather than overwriting a file. This is unusually clear about side effects and non-effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but compact, packing key workflow information into two sentences. Somewhat run-on due to the em-dash clause, but no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description explains the core workflow (manifest read, route tree, line edit) and the intended context (already exported app). It doesn't specify return format, but that is not required here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all four parameters, but the tool description itself does not add additional parameter-level detail. Since schema coverage is 100%, this meets baseline but doesn't exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it adds one new screen to an already exported app, distinguishing it from emit_screen/emit_app by focusing on registration and navigation rather than creation. The verb 'Add' and resource 'screen to an app' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context that it is for apps already exported and that it uses the manifest to determine the route tree, implying it should be used when adding a screen to an existing app's navigation. Does not explicitly name alternatives, but the 'already exported' condition gives enough guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_snippetAInspect
Paste TSX that uses these components and get back the glass-safety problems in it — the animated opacity, the flex:1 collapse, the clipped lens, the conditional mount. Read-only: it never touches your repo. A heuristic text scan, not a structural guarantee.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | the TSX snippet to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only: it never touches your repo' and clarifies that it is a heuristic text scan, not a structural guarantee. This gives the agent confidence about side effects and limitations, though it does not disclose output format or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the purpose and output, then adds the read-only guarantee and heuristic limitation. Every sentence earns its place, and the structure makes the tool's behavior easy to absorb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description provides enough context: what to pass, what problems are detected, that it is read-only, and that it is heuristic. The only minor gap is that the exact return format is not specified, but the listed problem categories make the expected output sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single 'code' parameter as 'the TSX snippet to check,' and schema coverage is 100%. The description adds meaningful context by specifying that the TSX should use 'these components' and that the result is a list of glass-safety problems, which helps the agent understand what input to provide beyond the bare schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and resource: paste TSX and get back glass-safety problems. It lists concrete issue categories (animated opacity, flex:1 collapse, clipped lens, conditional mount), which makes the tool's output expectations unambiguous and distinguishes it from the sibling get/find/list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the primary use case clear: use this tool when you have a TSX snippet and want to check it for glass-safety problems. It also provides a boundary by stating it is a heuristic text scan, not a structural guarantee, which helps the agent decide whether this tool is appropriate. It does not explicitly name alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emit_appAInspect
PAID. Turn a recipebooq canvas into a working app: navigation, providers, tab bar, screens and the components they need. Returns a recipe — the exact files with their target paths, the dependency install line, and ordered steps — to apply to the current project. Files marked skeleton or component are hand-written and device-verified: copy them verbatim, never reformat or rewrite them. Needs the share code from the composer's "Share for agent" button.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | the share code, e.g. "34ca4babb2" | |
| override | No | emit even when screens are flagged as not ready. Ask the customer first; the flags exist for a reason. |
TDQS
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 so thoroughly. It discloses that the tool is PAID, that it returns a recipe rather than directly modifying files, that certain marked files must be copied verbatim and never rewritten, and that a share code is required. This is strong behavioral disclosure well beyond a generic 'emit an app' phrase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: cost signal, core purpose, return format, critical handling instructions, and prerequisite. It is front-loaded with the most decision-relevant fact (PAID) and avoids filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is largely complete for a tool with no output schema: it explains what will be returned, what to do with returned files, and what input is needed. It doesn't cover error cases or what happens on invalid share codes, but for selecting and invoking the tool, the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents appId and override well. The description reinforces that appId is the share code from the composer, matching the schema description, but it adds no substantially new parameter-level meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Turn a recipebooq canvas into a working app' with concrete outputs like navigation, providers, tab bar, screens, and components. It also explains what the tool returns (a recipe with files, paths, dependency install line, and ordered steps), which clearly distinguishes it from the sibling get/list/check tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear trigger context: use this when a canvas should become a working app, and it states the required prerequisite (the composer's share code). It doesn't explicitly name alternatives or say when not to use it, but the tool's purpose is so distinct from the sibling inspection tools that the usage context is effectively clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emit_screenAInspect
PAID. Turn one composed screen into a real TSX file you can drop into an app you already have — your navigator, your routes. Returns the complete file inline, the components to install first, and how to mount it. Use emit_app instead when the customer wants a whole app with navigation and a tab bar. Needs the share code from the composer.
| Name | Required | Description | Default |
|---|---|---|---|
| componentName | No | React component name for the file, e.g. "CheckoutScreen". Defaults to GeneratedScreen. | |
| compositionId | Yes | the share code, e.g. "34ca4babb2" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It states the output: 'Returns the complete file inline, the components to install first, and how to mount it.' It also flags a cost with 'PAID.' However, it does not explicitly state whether the tool is read-only or mutating, though generating a file implies a side effect. Overall transparent and not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, using three sentences to cover purpose, output, alternative, and requirement. It starts with 'PAID.' as a flag, then proceeds efficiently without unnecessary detail. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides essential output details (the file, components to install, mounting instructions) and a prerequisite (share code). It also disambiguates from a sibling tool. It does not cover error cases or more detailed behavior, but for a simple two-parameter tool, the coverage is strong. Slight deduction for not describing what 'PAID' entails or any failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both compositionId and componentName have descriptions). The description adds context for compositionId by saying 'Needs the share code from the composer,' which aligns with the param description. It does not add significant new meaning for componentName beyond the schema's example and default, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Turn one composed screen into a real TSX file you can drop into an app you already have' with a clear verb 'Turn... into' and resource. It also distinguishes itself from emit_app, saying 'Use emit_app instead when the customer wants a whole app with navigation and a tab bar.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when to use and when not to use: 'Use emit_app instead when the customer wants a whole app...' It also mentions a prerequisite: 'Needs the share code from the composer,' guiding the agent on required context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_componentAInspect
Describe a UI need in plain language and get ranked components — including an explicit answer when this catalog deliberately does NOT ship something and you should use the OS's own control instead. Call this before building any UI control by hand.
| Name | Required | Description | Default |
|---|---|---|---|
| need | Yes | e.g. "a progress bar for an upload" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that results are ranked and that the tool will explicitly report missing components and recommend OS-native controls. This is meaningful behavioral context, though it does not describe return shape or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action and outcome are front-loaded, and the important fallback behavior is included efficiently. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is mostly complete. It explains what the tool does, when to call it, and the notable edge case of intentionally missing components. It could mention ranking criteria or result format, but these are minor gaps for this level of complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented with an example. The description adds the notion of 'plain language' and 'UI need,' which clarifies the expected input style, but does not significantly go 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('describe', 'get ranked components') and a clear resource (UI components), and distinguishes itself by emphasizing plain-language queries and explicit fallback answers when the catalog doesn't ship something. This clearly separates it from siblings like list_components or get_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call this before building any UI control by hand, giving a clear trigger condition. It does not name sibling alternatives or when-not-to-use conditions, but the context is strong enough for an agent to decide when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentAInspect
Everything needed to write a correct call site for one component: props with types, defaults and value domains, platform applicability, dependencies — and the runtime rules that apply to it. Always read the rules; getting props right and rules wrong still ships a blank screen.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | e.g. "button" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It provides useful context about what the tool returns, including props types, defaults, value domains, platform applicability, dependencies, and runtime rules. The warning that getting props right but rules wrong still ships a blank screen is a meaningful behavioral cue beyond the schema, though it does not discuss side effects, errors, or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the main purpose and then adds a high-value warning that guides usage. Every clause earns its place, and the informal closing reinforces an important behavioral point without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description gives a solid inventory of what will be returned: props with types/defaults/domains, platform applicability, dependencies, and runtime rules. It is complete enough for an agent to know what to expect and how important the rules are, though it stops short of describing the exact response structure or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the only parameter, slug, including an example. The description adds the context that the tool is for 'one component,' which reinforces the slug's role, but it does not provide additional parameter-level meaning beyond the schema. This aligns with the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's scope: it returns everything needed to write a correct call site for a single component, including props, defaults, platform applicability, dependencies, and runtime rules. It distinguishes itself from siblings like list_components and find_component by focusing on one component, though it never states an explicit verb like 'retrieves' or 'returns,' which keeps it from being a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent when to consult this tool: when writing a call site for a component. It also gives a strong directive to always read the rules and explains the consequence of ignoring them. It does not explicitly name alternatives or state when not to use it, so it is one step below full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provider_treeAInspect
The exact app-root provider nesting these components require, in the order that works. Getting this wrong fails at runtime, not at compile time. Optionally pass the components you are using to see which providers they each need.
| Name | Required | Description | Default |
|---|---|---|---|
| components | No | optional slugs in use |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it usefully discloses that incorrect provider order causes runtime failures, not compile-time failures. It also implies the tool is a read-only lookup, though it does not describe output format or side effects in detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver the core result, a critical failure warning, and optional parameter guidance with no wasted words. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description gives enough to select and invoke it correctly. It could be more explicit about the shape of the returned provider tree, but the core invocation context is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the optional 'components' parameter at 100% coverage, and the description adds meaning by explaining why to pass components: to see which providers each component needs. This enriches the schema without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource—the app-root provider nesting—and emphasizes the correct order, which clearly distinguishes this from sibling tools like get_rules or find_component. It is not a tautology and gives the agent a concrete understanding of what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by explaining that components can optionally be passed to discover which providers each component needs. It does not explicitly name alternatives or when-not-to-use cases, but the tool's unique purpose makes the usage guidance reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rulesAInspect
The runtime rules for this catalog — the mistakes that make native Liquid Glass render blank with no warning, no error and no red box. Pass a slug to scope them to one component. Read these before writing animation or layout code against any glass component.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | optional — omit for catalog-wide rules |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully warns that violations produce silent blank rendering, which is important behavioral context, and notes scoping behavior via slug. However, it does not explicitly state whether the operation is read-only, what the response structure is, or whether any side effects occur, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and every sentence adds value: the first defines the resource, the second explains scoping, and the third gives a direct usage directive. It is front-loaded with the most important consequence, silent failure, making it easy for an agent to grasp quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description is reasonably complete: it states what rules are, why they matter, how to scope them, and when to consult them. It does not describe the return format, but the nature of the resource is simple enough that an agent can infer a list or collection of rule descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the slug parameter as optional and catalog-wide by default. The description adds only a slight semantic nuance by saying the slug 'scopes them to one component,' but it largely repeats existing schema meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's resource as 'runtime rules for this catalog' and defines them concretely as 'the mistakes that make native Liquid Glass render blank with no warning, no error and no red box.' This goes beyond a generic 'get rules' phrasing and gives the agent a specific sense of what the tool returns, though it does not explicitly differentiate it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear imperative: 'Read these before writing animation or layout code against any glass component.' It also explains the optional slug parameter's purpose, saying users can 'Pass a slug to scope them to one component.' It lacks explicit when-not-to-use guidance, but the timing instruction is strong enough to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stepAInspect
FREE. Expand one step of an emit_app recipe: the full instruction, why it matters, how to know it worked, and what to do when it did not. emit_app returns steps in short form to stay inside the response budget — call this before any step you are not completely sure about. Needs the same share code and the step's id.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | the share code you passed to emit_app | |
| stepId | Yes | the step id, e.g. "configure" or "write" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and fully discloses the tool's action: expanding a step with full instruction, rationale, success criteria, and failure handling. It clearly implies a read-only informational retrieval with no hidden 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is mostly efficient and front-loaded with the action, but the leading 'FREE.' is extraneous and adds no value. Otherwise, all sentences contribute meaningful usage and behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the rich sibling context, the description sufficiently explains what the tool does, when to use it, and what information it returns. No additional context is needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are described in the schema with concrete examples, and the description adds useful context by noting appId is 'the share code you passed to emit_app'. This fully clarifies the meaning and relationship of the inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Expand' and the specific resource 'one step of an emit_app recipe', distinguishing it from sibling tools like emit_app and get_component. It also explains the tool's purpose relative to emit_app's short-form steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to call this tool 'before any step you are not completely sure about', providing direct when-to-use guidance. It also references emit_app's behavior to establish context, making the usage criteria unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_theme_tokensAInspect
The theme system: which hooks to call, and the spacing, radius and typography scales. Reference token names rather than hex values so a retheme propagates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of explaining behavior. It communicates that the tool exposes theme-related information and adds the useful behavioral note that retheming propagates when token names are used. However, it does not clarify the return format, whether this is purely read-only, or any limitations such as which token categories are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the tool's subject ('the theme system'), then lists the specific content areas, and closes with a practical usage rule. Every clause contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-parameter, no-output-schema getter, the description provides enough context to understand what the tool offers: relevant hooks and design scales, plus guidance on using token names. It lacks an explicit statement of what exactly the tool returns and doesn't mention color tokens, but given the minimal complexity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is effectively 100%, so there is nothing for the description to add about parameters. This matches the baseline for a no-parameter tool, and the description appropriately focuses on result semantics instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's domain—theme tokens—and specifies what it covers: hooks to call and spacing, radius, and typography scales. It avoids tautology, but it never uses an explicit verb like 'retrieves' or 'returns,' relying on the tool name for the action, and it doesn't explicitly distinguish itself from sibling getter tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is relevant when working with the theme system, but it does not state when to use get_theme_tokens versus alternatives like get_rules or get_provider_tree. The instruction to reference token names rather than hex values is useful post-retrieval guidance, but it doesn't address tool selection or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_componentAInspect
PAID. Add one component to an existing project, correctly. Returns the transitive registry closure in dependency-first install order, the single expo install line for the whole closure, every file with its exact target path, the provider nesting it needs, and the runtime rules for it. Use this instead of fetching /r/*.json by hand — a component is a closure, not a file, and the ways to get that wrong all fail silently. Foundation components need no licence key.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | the component slug, e.g. "button" or "sheet" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly states the operation is PAID, that it adds to an existing project, and enumerates exactly what is returned: the transitive closure, install order, install line, file paths, provider nesting, and runtime rules. It even warns that getting this wrong can fail silently, which is useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: the PAID flag, the core action, the full list of return content, the alternative invocation it replaces, the rationale, and the licensing exception. It is front-loaded with the most important facts and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and no annotations, the description compensates thoroughly by explaining both what the tool does and exactly what it returns. For a single-parameter tool, it covers installation semantics, return contents, failure risks, and licensing conditions, leaving no major gap 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the only parameter, slug, including an example. The description does not add new parameter-specific meaning, but no compensation is needed because the schema already fully documents it. This matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Add'), a specific resource ('one component'), and a target context ('existing project'), so an agent knows exactly what action is performed. It also distinguishes this tool from a file-fetching alternative by saying 'Use this instead of fetching /r/*.json by hand'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to prefer this tool over manually fetching component JSON, and explains why: a component is a closure, not a file. It also gives a licensing exception for foundation components. It does not explicitly contrast with every sibling such as add_screen or emit_app, but the use case is clearly scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_componentsAInspect
List the shipped @recipebooq/ui components — slug, purpose, category, and which are real iOS system controls vs. our own glass. Call this first; it is cheap. Optionally filter by category or tech.
| Name | Required | Description | Default |
|---|---|---|---|
| tech | No | ||
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It indicates this is a read-only enumeration, describes the content of the response (slug, purpose, category, system vs. glass), and adds a performance trait ('cheap'). It stops short of describing output structure, ordering, or pagination, but for a simple discovery tool this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the tool's purpose and return fields, followed by a usage hint and filter note. Every sentence earns its place with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no required parameters and no output schema, the description covers the core needs: what is returned, the optional filters, and the 'call first' purpose. It could be more complete by naming when to switch to get_component/find_component or describing the shape of each component entry, but those are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds that tech and category are optional filters and implies the tech enum maps to iOS system controls vs. custom glass. However, it does not explain the category values or how filters compose, leaving some meaning to be inferred from the schema enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the exact resource ('shipped @recipebooq/ui components') and the fields returned (slug, purpose, category, iOS-system vs. glass). This clearly differentiates it from sibling tools like find_component and get_component, which imply targeted lookup rather than broad enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Call this first; it is cheap', giving clear guidance on when to use the tool. It also mentions optional filtering by category or tech. However, it does not explicitly contrast itself with find_component/get_component for targeted lookups, so the 'when-not-to-use' guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_componentsBInspect
PAID. Tell the customer what has changed in their recipebooq files since they exported, and hand back only what moved. Reads the .recipebooq/files.json the export wrote into their project — no share code needed, so it works months later. Never touches their own screens, and flags the rare change that needs a code edit rather than a re-copy. This is how an app stays current as iOS and Android move.
| Name | Required | Description | Default |
|---|---|---|---|
| manifest | Yes | the parsed contents of .recipebooq/files.json from the project root (the whole object, or just its `files` array) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it reads .recipebooq/files.json and never touches the customer's own screens, which is helpful. However, it does not fully clarify side effects, whether it writes back to the manifest, or any authentication/payment behavior beyond the 'PAID' tag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is mostly concise and front-loads the core purpose. The final sentence is somewhat promotional but does not significantly detract from clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a general idea of what is returned ('only what moved') but lacks specifics about the output format or how the result should be used. Without an output schema, more detail would help make the tool fully self-explanatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required manifest parameter, and the description mirrors the schema text without adding extra detail about the expected structure or contents. Since schema coverage is complete, this is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tells the customer what changed in their recipebooq files since export and hands back only the changed items. It distinguishes this from simply listing or installing components, though the 'update' in the name is slightly misleading because the tool appears to be read-only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides useful context by saying no share code is needed and that it works months later, and it mentions when a code edit is needed rather than a re-copy. However, it does not explicitly name sibling alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_appAInspect
PAID. Check that an emitted app was actually applied correctly, before building it. Report what you wrote — file paths with byte sizes, your package.json dependencies, and the project config — and get back what is missing, which copy-verbatim files were altered, which packages are absent, and whether the config merge that expo-router needs was done. Catches the four ways a long recipe goes wrong, each of which fails silently or points somewhere else.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | the share code you passed to emit_app | |
| files | Yes | what you actually wrote: { path, bytes } per file, path relative to the project root. `bytes` must be the file's size in BYTES on disk (what `wc -c` reports), not its character count — the two differ for any file containing a non-ASCII character. | |
| config | No | ||
| dependencies | No | the keys of package.json's dependencies |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavior disclosure. It discloses cost ('PAID'), the verification nature ('Check', 'Report', 'get back'), and the specific failure categories it detects. It does not explicitly state whether files are modified, but the check/report language strongly implies a non-destructive audit, which is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated; every clause carries information. It front-loads the critical cost warning and the core purpose. The sentence structure is slightly complex with em-dash interruptions, which prevents a perfect score, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 4-parameter nested schema and no output schema, the description adequately explains the expected inputs and the shape of the response (missing files, altered copy-verbatim files, absent packages, config merge status). It omits explicit notes on side effects or prerequisites beyond having emitted an app, but the overall picture is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description adds meaningful context: what to report ('file paths with byte sizes, your package.json dependencies, and the project config') and what the tool returns. It also explains the purpose of the parameters by linking them to the verification outcomes. This goes beyond the schema's bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Check that an emitted app was actually applied correctly.' It clearly distinguishes from sibling emit_app by stating its verification role, and even names the preceding step ('emitted app') and timing ('before building'). The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use after emitting an app and before building it. It does not explicitly compare against check_snippet or other siblings, but the workflow position is unmistakable. The description implies no alternative beyond immediate verification, which is adequate for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
verify_app3 fields changed- changed
Input schema / properties / files / descriptionPrevious value: -"what you actually wrote: { path, bytes } per file, path relative to the project root. Add `sha` for an exact check on a specific file."New value: +"what you actually wrote: { path, bytes } per file, path relative to the project root. `bytes` must be the file's size in BYTES on disk (what `wc -c` reports), not its character count — the two differ for any file containing a non-ASCII character." - added
Input schema / properties / files / items / properties / bytes / descriptionAdded value: +"size in bytes on disk, as `wc -c` reports" - added
Input schema / properties / files / items / properties / sha / descriptionAdded value: +"optional; when present it is authoritative and the byte check is skipped for that file"
6 tool updates
- Added
add_screen - Added
emit_screen - Added
get_step - Added
install_component - Added
update_components - Added
verify_app
8 tool updates
- First observed
check_snippet - First observed
emit_app - First observed
find_component - First observed
get_component - First observed
get_provider_tree - First observed
get_rules - First observed
get_theme_tokens - First observed
list_components
Related MCP Connectors
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
Provides style context & tokens to design or restyle web UIs in any framework
1Accessible React components, tokens, usage guidance, and install commands for product interfaces.
8127Find UI components and themes, retrieve code, and generate with hosted 21st AI when enabled.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides deterministic, read-only design knowledge for AI coding agents to help them choose visual directions, plan UI states, and compose design tokens, all without network access.6164MIT
- AlicenseAqualityBmaintenanceRead-only catalog of the @blueprint-modular/core design system (104 components). Four tools — list/search/get components and suggest compositions. Public, no auth, Streamable HTTP.41Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides a real API for coding agents to look up design system components, props, and tokens, preventing guessed answers.MIT
- AlicenseAqualityDmaintenanceProvides reference information for Flux UI components, enabling AI assistants to access component documentation and examples from the Flux UI design system.41893MIT