Fine Structure
Server Details
Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 3.9/5 across 82 of 82 tools scored. Lowest: 2.5/5.
Most tools have clearly distinct purposes with detailed descriptions, but there are some overlapping pairs like read_app_file/read_app_files and create_entity_records vs seed_entity, which could cause misselection. Singular/plural variants and compatibility tools introduce minor ambiguity, but the majority are well-separated.
Tool names predominantly follow a consistent verb_noun pattern (e.g., create_app, get_entities, delete_secret). There are some variations like 'agency_create_client' and 'seed_entity' that deviate slightly, but the overall convention is predictable and readable.
With 82 tools, the server is far above the typical range and feels overwhelming. Even for a full platform API, the count is extreme and likely increases selection complexity. A more curated set would improve navigability without sacrificing capability.
The tool surface is exceptionally comprehensive, covering app lifecycle, file operations, entity CRUD, versioning, A/B testing, secrets, integrations, domains, agents, scheduling, policies, and member management. No obvious missing operations for the platform's scope; it even includes validation and workflow guidance tools.
Available Tools
82 toolsadd_custom_domainAdd Custom DomainADestructiveInspect
Attach or replace the app custom domain through the same Fine Structure Studio custom-domain flow. Returns exact DNS verification and routing records for the user to configure at their DNS provider.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| domain | Yes | Custom domain to connect, for example example.com or app.example.com |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations by mentioning the return of exact DNS records and referencing the Fine Structure Studio flow, which implies a guided process. Annotations already cover the destructive nature (destructiveHint=true), and the description's 'attach or replace' is consistent. It does not describe side effects of replacement (e.g., whether the old domain is removed) but provides useful context about output.
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 extremely concise with two sentences, front-loading the core action and then the key output. Every word adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters, no output schema, and annotations that cover safety, the description is fairly complete. It explains the action and the return value. Minor gaps remain, such as not clarifying behavior when replacing an existing domain or the need for prior ownership verification, but these are not critical 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 description coverage is 100%; both parameters are documented in the schema. The tool description does not add additional semantics beyond what the schema provides (e.g., the domain format is already in the parameter description). Thus, 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 a specific action ('attach or replace') on a specific resource ('the app custom domain'), and even notes the return of DNS records. It implicitly distinguishes from sibling tools like remove_custom_domain and set_primary_domain by its action and purpose.
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 indicates what the tool does but does not explicitly say when to use it versus alternatives. It does not name sibling tools like remove_custom_domain or set_primary_domain, nor does it state when not to use it. The context is clear enough that an agent could infer, but there is no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_file_changeAdd File ChangeAInspect
Stage one file upsert or delete inside a change set. Does not modify the live app until apply_change_set. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Virtual file path | |
| app_id | Yes | The app ID | |
| content | No | Complete file contents for upsert | |
| file_type | No | Optional file type override | |
| operation | No | upsert | |
| change_set_id | Yes | Change set ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral trait: 'Does not modify the live app until apply_change_set.' This adds critical context beyond the annotations (readOnlyHint=false, destructiveHint=false), clarifying that the operation is non-destructive to the live app but does modify the change set. It also provides a reference for path conventions, which is useful. It does not elaborate on idempotency or error behavior, but the staging nuance is valuable.
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 concise sentences, each serving a purpose: the main action, the non-live-side-effect, and the path API reference. It is front-loaded with the core purpose and contains no redundant or vague language. Efficient and well-structured.
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 moderate complexity (6 parameters, no output schema), the description covers the essential operational context: what it does, when it takes effect, and how paths are defined. The schema handles parameter details. Missing explicit references to sibling tools (e.g., apply_change_set) or potential validation steps, but the description is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (83%), so most parameters are already documented. The description adds a reference to the Fine Structure app file API for path semantics, which complements the 'path' parameter but does not explain details like content requirements for upsert vs. delete. Since the schema carries most of the burden, the description adds marginal value, aligning with the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Stage one file upsert or delete inside a change set.' It identifies the specific action (stage), resource (file change), and scope (one file within a change set). It also distinguishes itself from direct modification tools by noting the change isn't applied until apply_change_set, making the purpose 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?
The description implies usage context: you stage a file change for later application via apply_change_set. However, it does not explicitly state when to prefer this over direct file write tools (e.g., write_app_file) or provide exclusions. The mention of apply_change_set is a hint, but the guidance is not explicit enough for an agent to decide between staging and direct modification without additional inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agency_create_claim_linkAgency: Create Claim LinkAInspect
Agency mode only. Create a client claim link for an existing app owned by the agent. The client must log in with the invited email before ownership transfers.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional internal note | |
| app_id | Yes | Existing app ID owned by the agent | |
| client_email | Yes | Client email allowed to claim ownership | |
| client_full_name | No | Optional client display name | |
| claim_expires_in_days | No | Claim link lifetime, 1-90 days | |
| keep_agent_collaborator | No | Invite agent as editor after claim |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutation (readOnlyHint=false). The description adds behavioral detail: the ownership transfer only occurs after the client logs in with the invited email, and the agent may remain a collaborator based on the parameter. This goes beyond the annotations by clarifying the post-claim state. No contradiction found.
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 unnecessary words; the critical constraint ('Agency mode only') is front-loaded, followed by the core action and a key behavioral consequence. 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?
Despite having 6 parameters and no output schema, the description, combined with full schema documentation, provides enough for correct invocation. It clarifies the ownership transfer timing and existing-app requirement. Minor gaps like how the link is delivered are not essential for calling the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are documented in the schema. The description does not add additional semantic context beyond the schema, such as relationships between parameters or practical examples. Baseline 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 explicitly states the action (create), the object (client claim link), and the context (agency mode, existing app owned by agent). It clearly distinguishes from sibling tools like agency_create_client_app by focusing on the claim-link transfer mechanism. The verb-resource pairing 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 mentions 'Agency mode only' as a usage constraint and specifies that the app must already exist, which is helpful. However, it does not explicitly name alternative tools or describe scenarios where this tool should not be used, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agency_create_clientAgency: Create ClientAInspect
Agency mode only. Create or update a client record for an account-level agent. This does not create a verified Fine Structure user account and does not transfer ownership.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional internal note for the agency | |
| client_email | Yes | Client email that will be allowed to claim projects | |
| client_full_name | No | Optional client display name |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false, so the description carries the burden of behavioral disclosure. It explicitly states the operatio is create/update and clarifies non-obvious effects: it does not create a verified user account and does not transfer ownership. This adds valuable context beyond the annotations without contradicting them.
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 concise: two sentences, the first front-loading the 'Agency mode only' condition and the main verb+resource, the second adding important limitations. No wasted words, and all information is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description focuses on operation semantics and side-effect limitations, which is sufficient for a simple create/update tool. It does not explain return values or error conditions, but for a tool with a single required parameter and clear schema descriptions, completeness is adequate. The limitation about not creating a verified account adds needed context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters have descriptions. The tool description does not add any extra parameter semantics beyond the schema; it only mentions the client record context. The baseline of 3 applies because the schema already documents the parameters.
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 a specific action ('create or update a client record') with a defined resource context ('for an account-level agent'). It explicitly distinguishes itself from related operations by noting it does not create a verified Fine Structure user account or transfer ownership, which differentiates it from potential siblings like agency_create_client_app.
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 provides clear context on when to use it ('Agency mode only') and the target audience ('account-level agent'). It implies differentiation from alternatives by stating what it does not do, but it does not explicitly name alternative tools or provide exclusion criteria beyond the 'Agency mode' restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agency_create_client_appAgency: Create Client AppAInspect
Agency mode only. Create a new app owned by the agent, start generation, and create a claim link for the client. Ownership transfers only when the invited client logs in with the same email and accepts the claim link.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the app (1-100 chars) | |
| note | No | Optional internal client/project note | |
| prompt | Yes | Detailed description of the app to build | |
| description | No | Optional short app description | |
| client_email | Yes | Client email allowed to claim ownership | |
| client_full_name | No | Optional client display name | |
| claim_expires_in_days | No | Claim link lifetime, 1-90 days | |
| keep_agent_collaborator | No | After claim, invite the agent back as an editor collaborator |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the ownership transfer condition (client must log in and accept claim) which is not implied by annotations. It also notes that generation is started. This adds value beyond the annotations (readOnlyHint false, destructiveHint false), though it doesn't cover all side effects like rate limits or failure cases.
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, efficient and front-loaded with the critical 'Agency mode only' restriction. The ownership transfer condition is important and clearly stated. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no output schema, the description should explain what the tool returns (e.g., claim link URL) and any failure modes. It doesn't. The ownership transfer logic is explained, but the agent is left guessing about the return value. Given the complexity, this is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents parameters. The description adds relevant context about ownership transfer (client_email) and the claim link process, slightly enhancing meaning. However, it doesn't explain parameter syntax or relationships beyond that, so 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 ('create'), a specific resource ('a new app'), and the additional actions (start generation, create claim link). It clearly distinguishes from siblings like create_app (which likely lacks the claim link) and agency_create_claim_link (which is only the link).
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 restricts usage to 'Agency mode only', which is a clear prerequisite. However, it doesn't mention when to use this combined tool instead of the separate agency_create_claim_link or create_app, leaving some inference to the agent. Still, the context is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agency_get_claim_statusAgency: Get Claim StatusARead-onlyIdempotentInspect
Agency mode only. Inspect one handoff status without exposing the raw claim token.
| Name | Required | Description | Default |
|---|---|---|---|
| handoff_id | Yes | Handoff ID returned by agency_create_claim_link or agency_create_client_app |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds two meaningful behavioral details: it exposes only the status (not the raw claim token) and it is agency-mode only. These go beyond what annotations provide and are useful for safe invocation.
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 a single, tightly written sentence. It front-loads the access restriction ('Agency mode only') and then states the action and its security property. There is zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one parameter and robust annotations, the description is sufficient. It clarifies the scope (one handoff) and the token-protection behavior. It does not specify return format, but with no output schema and simple status, that is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter handoff_id is fully documented in the schema. The description does not add any additional parameter context, so the baseline 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 uses a specific verb ('inspect') and a clear resource ('handoff status'), and immediately distinguishes itself with 'Agency mode only' and 'without exposing the raw claim token.' This clearly separates it from generic status tools like get_app_status or get_job_status.
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 agency-mode usage and that it is for handoff status, but it does not explicitly state when to prefer this over alternatives. Siblings include many status getters, and no exclusion or selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agency_list_clientsAgency: List ClientsARead-onlyIdempotentInspect
Agency mode only. List client records and app handoff status for the authenticated agent.
| Name | Required | Description | Default |
|---|---|---|---|
| include_handoffs | No | Include claim links status without raw tokens |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds the agency-mode restriction and the fact that the authenticated agent's clients are listed, which is extra context. It does not contradict annotations and provides a meaningful constraint beyond the structured metadata.
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 a single sentence, front-loading the key qualifier ('Agency mode only') and ending with the action. Every word earns its place, and there is no fluff or redundant phrasing. It is optimally concise for the amount of information conveyed.
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 read-only list tool with one optional parameter, the description covers the essential points: it lists client records and handoff status, is agency-only, and scoped to the authenticated agent. It does not outline pagination or output format, but given the low complexity and no output schema, this is acceptable. A bit more detail on what 'handoff status' contains could be useful, but not necessary.
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 parameter 'include_handoffs' is fully described in the schema with 'Include claim links status without raw tokens.' The description mentions 'app handoff status' which loosely maps to this parameter but does not provide additional meaning 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 clear verb (list), a specific resource (client records), and an additional scope (app handoff status). It also includes a distinguishing qualifier ('Agency mode only') that separates it from sibling list tools like list_apps and list_agents. The purpose is unambiguous and actionable.
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 usage context: 'Agency mode only.' This implies it should be used when operating in agency mode and needing client records. However, it does not explicitly name alternative tools or specify when not to use it, though the agency qualifier effectively provides a condition. It is clear enough for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_change_setApply Change SetAInspect
Apply a staged change set to the app. Creates a Saved Version before applying. Blocks on validation errors unless force=true.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Apply even if validation has errors | |
| app_id | Yes | The app ID | |
| change_set_id | Yes | Change set ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-read-only and non-destructive, so the description carries the burden. It adds two important behaviors: it 'Creates a Saved Version before applying' and 'Blocks on validation errors unless force=true.' These go beyond annotation hints and inform the agent of side effects and conditional behavior, though it does not mention post-application state (e.g., whether the change set is consumed).
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, no filler. The core action and key side effect are front-loaded, and the blocking condition is stated compactly. Every phrase 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 mutation tool with no output schema, the description covers the essential behavior (apply, create Saved Version, block on errors), and the schema covers parameters. It does not mention prerequisites like needing an existing change set, but the phrase 'staged change set' implies that. Considering the simple tool complexity and that sibling validate_change_set exists, it is sufficiently complete, though it could hint at the recommended workflow (validate before apply).
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 three parameters (app_id, change_set_id, force) at 100% coverage, so the description adds little parameter-level detail. The only extra is the phrase 'Blocks on validation errors unless force=true,' which reiterates the force parameter's role. This meets the baseline but adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Apply a staged change set to the app') and distinguishes itself from sibling lifecycle tools like discard_change_set by noting the side effect of creating a Saved Version. The verb and resource are specific, and it reads as a distinct operation among the change-set siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for applying a previously staged change set and mentions blocking on validation errors, which gives context for when to use it (after validation). However, it does not explicitly reference siblings like validate_change_set or discard_change_set, so alternatives are not spelled out. Still, the usage context is clear enough for an agent to infer the right moment to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_agent_whatsappAttach Agent WhatsappAInspect
Connect a platform WhatsApp number to one of the account's agents, so the owner can message that number and reach that agent. Requires the owner to be verified first. Take phone_number_id from get_agent_whatsapp. A number already used by another account is still valid to connect: it answers only this owner's verified phone.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent that should answer on this number. | |
| phone_number_id | Yes | phone_number_id from get_agent_whatsapp claimable_numbers. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (mutation) and openWorldHint=true. The description adds valuable behavioral context by stating that numbers already used by other accounts are still valid, and specifically that it answers only the verified phone. It also highlights the verification requirement. No contradiction with annotations; it supplements them with meaningful details.
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, concise, and front-loaded with the primary purpose. It packs in the prerequisite, parameter source, and an important edge case without unnecessary detail. 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 tool with only 2 parameters, no output schema, and clear annotations, the description covers the essential context: what the tool does, the prerequisite (owner verification), the parameter source, and a special-case behavior. An agent has all the information needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented well (agent_id and phone_number_id with descriptions). The description adds the note 'Take phone_number_id from get_agent_whatsapp', which reinforces the source but doesn't significantly alter parameter meaning. It also adds the owner-verification context, but that's tool-level, not parameter-specific. Baseline 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 action 'Connect a platform WhatsApp number to one of the account's agents', the resource (the number and agent), and the outcome (owner can message that number). It distinguishes itself from sibling tools like get_agent_whatsapp (listing) and detach_agent_whatsapp (removal) by focusing on the attachment action.
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 a clear prerequisite ('Requires the owner to be verified first') and tells the agent where to get the phone_number_id from ('Take phone_number_id from get_agent_whatsapp'). It doesn't explicitly say when not to use it versus alternatives, but the sibling detach_agent_whatsapp implies the opposite action, so the context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_domain_verificationCheck Domain VerificationAInspect
Check Fine Structure custom-domain verification and SSL status for the configured custom domain, then save the latest status.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| domain | No | Optional configured custom domain. If omitted, uses the app's current custom domain. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses a side effect ('then save the latest status'), which adds behavioral context beyond the annotations. Annotations already indicate readOnlyHint=false, so the description is consistent and provides the specific nature of the mutation (saving status). It does not go into details of failure modes or overwriting behavior, but the core side effect is clearly disclosed.
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 a single sentence that is concise and front-loads the primary action ('Check...') followed by the side effect ('then save...'). It wastes no words, though splitting the check and save into separate sentences could improve readability. Overall, it is efficiently structured for an agent.
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 tool is relatively simple, but the description leaves gaps: it does not clarify what happens if no custom domain is configured (though 'configured' implies one exists), what 'status' encompasses (verification and SSL states), or what the function returns. Without an output schema, this information would help an agent understand expectations. It is adequate but not fully complete given the context of related domain tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on parameter usage beyond what the schema already provides. Schema coverage is 100%, so the parameters are fully documented in the schema. The phrase 'the configured custom domain' hints at the domain param, but it does not add syntax or format details. Baseline 3 is appropriate given high schema coverage and no additional value from the 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 states a specific verb ('Check') and resource ('Fine Structure custom-domain verification and SSL status'), and includes the side effect 'save the latest status.' This clearly distinguishes it from siblings like get_domain_verification and get_domain_ssl_status, which only retrieve without saving. The action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the sibling get_domain_verification or get_domain_ssl_status. The description does not mention alternatives or the condition for choosing this combined check-and-save approach. An agent might not know if they need this tool or one of the read-only getters, leaving the decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_current_to_versionCompare Current To VersionARead-onlyIdempotentInspect
Compare the current app files to a Saved Version and return compact per-file diffs.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| snapshot_id | Yes | Saved Version snapshot ID | |
| max_diff_chars | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds that the output is 'compact per-file diffs', which tells the agent the format is summarized rather than full file contents. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that states the action and output format, with no extraneous information. It is well-structured and 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?
The description provides the core purpose and output format, and with annotations covering safety, it is sufficient for the tool's simplicity. However, it does not mention any prerequisites like needing a valid snapshot_id obtained from list_saved_versions, which could improve completeness.
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 describes app_id and snapshot_id but leaves max_diff_chars undocumented. The description does not add any parameter details beyond the schema, so it doesn't compensate for the missing explanation of max_diff_chars. With 67% coverage, the description adds minimal value for parameter understanding.
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 action: comparing current app files to a saved version (identified by snapshot_id) and returning compact per-file diffs. This distinguishes it from siblings like compare_saved_versions (which compares two saved versions) and get_app_files (which reads files without diffing).
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 indicates the tool compares the current state to a specific Saved Version, implying it is used to inspect changes since a checkpoint. However, it does not explicitly mention when not to use it or alternatives, such as compare_saved_versions for comparing two historical versions. This leaves some ambiguity for an agent deciding between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_saved_versionsCompare Saved VersionsBRead-onlyIdempotentInspect
Compare two Saved Versions and return per-file additions, removals, modifications, and compact diffs.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| max_diff_chars | No | ||
| base_snapshot_id | Yes | Older/base snapshot ID | |
| target_snapshot_id | Yes | Newer/target snapshot ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the output format (per-file changes and diffs) but does not elaborate on any other behaviors such as ordering, size limits, or error handling. With annotations carrying the core transparency, a 3 is appropriate.
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 a single, concise sentence that states the action, resource, and expected output types. It is front-loaded with the operation and immediately provides the key information without any 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?
For a read-only comparison tool, the description covers the essential output (what the tool returns) and, thanks to annotations, the side-effect profile. It does not discuss any pagination or limits on the diff size (though max_diff_chars parameter exists), but given the simplicity of the operation and the existing annotation coverage, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (three of four parameters have descriptions; max_diff_chars lacks one but has a default). The description does not add any parameter-level meaning beyond what the schema already provides, such as clarifying the difference between base_snapshot_id and target_snapshot_id. Since the schema covers most parameter details, the description adds minimal value.
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 'compare' and the resource 'two Saved Versions', and specifies the output: per-file additions, removals, modifications, and compact diffs. It is specific enough to distinguish from most siblings, though it does not explicitly differentiate from the closely related 'compare_current_to_version'.
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?
No guidance is provided on when to use this tool versus alternatives like 'compare_current_to_version' or 'list_saved_versions'. The description does not mention prerequisites or selection criteria, leaving the agent to infer based on the resource names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_domain_redirectsConfigure Domain RedirectsAInspect
Configure custom-domain redirect policy: primary domain, optional www/root redirect, and HTTPS enforcement.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| force_https | No | Redirect HTTP custom-domain requests to HTTPS | |
| redirect_www | No | Redirect the www/root counterpart to primary_domain | |
| primary_domain | Yes | Canonical primary domain, for example example.com |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent, non-destructive operation. The description adds no further behavioral detail (e.g., whether it replaces existing redirects, if it affects live traffic immediately, or if it fails when the domain is unverified). With annotations covering the basic mutation profile, the description offers minimal added transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that captures the core purpose and key options without fluff. No wasted words; every part is informative.
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 configuration operation with four parameters and no output schema, the description is adequate but leaves out important context like prerequisites, side effects, or failure conditions. Given the openWorldHint and mutating nature, more context would help an agent call it correctly, though it's not severely incomplete.
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%, and each parameter has a clear description. The summary sentence merely re-iterates the parameter list without adding new meaning, so the schema carries the semantic burden. 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 states the action: 'Configure custom-domain redirect policy' and lists the specific aspects (primary domain, www/root redirect, HTTPS enforcement). This distinguishes it from siblings like set_primary_domain, which likely only sets the canonical domain without redirect policy.
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?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., domain must be verified or added), nor does it differentiate from set_primary_domain or check_domain_verification. An agent cannot infer the appropriate context without extra knowledge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_integrationConfigure IntegrationAInspect
Store safe non-secret integration metadata for an app. Use set_secret for API keys/tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| config | Yes | Safe metadata only, such as workspace/team/name/email | |
| provider | Yes | Integration provider ID | |
| is_active | No | Set false to disconnect this integration metadata |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the annotations (readOnlyHint=false implies a write, matching 'Store'). It adds the 'safe non-secret' boundary beyond what the annotations convey, which is useful misuse prevention. However, the safety profile is largely already carried by the annotations (destructiveHint=false, idempotentHint=false), so the description adds only marginal behavioral context. No contradiction.
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 dense sentences with zero filler: the primary purpose is front-loaded, and the critical alternative-routing to set_secret comes second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-destructive write tool with full parameter schema coverage and annotations carrying the safety profile, the description covers the essential decision the agent must make — what data belongs here vs set_secret. It doesn't describe return values, but no output schema exists and this is a storage operation where the return is not critical to 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 description coverage is 100%, with each parameter (app_id, provider, config, is_active) already explained in the schema. The description reinforces the config constraint ('safe metadata only'), which echoes the schema, but doesn't add meaningful new semantics beyond what the schema provides. The baseline of 3 for full schema coverage 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 scope — storing safe, non-secret integration metadata for an app — and explicitly marks the boundary against set_secret, which handles API keys/tokens. The verb 'Store' is slightly generic, but the resource (integration metadata) and the non-secret qualifier distinguish this clearly from its most probable confusion sibling.
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 an explicit routing rule: 'Use set_secret for API keys/tokens.' This tells the agent when NOT to use this tool and names the exact alternative for the most likely mis-selection. It doesn't cover other sibling relationships (e.g., vs list_integrations), but for the critical secret-vs-metadata decision the guidance is direct and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_owner_phone_verificationConfirm Owner Phone VerificationAInspect
Confirm the 6-digit code the owner received on WhatsApp from start_owner_phone_verification. On success the owner is verified: agents can message them, and platform numbers become connectable.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The 6-digit code from the WhatsApp message. | |
| phone | Yes | The same phone number the code was sent to. | |
| region | No | Optional ISO region hint, matching the one used when sending. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutation (readOnlyHint=false). The description adds the effect on success (owner verified, agents can message, platform numbers connectable), which is useful context. However, it does not mention failure behavior, idempotency (already false), or error handling beyond that. It adds some value but is not comprehensive.
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 waste. The first sentence states the action and source, the second gives the consequence. All essential information is front-loaded, making it quick for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple verification confirm, the description provides the flow context (paired with start_owner_phone_verification) and the outcome. It does not cover failure scenarios or return format, but this is not critical for a basic confirmation tool. The lack of an output schema is not a major gap 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 description coverage is 100%, so all parameters are documented in the schema. The description adds minimal extra meaning—it mentions the code was received from start_owner_phone_verification, but this is already implied by the schema's 'from the WhatsApp message.' With complete schema coverage, 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 states the action ('Confirm the 6-digit code') and the resource (owner phone verification from start_owner_phone_verification). It also explains the outcome, distinguishing it from siblings like start_owner_phone_verification by referencing that paired flow.
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 ties the tool to start_owner_phone_verification, indicating it should be used after that flow and after receiving the code. It does not explicitly state exclusions or alternatives, but the context is clear enough for an agent to know when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ab_testCreate A/B TestAInspect
Create a native Fine Structure A/B test between existing app pages. Use update_app first if a variant page still needs to be generated. Creates a Saved Version before the change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Experiment name | |
| app_id | Yes | The app ID | |
| variants | Yes | At least two variants. Traffic must total 100. | |
| is_active | No | Whether to activate the test immediately | |
| page_name | Yes | Base route page that triggers the experiment | |
| goal_event_type | No | Optional conversion goal type: entity_create, any, form_submit | |
| goal_event_filter | No | Optional goal filter, for example {'entity_name': 'Lead'} |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), the agent already knows this is a mutating, non-idempotent operation. The description adds useful context by mentioning the creation of a Saved Version before the change and the 'native Fine Structure' nature. No contradiction with annotations. The side effect disclosure goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying essential information: the primary purpose, a prerequisite workflow step, and a side effect. Front-loaded with the core action. No redundant or filler content.
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 tool is complex (7 params, nested objects, no output schema), but the schema fully documents parameters, including constraints like 'Traffic must total 100.' The description adds the critical side effect (Saved Version) and prerequisite (update_app). The only minor gap is that it doesn't state what the tool returns, but since there is no output schema, that is not mandatory.
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% (all 7 parameters have descriptions in the schema). The tool description does not add parameter-level detail; it only provides an overall prerequisite. According to the calibration, baseline 3 is appropriate when schema covers the parameters, and the description doesn't need to repeat them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a native Fine Structure A/B test') and distinguishes from siblings like delete_ab_test, update_ab_test, list_ab_tests, and get_ab_test_stats. The description makes it clear this is about creating a test between existing app pages, leaving no ambiguity.
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 a concrete prerequisite: 'Use update_app first if a variant page still needs to be generated.' This clearly indicates a common workflow step. It also notes the side effect of creating a Saved Version, which informs when to use this tool. However, it does not explicitly list alternatives or conditions when not to use it, so it falls 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.
create_agentCreate AgentAInspect
Create an autonomous AI agent on the user's Fine Structure account: a standing worker, not a chat session. It gets the platform's default safe tool policy and its own email address, it can read and write the app database, and once the owner phone is verified (see get_agent_whatsapp) it can message its owner on WhatsApp and by email through the platform system channels. Pair it with schedule_agent_task for recurring work such as following up new leads on WhatsApp each morning, watching an app for runtime errors, or sending a weekly summary. Messaging anyone other than the verified owner requires a channel the owner connects in the Fine Structure Studio.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Agent display name (e.g. 'Lead Follow-up'). Auto-derived from role when omitted. | |
| role | Yes | Short role label (e.g. 'sales assistant') | |
| app_id | No | Optional app to attach the agent to; account-level when omitted | |
| persona | No | Optional working style and tone instructions for the agent | |
| description | Yes | What this agent is responsible for, one or two sentences |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false, which is minimal. The description carries the full burden of behavioral disclosure and does so thoroughly: it states the agent gets a default safe tool policy, its own email address, read/write access to the app database, messaging capabilities contingent on owner verification, and a prerequisite for messaging others. This goes far beyond what annotations provide and fully informs the agent of 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 four sentences but packs a wealth of information without redundancy. It front-loads the core purpose, then explains capabilities, then provides usage context. Every sentence earns its place and the structure is logical, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the agent gets, its capabilities, prerequisites, and usage examples. It does not explicitly state the response format (e.g., returned agent object), but given the absence of an output schema, that is the only gap. Overall, it is complete enough for an agent to understand the tool's effects and how to use it, so a 4 is appropriate.
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 description coverage is 100%, meaning every parameter already has a description. The tool description does not add meaning beyond the schema, such as clarifying parameter interactions or providing examples. The baseline of 3 applies because the schema does the heavy lifting; the description adds no extra parameter value.
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 ('Create') and resource ('autonomous AI agent on the user's Fine Structure account'), and clearly distinguishes it from a chat session. It also names a related sibling (schedule_agent_task) and sets expectations about its standing-worker nature. This differentiates it from the many other creation tools in the sibling list.
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 provides explicit guidance: it says 'Pair it with schedule_agent_task for recurring work' and gives concrete examples (following up leads, watching for errors, weekly summaries). It also directs the reader to get_agent_whatsapp for phone verification and explains constraints on messaging other than the owner. This clearly defines when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_appCreate AppAInspect
Create a new application from a natural language prompt. The AI generates a complete web app with pages, components, styling, and data models. Returns a job_id - poll get_job_status to track progress. When the job is done, the app is ready.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the app (1-100 chars) | |
| prompt | Yes | Detailed description of the app to build | |
| description | No | Optional short description |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses asynchronous behavior (returns a job_id and requires polling) and states the outcome ('app is ready' when done). This goes beyond the annotations, which only indicate non-read-only, non-idempotent, and non-destructive. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no fluff. The main purpose is front-loaded, followed by return value and next steps. Each 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?
There is no output schema, but the description specifies the return value (job_id) and how to track it (poll get_job_status), which is essential for the agent to use it correctly. For a creation tool with only three parameters, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for all three parameters, so the baseline is 3. The description adds minor context by calling the 'prompt' a 'natural language prompt' and mentioning generated aspects, but does not substantially enhance parameter meaning beyond what the schema already provides.
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 and resource: 'Create a new application' and specifies it builds a complete web app with pages, components, styling, and data models. It distinguishes from siblings like create_agent (creates agents) and update_app (modifies an app) by focusing on creation from a natural language prompt.
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 clear context: use this to create a new app from a prompt, and it tells you to poll get_job_status for progress. However, it does not explicitly list alternatives or when not to use it, so it lacks explicit exclusions or sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_change_setCreate Change SetCInspect
Create a staged file change set. Add multiple file changes, validate them as one app state, then apply atomically.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional short label | |
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'apply atomically,' which suggests a write/apply operation, but annotations declare destructiveHint=false. While the existence of apply_change_set suggests create_change_set only creates a set, the description's wording could mislead an agent into thinking it applies changes. It also doesn't disclose that this is a write operation (though readOnlyHint=false implies it) or mention idempotency. The description fails to clarify its actual behavioral scope.
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 only two sentences, so it's concise, but the second sentence is redundant and potentially misleading. It could be trimmed to just 'Create a staged file change set' and then note that applying is separate. It doesn't front-load the essential differentiator from siblings. It's not too long, but not optimally structured.
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 doesn't explain what happens after creation—whether to use add_file_change and apply_change_set—or what the tool returns. There's no output schema, so the description should at least hint at the next steps or return value. It also doesn't mention any prerequisites (e.g., existing app). The workflow is incomplete, leaving the agent without a clear sequential path.
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%, with both label and app_id already described. The description adds no extra meaning about parameter relationships, defaults, or constraints. It only mentions 'staged file change set' which doesn't directly illuminate the parameters. Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create a staged file change set,' which names the action and resource. However, it then adds 'Add multiple file changes, validate them as one app state, then apply atomically,' which could be misread as the tool performing all these steps, especially given sibling apply_change_set. It doesn't explicitly differentiate itself from apply_change_set, leaving the exact scope ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus apply_change_set or add_file_change. The description implies a workflow but never states 'Use apply_change_set to apply' or 'Create a set before adding changes.' The agent is left to infer the sequencing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_entity_recordsCreate Entity RecordsAInspect
Create/insert records in one app entity. Executes directly for the authenticated app owner and returns the created record ids.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| reason | No | Why these records should be created | |
| records | Yes | Records to create | |
| expected_count | No | Optional safety check; the write aborts if the record count differs |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint=false, openWorldHint=false, idempotentHint=false, destructiveHint=false), so they offer no safety profile. The description adds that it executes directly for the authenticated owner and returns created record IDs, which is useful. However, it does not disclose potential side effects, failure behavior (such as the expected_count safety abort mentioned in the schema), or whether the operation is batch-atomic. With weak annotations, the description should carry more of this burden.
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 a single, concise sentence that front-loads the core action and includes the key behavioral detail (return of created IDs). There is no redundancy or fluff; every phrase contributes to understanding the tool's purpose and outcome.
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 create operation with five parameters and no output schema, the description is adequate but not exhaustive. It explains the execution context (direct for owner) and return value (IDs), but does not mention batch behavior, error conditions, or prerequisites like entity existence. Given the tool's moderate complexity and the absence of an output schema, some additional context would improve completeness, though it is not severely lacking.
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 all five parameters (app_id, entity, reason, records, expected_count) are already documented in the input schema. The description does not add any additional meaning or clarification beyond what the schema provides. Per the standard, a high-coverage schema sets a baseline of 3, and the description offers no extra value here.
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 starts with 'Create/insert records in one app entity,' which clearly states the action (create/insert) and the resource (records in an app entity). It distinguishes itself from siblings like create_entity_schema (which creates the schema) and update_entity_records (which modifies existing records) by focusing on insertion. The added detail 'returns the created record ids' further clarifies the outcome.
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 this tool is for creating records, but it does not explicitly say when to use it versus alternatives such as update_entity_records, delete_entity_records, or seed_entity. The phrase 'Executes directly for the authenticated app owner' hints at an ownership requirement but provides no exclusions or conditions. There is no comparison with sibling tools to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_entity_schemaCreate Entity SchemaBInspect
Create an entity schema file in entities/.json. Creates a Saved Version before writing.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| schema | Yes | JSON schema object | |
| indexes | No | ||
| metadata | No | ||
| overwrite | No | ||
| relationships | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write behavior (readOnlyHint=false). The description adds a notable detail that a Saved Version is created before writing, which is useful. However, it omits other behavioral aspects like handling of existing files (overwrite parameter), whether directories are created, or potential failure modes. While it adds some context, it does not fully compensate for the lack of annotation coverage on 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 two concise sentences with no redundant words. The primary action is front-loaded, and the saved-version behavior is stated succinctly. Every word 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 the tool has 7 parameters, nested objects, and no output schema, this description is far too brief. It lacks details about the schema structure, optional parameters, behavior when overwriting, and expected return value. An agent would need to consult the schema extensively and might still be uncertain about semantics for the optional fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (43%), so the description should clarify parameters. It only infers that 'entity' becomes part of the file path, and mentions nothing about 'schema', 'indexes', 'metadata', 'overwrite', or 'relationships'. The description adds minimal meaning beyond the schema, failing to compensate for the undocumented parameters.
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 action ('Create an entity schema file') and the resource ('in entities/<Entity>.json'). It uses a specific verb and names the output location, distinguishing it from siblings like update_entity_schema. The purpose is immediately obvious.
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?
No guidance is provided on when to use this tool versus alternatives such as update_entity_schema or create_entity_records. The description does not mention conditions, prerequisites, or typical scenarios, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ab_testDelete A/B TestADestructiveInspect
Delete a native A/B test from an app. Creates a Saved Version before the change.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| test_id | Yes | A/B test ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds a valuable behavioral detail—'Creates a Saved Version before the change'—which agents need to understand the tool's safety net. This goes beyond the annotations and is precise.
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, front-loads the core action, and adds one crucial behavioral note. No wasted words or repetition of schema 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 destructive tool with two well-documented required parameters, the description covers purpose, side effects, and scope. It doesn't detail return values or error behavior, but with no output schema and straightforward parameters, nothing critical is missing. An agent can safely invoke it with the given info.
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 both parameters (app_id and test_id) are documented in the schema. The description adds no additional meaning about parameters beyond the schema, so the baseline 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 a specific action ('Delete') on a specific resource ('a native A/B test from an app') and mentions a side effect ('Creates a Saved Version'). This differentiates it from siblings like update_ab_test or create_ab_test, even without reading their schemas.
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 purpose implies when to use it (to delete an A/B test), but the description does not explicitly contrast with alternatives like update_ab_test or note conditions where deletion might be inappropriate. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_entity_recordsDelete Entity RecordsADestructiveInspect
Delete exact records by ID or exact-match filters. Executes directly for the authenticated app owner; pass expected_count as a safety check to abort on a mismatch.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| reason | No | Why these records should be deleted | |
| filters | No | One exact-match selector or a list of exact-match selectors | |
| record_ids | No | Exact record IDs to delete | |
| expected_count | No | Required match count safety check, when known |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true. The description adds that it executes directly for the authenticated app owner, clarifying authorization scope, and explains the expected_count safety check that aborts on mismatch. This provides useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The key action and safety check are front-loaded. The description is efficient and clean, with every sentence earning 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?
No output schema exists, so the description doesn't need to explain return values. It covers the core action, safety mechanism, and authorization. Some ambiguity remains about whether filters and record_ids can be combined, but for a destructive tool with annotations, the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a description. The description mentions record_ids and filters for exact matches and expected_count as a safety check, but these are already stated in the schema. It adds minimal meaning beyond what the schema provides, so a 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 ('delete') and resource ('entity records'), and clarifies the method (by ID or exact-match filters). This clearly distinguishes it from sibling delete tools like delete_ab_test and delete_secret, and from create/update entity record 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 usage for exact deletions but does not explicitly mention when to use this tool versus alternatives like update_entity_records or create_entity_records. There is no guidance on when not to use it, leaving the agent to infer based on intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_secretDelete SecretADestructiveInspect
Delete one app secret by key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key name | |
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description does not need to restate these. It adds the nuance that deletion is by key, but does not disclose additional behavioral details such as irreversibility or permission requirements. The description is consistent with annotations but adds limited context beyond them.
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 a single, concise sentence with no superfluous words. It is front-loaded with the core action and resource, making it immediately scannable.
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 two-parameter deletion tool with no output schema, the description provides enough information for an agent to use it correctly. The destructive nature is covered by annotations, and the schema documents the parameters. Nothing critical is missing for the described scope.
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 (app_id and key) have descriptions in the schema, covering 100% of the parameters. The description does not add any extra semantic information beyond what the schema provides, so the 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 operation ('Delete'), the resource ('app secret'), and the selection criteria ('by key'). It is unambiguous and distinguishable from sibling tools like list_secret_keys and set_secret, which have different purposes.
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 when to use this tool (when you need to delete a specific app secret), but it does not explicitly state alternatives or provide exclusions. No guidance is given about when not to use it or how it compares to set_secret or list_secret_keys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detach_agent_whatsappDetach Agent WhatsappADestructiveInspect
Disconnect the owner's WhatsApp route from a platform number. Removes only this account's route; other accounts sharing the number keep theirs.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number_id | Yes | The number to disconnect, from get_agent_whatsapp. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds value by specifying the destructive scope (only this account's route, not others), giving the agent a precise understanding of what is affected. This goes beyond the bare annotation and clarifies the non-idempotent nature implicitly. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero fluff. The core action and the distinction from other accounts are front-loaded, and the second sentence only adds essential scope information. Every word 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 single-parameter action with clear annotations and no output schema, the description provides everything needed to call the tool correctly: what it does, what it affects, and the key nuance about shared numbers. There are no missing prerequisites or hidden behaviors that an agent would need to know.
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% for the single parameter, and the description does not add any additional parameter-level detail beyond the schema's own description ('The number to disconnect'). The phrase 'platform number' maps directly to the parameter, but no new semantics are introduced. Baseline 3 applies due to full 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 states a specific action (disconnect/detach) on a defined resource (owner's WhatsApp route from a platform number) and explicitly delimits the scope to this account only, distinguishing it from sibling tools like attach_agent_whatsapp and get_agent_whatsapp. The verb-resource pairing 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?
The description clearly implies when to use (to remove the owner's route from a number) and provides context that other accounts are unaffected. However, it does not explicitly name alternatives or state when not to use it, though the opposite action (attach) is self-evident from the sibling list. Lacks explicit exclusions but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discard_change_setDiscard Change SetADestructiveInspect
Discard a pending staged change set without changing app files.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| change_set_id | Yes | Change set ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating, destructive operation. The description adds valuable context that discarding does not change app files, clarifying the precise side-effect scope. This goes beyond what annotations convey without contradicting them.
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 a single, efficient sentence that front-loads the core purpose and includes the key qualifier. There is no fluff or redundant wording, and every element 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 two-parameter tool with annotations covering safety profiles and the schema documenting parameters, the description provides sufficient context on what the tool does and its side-effect boundaries. It doesn't repeat return-value information (no output schema) and the missing usage guidance is already addressed in the usage dimension.
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 fully describes both parameters (app_id: 'The app ID', change_set_id: 'Change set ID'). The description adds no additional parameter-level meaning, so with 100% schema coverage the 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 uses a specific verb ('discard'), identifies the resource ('pending staged change set'), and adds a clarifying qualifier ('without changing app files'). This distinguishes it clearly from sibling tools like apply_change_set and create_change_set. An agent knows exactly what action and scope this tool covers.
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 states the action ('discard a pending staged change set') but provides no explicit guidance on when to use it versus alternatives like apply_change_set or validate_change_set. It implies usage for discarding changes, but there are no explicit when-not or alternative selection cues, leaving the agent to infer the proper context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ab_test_statsGet A/B Test StatsARead-onlyIdempotentInspect
Get views, unique visitors, conversions, and conversion rates for an A/B test.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| test_id | Yes | A/B test ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds no additional behavioral context such as authentication requirements, rate limits, or response format details beyond naming the metrics. It neither contradicts annotations nor enriches them, resulting in a neutral score.
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 a single, front-loaded sentence that states the action and the specific data returned. There is no fluff or redundant information; every word contributes to the meaning.
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 covers the key return values (views, unique visitors, conversions, conversion rates) and the two required parameters are fully documented in the schema. While it doesn't mention potential nuances like time period or filtering, these are likely implied by the A/B test context. For a simple read tool with annotations covering safety, the description is nearly complete, though a note on returning aggregated historical stats would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as both app_id and test_id have descriptions in the schema. The tool description does not add any extra semantic detail about the parameters (e.g., formats, how to locate them, or relationships), so it adds no value beyond the schema. Baseline 3 applies because the schema already documents both parameters.
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 (Get), a clear resource (A/B test stats), and enumerates exactly which metrics are returned (views, unique visitors, conversions, conversion rates). It distinguishes itself from sibling tools like create_ab_test, update_ab_test, and list_ab_tests by focusing on stats retrieval, leaving no ambiguity about its role.
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 purpose is self-evident as a read operation for a specific A/B test, so usage is implied. However, the description does not explicitly state when to use this tool over alternatives (e.g., list_ab_tests for listing tests, get_app_analytics for broader analytics) or mention any exclusions. It relies on the agent inferring from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_whatsappGet Agent WhatsappARead-onlyIdempotentInspect
Read the WhatsApp state of the connected account: whether the owner's phone is verified, which platform numbers they can connect, and which conversations already route to which agent. Call this first whenever the user asks to talk to an agent on WhatsApp, and repeat its next_step to them.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Optional: report only this agent's WhatsApp state. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: it reveals that the response includes a 'next_step' that should be repeated to the user, and it describes the contents of the state. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero wasted words. The key functional information is front-loaded, and the usage guidance is concise and actionable. Every sentence serves a purpose.
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 read-only tool with full schema coverage and safety annotations, the description is quite complete. It explains what state is read, when to call it, and hints at a 'next_step' in the response. It does not fully detail the response structure, but this is a minor gap given the tool's simplicity and the mention of next_step.
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 fully documents the only parameter, agent_id, with a clear description ('Optional: report only this agent's WhatsApp state.'). The tool description does not add any additional meaning about this parameter, so it relies entirely on the schema's coverage, which is already complete. 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 states the tool's purpose: reading the WhatsApp state of the connected account, listing specific aspects (owner's phone verification, platform numbers, conversation-agent routing). It uses a specific verb ('Read') and resource, and is easily distinguished from sibling tools like attach_agent_whatsapp and detach_agent_whatsapp because it is explicitly 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?
Provides explicit guidance: 'Call this first whenever the user asks to talk to an agent on WhatsApp' and instructs to repeat its 'next_step'. This gives clear when-to-use context, but it does not explicitly mention when not to use it or name alternative tools, so it falls just 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.
get_app_analyticsGet App AnalyticsARead-onlyIdempotentInspect
Traffic analytics for an app's published site over a chosen window: total views, unique visitors, daily series, top pages, top referrer domains and device split.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window in days (1-90, default 7) | |
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by detailing the exact output categories (daily series, top pages, referrers, device split), which informs the agent what the response will contain. It does not contradict annotations and adds non-redundant information about 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?
A single sentence that is well-structured, front-loading the main purpose ('Traffic analytics for an app's published site over a chosen window') followed by a concise list of returned metrics. No redundant words or filler; every phrase 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?
The description is quite complete for a read-only analytics tool. It tells the agent what metrics to expect, and the annotations cover safety. Minor gaps include not specifying ordering for 'top pages' or whether the daily series is per day in the window, but these are not critical for calling the tool correctly. Given the moderate complexity and no output schema, this is sufficiently 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 input schema has 100% description coverage for both parameters: 'app_id' is described as 'The app ID' and 'days' includes the range and default. The description does not add any extra parameter-specific details, but with high schema coverage, a baseline of 3 is appropriate. No further compensation is needed.
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 a specific verb ('get'), a specific resource ('app analytics'), and the scope ('published site over a chosen window'). It enumerates the exact metrics returned (total views, unique visitors, daily series, top pages, top referrers, device split), which strongly distinguishes it from sibling tools like get_app_detail or get_app_status.
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 provides context that the tool targets the published site over a chosen window, which implies when to use it (when analyzing traffic of the live site). However, it does not explicitly contrast it with alternatives like get_ab_test_stats or get_app_detail, nor does it give any exclusion criteria. The guidance is present but not explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_detailGet App DetailARead-onlyIdempotentInspect
Deep introspection of an app: entities, pages, settings, integrations, environment variables, and file structure. Use this to understand what an app contains before updating it.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by specifying the scope of returned data (entities, pages, settings, etc.), which goes beyond the annotations. It does not contradict annotations; it complements them with content coverage.
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 concise sentences: the first lists the tool's scope, the second gives the usage context. There is no fluff or repetition. The key information is front-loaded, and every word serves a purpose.
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 tool is complex (aggregating many app components) and has no output schema. The description lists the major categories of data returned, which provides decent guidance. It does not specify the exact structure or whether pagination is involved, but for an introspection tool, the listed categories are likely sufficient for an agent to decide to call it. It's complete enough for effective selection.
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 only parameter, app_id, is fully described in the schema with 'The app ID' (100% coverage). The description adds no additional parameter details. Per the rubric, with high schema coverage, a baseline 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 uses the specific verb 'Deep introspection' with a clear resource ('an app') and enumerates its contents: entities, pages, settings, integrations, environment variables, and file structure. This clearly distinguishes it from more targeted siblings like get_app_files, get_pages, and get_entities, which cover only subsets.
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 provides a clear usage context: 'Use this to understand what an app contains before updating it.' This implies a proactive overview use case. However, it does not explicitly mention alternatives or when not to use it, though the existence of numerous narrower sibling tools suggests they exist. It's 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.
get_app_filesGet App FilesBRead-onlyIdempotentInspect
Get the file tree for an app with paths and byte sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds what data is returned (paths and byte sizes) but does not describe the structure of the file tree (e.g., hierarchy, recursion, inclusion of directories). No side effects are relevant, but more detail on the exact output shape would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that includes the verb, resource, and output specifics. No filler, front-loaded with the key action and result. Highly efficient for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only getter with a single parameter and full schema coverage, the description is mostly sufficient. However, it leaves ambiguity about what 'file tree' means (full recursive structure vs. top-level listing) and does not clarify how it relates to read_app_files. Given the presence of sibling tools, a bit more context on the intended use would improve completeness.
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% (app_id described as 'The app ID'), so the schema already handles parameter documentation. The description adds no extra meaning about app_id beyond what the schema states, so 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 ('Get'), resource ('file tree for an app'), and the data returned ('paths and byte sizes'). This is clear and distinguishes it from tools like get_app_detail. However, it does not explicitly differentiate from the sibling read_app_files, which could be confused as similar in purpose.
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?
No guidance on when to use this tool vs. alternatives. The sibling list includes read_app_files and read_app_file, but the description does not clarify whether this is the right choice for listing file metadata vs. reading content. No exclusions or alternative routing provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_linksGet App LinksBRead-onlyIdempotentInspect
Return editor, preview, published path, subdomain, and custom-domain links plus whether each works for anonymous visitors, app users, or Studio users based on publish and auth settings.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description is not burdened with those. It adds the behavioral nuance that results depend on publish and auth settings, which is useful context beyond the schema, but it does not mention error conditions or output structure. This is moderate added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary outcome ('Return editor, preview, published path...') but packs a lot of detail. It is efficient and not padded, maintaining good structure for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, no output schema, and annotations covering safety, the description adequately explains what links are returned and the access dimension. It could specify the response structure more explicitly, but for a simple read-only fetch it is sufficiently 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 schema already documents app_id with a clear description ('The app ID'), and coverage is 100%. The tool description adds no additional information about the parameter, so it stays at the baseline of 3 without compensating for any gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns multiple types of app links (editor, preview, published path, subdomain, custom-domain) plus access info, which is specific and informative. It does not explicitly contrast with siblings like get_preview_url, but the scope is distinct enough to be understood.
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 provides no guidance on when to use this tool versus alternatives such as get_preview_url or get_app_detail. It simply describes what it returns without clarifying use cases, prerequisites, or exclusions, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_security_auditGet App Security AuditBRead-onlyIdempotentInspect
Read recent server-side security audit events for an app.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as readOnly, idempotent, and non-destructive, which the description aligns with. The description adds the 'recent' and 'server-side' qualifiers, which provide some context, but does not disclose whether events are paginated, sorted, or filtered. Given annotations cover the safety profile, a 3 is appropriate.
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 a single, well-formed sentence with no redundancy. The core action and object are front-loaded, making it instantly scannable.
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 read tool with annotations covering safety, the description is adequate but incomplete. It omits details about the output structure, the meaning of 'recent' (time window), and any constraints on the limit parameter. With no output schema, some return format guidance would improve completeness.
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 covers app_id but not limit. The description does not clarify the meaning of limit (e.g., max count, default behavior) or the scope of 'recent'. Since schema coverage is only 50% and the description fails to compensate, parameter understanding is weak.
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 (read), resource (security audit events), and scope (for an app). It distinguishes the tool from generic getters like get_app_analytics, but does not explicitly differentiate from the closely named sibling get_app_security_context. Still, the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_app_security_context or get_app_status. There is no mention of prerequisites or exclusions. An agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_security_contextGet App Security ContextARead-onlyIdempotentInspect
Return safe security context for one owned app: owner id/email, Studio collaborators, generated-app members, route policies, entity policies, and recent security audit entries. Does not return secrets and does not grant access to other apps.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| audit_limit | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable context by stating the response excludes secrets and does not grant cross-app access, which informs the agent about data sensitivity and permission boundaries. This goes beyond the annotations and provides actionable behavioral guidance.
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 concise sentences that front-load the primary purpose and then state exclusions. Each sentence adds meaningful information without redundancy, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool returns a complex security context object, and the description outlines the main components but lacks details on the response structure, field types, or how audit_limit behaves. Since there is no output schema and only partial parameter documentation, the description is not fully complete for an agent to predict the response shape or usage nuances.
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 description does not mention either parameter. The schema provides a minimal description for app_id and none for audit_limit, leaving its meaning unclear. With 50% schema coverage, the description fails to compensate for the un-documented audit_limit parameter, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a safe security context for one owned app, listing specific components (owner id/email, collaborators, members, policies, audit entries). It explicitly notes it does not return secrets or grant access to other apps, which distinguishes it from broader app management tools. This is a specific verb+resource with clear scope and boundaries.
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 does not explicitly state when to use this tool over alternatives like get_app_security_audit or get_app_detail. It implies it's for owned apps and includes a warning about not granting access to other apps, but no direct comparison to sibling tools. This leaves usage context implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_statusGet App StatusBRead-onlyIdempotentInspect
Get app overview: files, published state, URL, active jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds useful content-scope context by listing what the response contains (files, published state, URL, active jobs), which is beyond the annotations. No contradictions, but it adds nothing about reach, pagination, size limits, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. The purpose leads immediately, and the component list (files, published state, URL, active jobs) earns every word by demarcating the tool's scope. Nothing could be trimmed without losing meaning.
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, read-only tool with rich annotations and no output schema, the description is reasonably complete: it names the sole required parameter's purpose via the schema and lists the four return components. It could note the aggregate nature versus get_app_detail or describe the response structure, but these are minor against the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single parameter app_id is documented as 'The app ID' in the schema. The description adds no additional parameter meaning (format, origin, or examples), so it rests on the schema's documentation, matching the baseline for full 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 states a specific verb and resource ('Get app overview') and enumerates the returned components (files, published state, URL, active jobs), which clearly conveys a summary/aggregate tool. It distinguishes itself from the focused siblings like get_app_files and get_job_status by signaling it is an aggregate overview, though it does not explicitly name any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this overview tool versus the many overlapping siblings (get_app_detail, get_app_files, get_app_links, get_job_status, get_pages). The word 'overview' only implies a quick-summary use case; no exclusions or selection criteria are given, leaving the agent to infer the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_ssl_statusGet Domain SSL StatusARead-onlyIdempotentInspect
Return SSL/certificate status and pending certificate validation DNS records for the app custom domain.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| domain | No | Optional configured custom domain. If omitted, uses the app's current custom domain. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds useful behavioral context by specifying that it returns 'pending certificate validation DNS records,' which is not in the annotations and helps the agent understand what actionable information is provided. This goes beyond the annotation baseline.
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 a single, well-structured sentence that front-loads the core purpose. It contains no fluff, filler, or redundant information, and every word contributes meaning.
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 read-only getter with just two parameters and no output schema, the description provides sufficient context for an agent to understand what is returned at a high level. It does not detail the exact output structure, but given the simplicity of the tool and the annotations covering safety, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (app_id and domain), so the schema already documents them fully. The description does not add additional meaning beyond what the schema provides, though it does mention the domain is a custom domain. This meets the baseline for high coverage without extra enrichment.
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 returns SSL/certificate status and pending certificate validation DNS records for the app custom domain. The verb 'Return' and specific resource make the purpose unambiguous, and it is distinct from sibling tools like get_domain_verification, which focuses on domain verification rather than SSL status.
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 clearly implies the tool is for retrieving SSL status, but it does not explicitly state when to use it versus the many related domain tools (e.g., check_domain_verification). There is no mention of when not to use it or alternatives, leaving the selection largely to inference from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_verificationGet Domain VerificationARead-onlyIdempotentInspect
Return the exact DNS records and instructions required to verify and route the app custom domain.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| domain | No | Optional configured custom domain. If omitted, uses the app's current custom domain. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds value by specifying the exact return content ('exact DNS records and instructions') and its purpose (verification and routing), which gives the agent a clear expectation of the output. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key action and resource. No fluff or redundant details. Every word 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?
The description covers the essential purpose and what it returns, which is sufficient given the tool's simplicity and the annotations' coverage of safety. It lacks an output schema, but the description explicitly states what it returns. Minor omission: it doesn't mention that the output may vary depending on the domain parameter, but the schema already clarifies that 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?
Schema description coverage is 100%: both parameters already have clear descriptions in the schema. The tool description does not add any additional semantics beyond what the schema provides. Baseline of 3 is appropriate when schema fully documents parameters.
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 ('Return') and resource ('exact DNS records and instructions') and the purpose ('to verify and route the app custom domain'). It clearly distinguishes from siblings like check_domain_verification (which likely checks status) and get_domain_ssl_status by focusing on the records and instructions needed for setup.
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 usage: call this when you need the DNS records to verify and route a custom domain. However, it does not explicitly name alternatives or state when not to use it. There's no guidance on choosing between this and check_domain_verification or get_domain_ssl_status, leaving the agent to infer based on the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entitiesGet EntitiesARead-onlyIdempotentInspect
Get all entity (data model) schemas for an app, with record counts. Each entity has fields, types, and relationships.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint: true, idempotentHint: true, and destructiveHint: false, covering safety. The description adds that it returns record counts, which is a behavioral detail not in the schema, and mentions 'fields, types, and relationships', giving a sense of the payload. However, it doesn't disclose potential large response sizes or pagination behavior, which might be relevant for an app with many entities, but given the annotation coverage, the bar is lowered.
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 concise: two sentences with no fluff. It front-loads the main action ('Get all entity schemas') and adds a useful detail (record counts) and content aspects. It's efficient, though it could have been slightly more specific about the output shape without adding much length.
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 simplicity of the tool (one parameter, no output schema, no nested objects), the description covers the core purpose and content. With annotations covering safety and idempotency, the description is adequate for correct invocation. It might be slightly incomplete regarding potential pagination or large result sets, but that's not critical for basic usage. The result format is not described, but since there's no output schema, a brief hint about the return structure could help, but it's not blocking.
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 only parameter 'app_id' is fully described in the schema with 'The app ID', giving 100% coverage. The description does not add clarity beyond what the schema provides; it repeats that it is for an app. Baseline is 3, and the description adds no special value here.
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 retrieves all entity schemas for an app and includes record counts, adding detail about content ('fields, types, and relationships'). However, it could be more specific about the exact scope (e.g., whether it includes computed or related entities) and does not distinguish itself from sibling tools like 'create_entity_schema', 'update_entity_schema', or 'query_entity', though the read-only retrieval intent is clear from context.
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 usage for retrieving entity schemas and counts but provides no explicit when-to-use or when-not-to-use guidance. It doesn't name alternatives like 'query_entity' (to fetch actual records) or 'get_entity_schema' (if it existed), leaving the agent to infer that this is a high-level metadata listing. The instruction 'for an app' gives some context, but there's no explicit exclusion of record-level operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_errorsGet ErrorsARead-onlyIdempotentInspect
Get recent runtime errors for an app (last 20). Useful for diagnosing issues before updating.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max errors to return (default 20) | |
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the behavioral detail of returning the 'last 20' errors and emphasizes 'recent', which provides context beyond the structured annotations without contradicting them.
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 efficiently written in two short sentences with no filler. It front-loads the action and scope, and the second sentence adds a relevant use case. Every word 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 read-only tool with no output schema and two well-documented params, the description provides enough context: what it does, the scope, and a use case. Annotations cover the safety profile, so nothing critical is missing 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?
Schema description coverage is 100% and both parameters (app_id, limit) have descriptions in the schema. The description does not add any meaning beyond what the schema already provides; it only mentions 'last 20' which mirrors the default value, so no extra value is added.
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 action ('Get'), the resource ('recent runtime errors'), and the scope ('for an app', 'last 20'). It distinguishes itself from sibling tools like get_app_status or get_app_analytics by focusing specifically on errors, so an agent can easily identify what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Useful for diagnosing issues before updating' provides a clear context for when to use this tool. While it doesn't explicitly mention exclusions or alternatives, given the tool's simplicity and the absence of a directly competing error-specific sibling, this is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusGet Job StatusARead-onlyIdempotentInspect
Poll the status of an async generation job. Use this after create_app or update_app to know when the job is done. Returns status ('running' or 'done'), progress events, and result summary when complete.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id returned by create_app or update_app |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds behavioral detail by listing what the tool returns ('status', 'progress events', 'result summary'), which goes beyond the annotations and helps the agent know what to expect from the call.
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 focused sentences: the first states the purpose and reference to preceding calls, the second details the return payload. All key information is front-loaded with zero 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 its simplicity (single parameter, no output schema, read-only annotations), the description fully equips an agent to call it correctly: it tells when, what it returns, and the parameter source. No additional guidance is necessary.
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%, with job_id adequately documented as 'The job_id returned by create_app or update_app'. The tool description repeats this context but adds no deeper semantic detail beyond the schema baseline, so a 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?
Description states a specific verb ('poll'), a specific resource ('status of an async generation job'), and the exact triggering context ('after create_app or update_app'). This distinguishes it from sibling tools like get_app_status by scoping it to job lifecycle rather than app state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool ('Use this after create_app or update_app to know when the job is done'), which is clear context. It doesn't spell out exclusions or alternatives, but the mention of the generating calls implicitly routes the agent. Meets 'clear context' but not full 'when-not/alternatives'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pagesGet PagesARead-onlyIdempotentInspect
Get all pages in an app with their file paths and sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the scope 'all pages', which implies no filtering, but does not elaborate on potential large result sets, pagination, or other behaviors. It is consistent with annotations but provides minimal extra context, so a 3 is appropriate.
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 a single, concise sentence with no redundant words. It front-loads the key action and resource, and immediately states what is returned. It is perfectly sized for the tool's simplicity.
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 read-only tool with one parameter and no output schema, the description is nearly complete. It states what it returns (file paths and sizes) and covers the essence. The only minor gap is the lack of mention of pagination or result limits, but given the context and the explicit 'all pages', this is a minor omission. A 4 is justified.
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 covers the single parameter app_id completely (100% coverage), including a description. The tool description does not add any extra meaning about the parameter beyond saying 'in an app', which aligns with the schema. Thus, schema documentation carries the burden, and the description adds no additional value.
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 action (Get) and resource (all pages in an app), and specifies return contents (file paths and sizes). This differentiates it from sibling tools like get_app_files or read_app_files by focusing specifically on pages. It is precise and 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?
The description does not provide any guidance on when to use this tool versus alternatives. It only states what it does without mentioning scenarios where it should be preferred, such as when needing page-specific data versus app-level files. No exclusions or pointers to siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_guideGet Platform GuideARead-onlyIdempotentInspect
Return a machine-readable Fine Structure / FSe2 guide for AI agents. Call this at the start of an MCP session to learn app files, entities, safe edit workflows, validation, publishing, A/B testing, secrets, and platform rules.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | No | Optional app ID. If provided, the guide includes a safe app context summary. | |
| sections | No | Optional subset of guide sections to return. | |
| task_type | No | Optional task hint, for example edit_app, direct_file_edit, seed_data, or publish_app. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds value by enumerating the guide's contents, letting an agent know what to expect. It does not contradict annotations and adds contextual detail beyond the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary action and onboarding context front-loaded. Every word earns its place; it is concise without sacrificing informative 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?
With zero required parameters, no output schema, and an onboarding guide as the deliverable, the description fully covers what an agent needs to know: when to call (start of session), what the guide contains, and that optional parameters refine it. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; each parameter (app_id, sections, task_type) has a meaningful description in the schema. The tool description itself does not add semantics beyond what the schema already provides, so it meets the baseline of 3 for high-coverage cases.
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 returns a machine-readable Fine Structure / FSe2 guide for AI agents, listing the specific topics covered (app files, entities, safe edit workflows, validation, publishing, A/B testing, secrets, platform rules). It uses a specific verb (return) and resource (guide), and the 'at the start of an MCP session' context differentiates it from siblings like get_recommended_workflow.
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 at the start of an MCP session, giving clear when-to-use guidance. It does not mention when not to use it or name alternative tools, so it misses the exclusion aspect that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_preview_urlGet Preview URLBRead-onlyIdempotentInspect
Return editor preview and published/public URLs for an app.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description merely says 'Return,' which is consistent and adds no extra behavioral details. It does not contradict annotations, but it also doesn't add value beyond what annotations provide, so a baseline score of 3 is appropriate.
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 a single, concise sentence with no fluff. It front-loads the verb 'Return' and clearly states what is returned. Every word adds value, making it appropriately sized for a simple read-only tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and no output schema, the description adequately explains the tool's purpose by specifying that it returns editor preview and published/public URLs. It doesn't detail the return format or error cases, but for a read-only URL fetcher, this is sufficient. The presence of siblings like get_app_links makes the description more complete than a generic 'get URLs' description, earning a 4.
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%, with app_id already described as 'The app ID.' The tool description does not add any additional meaning about the parameter, such as format, validation, or how it influences the result. Since the schema fully covers the parameter, a baseline score of 3 is correct; the description adds no extra clarity.
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 'Return' and the resource 'editor preview and published/public URLs for an app.' It is specific about what is returned, distinguishing this from a generic 'get links' tool by specifying preview and public URLs. However, it does not explicitly contrast with siblings like get_app_links, so it doesn't fully eliminate ambiguity, but the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of alternatives, exclusions, or context for when this tool is preferable. Given that siblings like get_app_links, inspect_preview, and get_app_detail exist, the description offers no help in selecting this specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommended_workflowGet Recommended WorkflowARead-onlyIdempotentInspect
Return the recommended MCP tool sequence for a task type. Use this before creating apps, editing files, seeding data, publishing, setting up A/B tests, restoring versions, or configuring secrets/integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | Optional short description of the user's goal. | |
| app_id | No | Optional app ID. If provided, the workflow includes a safe app context summary. | |
| task_type | No | The task type to plan. | unknown |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, which establishes a safe, read-only, idempotent operation. The description adds a useful behavior detail: when app_id is provided, the workflow includes a safe app context summary. This is beyond what annotations convey. It doesn't disclose output format, but for a planning tool that's acceptable given the safety profile.
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 zero redundancy. It leads with the core purpose, then immediately provides the usage contexts. Every word adds value, and it is efficiently 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?
The tool is simple: zero required parameters, all optional, and a well-defined enum for task_type. The description covers what it does and when to use it. While it doesn't describe the return format or behavior for 'unknown' task_type, the schema defaults cover that, and the agent can infer the output is a sequence. It's complete enough for correct usage, but a bit more detail on output expectation would make it a 5.
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% — each parameter has a description, and task_type has a full enum. The tool description does not add extra semantics beyond what the schema already provides (e.g., it doesn't explain how goal affects the output or what the 'safe app context summary' means). Since the schema already documents parameters thoroughly, a baseline of 3 is appropriate; no improvement from the 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 a specific action ('Return the recommended MCP tool sequence') and a specific resource ('for a task type'). It also lists concrete use cases (creating apps, editing files, seeding data, etc.), which differentiates it from sibling tools like get_platform_guide or get_app_status. An agent can immediately understand what this tool does and when it applies.
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 'Use this before creating apps, editing files, seeding data, publishing, setting up A/B tests, restoring versions, or configuring secrets/integrations.' This gives clear positive contexts. It doesn't explicitly state when not to use it or name alternatives, but the directive use-before list is strong guidance. The lack of exclusions or named alternatives keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_previewInspect Live PreviewBRead-onlyIdempotentInspect
Return server-side preview context: URLs, persisted runtime/network errors, static clickable candidates, pages, and explicit live-browser availability.
| Name | Required | Description | Default |
|---|---|---|---|
| route | No | Optional route to inspect | |
| app_id | Yes | The app ID | |
| auth_as | No | Optional auth simulation: anonymous | |
| auth_as_role | No | Optional app role simulation, e.g. staff/admin/customer |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds useful context about what data is returned (URLs, errors, clickable candidates, pages, live-browser availability), which goes beyond the annotations. However, it does not disclose the exact structure of the response or mention error handling when the app_id is invalid. Given the annotation coverage, a 3 is appropriate – the description adds value but is not rich in behavioral 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?
The description is a single sentence that front-loads the core purpose and then concisely lists the returned content. Every word earns its place; there is no fluff, no redundancy, and it is easily scannable.
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 tool has no output schema, so the description is the only source for what the agent receives. It lists the categories of returned data but does not explain the structure (e.g., object vs array), how parameters like route or auth_as affect the result, or what 'explicit live-browser availability' means in practice. While not incomplete enough to be unusable, an agent would benefit from more detail on parameters and response format. This is adequate but leaves 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 descriptions cover 100% of parameters, so the schema already documents each parameter's basic meaning. The tool description does not add additional semantics for parameters like route, auth_as, or auth_as_role, so it provides no extra value beyond the schema. With full coverage, the baseline of 3 is correct.
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 returns server-side preview context and enumerates the specific elements it includes (URLs, errors, clickable candidates, pages, live-browser availability). The verb 'return' and the resource are specific, distinguishing it from siblings like get_preview_url or get_pages. Minor ambiguity around 'static clickable candidates' but overall purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It does not mention any conditions, choose-this-over-that logic, or exclusions. Sibling tools like get_preview_url, get_pages, and get_errors overlap in scope, so the absence of usage guidance is a notable gap. The agent is left to infer when to pick this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_app_memberInvite App MemberAInspect
Provision a generated-app runtime member with a role. This does not create a Studio collaborator, and the owner role cannot be assigned. password is required: ask the account owner which password the member should get. This tool never generates one, because a generated password would come back in the result and that is a live credential in the conversation transcript.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | App role, e.g. admin/staff/customer | |
| Yes | Member email | ||
| app_id | Yes | The app ID | |
| password | Yes | The password this member signs in with, chosen by the account owner. Required, and never echoed back in the result. | |
| full_name | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutating, non-idempotent operation. The description adds crucial behavioral detail: it never generates a password and explains the security rationale (avoiding live credentials in the transcript). This goes beyond annotations and helps the agent understand side-effects and password handling without contradicting the structured metadata.
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 purpose, exclusions, and a password requirement with justification. Every sentence earns its place, with the most critical constraint (password) front-loaded. No redundancy or 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?
For a mutation tool with no output schema and 5 parameters, the description covers the core purpose, exclusions, and a key security constraint. It does not specify success/error return values or exact allowed roles, but given the absence of an output schema and the presence of sibling tools for listing/removal, this is sufficiently complete 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?
Schema coverage is 80%, so the baseline is 3. The description adds meaningful parameter-level info: it explicitly forbids the owner role, which directly informs the 'role' parameter, and clarifies that 'password' is owner-chosen and never echoed. This exceeds schema descriptions, though it does not enumerate all allowed roles beyond the schema's examples.
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 (provision) and resource (generated-app runtime member) and explicitly distinguishes from 'Studio collaborator', helping differentiate from sibling tools like list_app_members or update_app_member_role. It also notes the owner role restriction, adding precision. The term 'generated-app' is slightly niche but the overall purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear 'when not' guidance (not for Studio collaborator) and an actionable operational step (ask the account owner for the password). It does not name specific alternative tools, but the exclusions and required-password instruction give enough context for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ab_testsList A/B TestsARead-onlyIdempotentInspect
List the platform A/B tests configured for an app.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds no additional behavioral context such as rate limits, pagination, or result format. It is consistent with annotations but does not enhance them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with the action verb and scope front-loaded, no unnecessary words, making it efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description adequately captures what the tool does. However, it does not mention the expected return format or any limitations (e.g., pagination), but given the simplicity, it is largely 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 schema describes app_id as 'The app ID,' and the description mentions 'for an app,' which aligns. Since schema coverage is 100%, the description does not need to add extra semantics; it merely confirms the parameter's role, which is already clear.
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 'List' and resource 'platform A/B tests' scoped to an app. It clearly distinguishes from siblings like create_ab_test, update_ab_test, and get_ab_test_stats by focusing on listing all tests rather than individual operations.
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 indicates that it lists tests for an app but does not explicitly mention when to use it versus related tools like get_ab_test_stats or create_ab_test. Context is clear, but no exclusions or alternatives are provided, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agentsList AgentsARead-onlyIdempotentInspect
List the AI agents on the user's account with id, name, role, status and FineMail address.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | No | Optional filter by attached app |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds the specific fields returned, which is behaviorally useful and goes beyond annotations. It does not contradict annotations and does not conceal any side effects, as this is a simple read operation.
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 a single, well-structured sentence that front-loads the action and lists the output fields. No wasted words or redundant information. It is ideal in length for the tool's simplicity.
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 there is no output schema, the description explicitly enumerates the fields returned, which is crucial for an AI agent. It also mentions the optional filter parameter and its purpose. It does not address pagination or limits, but for a simple list tool with one optional parameter, the information is sufficiently complete 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?
The single parameter app_id is fully described in the schema as 'Optional filter by attached app' (schema coverage 100%). The description does not add any extra semantic detail about the parameter beyond what the schema provides. Baseline 3 is appropriate since the schema does the heavy lifting.
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 ('List') and resource ('AI agents on the user's account'), and enumerates the returned fields (id, name, role, status, FineMail address). This clearly distinguishes it from siblings like list_agent_tasks or list_apps, which target different entities.
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 purpose is immediately clear: this is the tool for listing agents. While it does not explicitly name alternatives or exclusions, the context (sibling tools like create_agent, list_agent_tasks) implicitly defines its scope. There is no ambiguity about when to use it, but it stops short of 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.
list_agent_tasksList Agent TasksARead-onlyIdempotentInspect
List scheduled tasks for one agent (or the whole account), including schedule, status and next_run_at.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max tasks to return (1-100) | |
| status | No | Optional status filter: draft, active, paused, archived | |
| agent_id | No | Optional agent id filter |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds value by specifying the returned fields (schedule, status, next_run_at) and the scope (agent or whole account), which helps the agent understand what data to expect. It does not mention pagination or edge cases, but given annotations, the extra context 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 a single, concise sentence that front-loads the main action and scope. It includes the key returned fields without extraneous detail. Every word 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 list tool with optional parameters and no output schema, the description covers the purpose, scope, and some return fields. It does not explicitly state the default limit (50) or that results are paginated, but those are in the schema. The mention of 'schedule, status and next_run_at' gives a good sense of the output. It is adequate for an agent to call it effectively.
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 all parameters are documented in the schema. The description does not add parameter-specific details beyond mentioning the scope (agent_id is implied via 'one agent'), but does not describe the limit or status filters beyond what schema already states. Since the schema carries the full parameter documentation, a baseline 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 a specific verb ('List') and resource ('scheduled tasks') with an explicit scope ('for one agent or the whole account'). It also indicates the fields returned (schedule, status, next_run_at). This distinguishes it from sibling tools like schedule_agent_task (which creates tasks) and list_agents (which lists agents).
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 implicitly conveys when to use the tool—when you need to view scheduled tasks—but it does not explicitly name alternatives or state when not to use it. It does not mention that it is read-only or that it is for querying rather than modifying. Since annotations already cover safety, the lack of explicit routing to siblings is a minor gap. The grounds are implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_domainsList App DomainsARead-onlyIdempotentInspect
List an app's platform path, subdomain, and configured custom domain with verification, SSL, primary-domain, redirect, publish, and login-gating status.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by enumerating the fields returned, which informs the agent of the output scope. However, it does not disclose any additional behavioral traits such as pagination, authentication requirements, or rate limits, which are not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that front-loads the action ('List') and then concisely enumerates the scope. No wasted words, and every element adds clarity. The structure makes it easy to scan and understand.
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 tool has one parameter, no output schema, and the description enumerates the exact fields returned. This is sufficient for an agent to invoke it correctly and anticipate the response shape. It could be slightly more explicit about the return format (e.g., whether it returns a single object or array), but the listing nature suggests an array of domain-related info. Overall, it is nearly complete for a list operation.
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 only parameter, app_id, has a schema description ('The app ID') that fully covers its meaning (100% schema coverage). The description does not add any additional context about the parameter, such as format or usage. Since the schema already provides adequate semantics, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('an app's platform path, subdomain, and configured custom domain') and enumerates the specific attributes returned (verification, SSL, primary-domain, redirect, publish, login-gating status). This clearly distinguishes it from sibling tools like get_domain_ssl_status or configure_domain_redirects, which target narrower aspects.
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 does not explicitly state when to prefer this tool over alternatives. It implies a comprehensive overview use case, but unlike the high-calibration example, it does not name sibling tools or provide exclusion criteria. An agent would need to infer from the context that this is the go-to for a full domain status snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_membersList App MembersARead-onlyIdempotentInspect
List generated-app runtime users/members for an app. This is separate from Studio project collaborators.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds useful scope context about 'generated-app runtime users' but does not disclose return format, pagination, or other behavioral details. With annotations carrying the safety burden, the added context justifies a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The purpose is stated first, and the distinguishing note is placed second. 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 single-parameter read-only list operation, the description covers the essential scope and distinguishes it from collaborators. It doesn't mention return shape or pagination, but given the simplicity and annotation coverage, it is largely complete. A 4 reflects that minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter app_id is fully described in the schema with 'The app ID' at 100% coverage. The description does not add any additional param semantics or format details, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'generated-app runtime users/members' for an app, a specific verb and resource. It also distinguishes this from 'Studio project collaborators', helping differentiate from related tools like invite_app_member or remove_app_member.
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 context by specifying this is separate from Studio project collaborators, implying when not to use it. However, it does not explicitly name alternatives or describe conditions for choosing this tool over other member-related tools, though the distinction gives a helpful exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appsList AppsARead-onlyIdempotentInspect
List applications owned by the authenticated user, newest activity first. Returns up to limit apps per call plus the total count; page with offset when the account has more.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max apps to return (1-200) | |
| offset | No | Apps to skip, for paging |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context about pagination ('Returns up to limit apps per call plus the total count; page with offset') and the total count, which goes beyond the annotations without contradicting them.
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: the first establishes purpose, scope, and ordering; the second explains return behavior and pagination. No wasted words, and key 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 read-only list tool with simple parameters, no output schema, and strong annotations, the description covers everything needed: purpose, scope, ordering, pagination, and response summary (limit + total). It is complete 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 description coverage is 100%, so parameters are documented. The description enhances the schema by explaining how limit and offset interact ('page with offset when the account has more'), which adds usage semantics beyond the individual field descriptions.
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 ('List'), resource ('applications'), and scope ('owned by the authenticated user') with ordering ('newest activity first'). It clearly distinguishes from sibling list_* tools that target other resources (agents, AB tests, domains, etc.).
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 provides clear context for when to use it (listing apps owned by the user) and explains pagination with offset. However, it does not explicitly mention alternatives or when not to use it, though the scope implicitly differentiates it from sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integrationsList IntegrationsARead-onlyIdempotentInspect
List supported integrations and safe connected integration metadata for an app. Tokens/secrets are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint, but the description adds valuable behavioral context by promising that tokens/secrets are never returned. This is beyond what the structured annotations provide and clarifies the safety of the operation, though it does not detail the exact return format or pagination 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 a single, well-structured sentence that front-loads the action and resource while also adding the safety disclaimer. Every word contributes meaning, with no filler or redundant content.
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 simplicity of the tool (one parameter, no output schema), the description adequately covers the core behavior, especially the important detail about never returning secrets. It could be more explicit about whether 'supported integrations' includes both connected and unconnected ones, but overall it provides enough context 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?
The input schema already documents app_id with a basic description ('The app ID'), and coverage is 100%. The tool description does not add any additional parameter-specific meaning or elaboration beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists supported integrations and safe metadata for an app, using a specific verb and resource. It also distinguishes itself from other tools by noting that tokens/secrets are never returned, which helps differentiate it from configuration or write tools like configure_integration.
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?
While the description implies a read-only listing use case (e.g., 'safe metadata', 'tokens/secrets are never returned'), it does not explicitly mention when to use this tool over alternatives like configure_integration. There is no direct comparison or exclusion of other sibling tools, so the agent must infer the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_saved_versionsList Saved VersionsARead-onlyIdempotentInspect
List restorable Saved Versions for an app, including versions created by MCP writes.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds behavioral context by specifying that versions are 'restorable' and 'including versions created by MCP writes,' which goes beyond the structured data. However, it does not detail pagination, ordering, or return format, so the description adds moderate but not rich behavioral insight.
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 a single, front-loaded sentence with zero wasted words. It states the action, resource, scope, and the key distinguishing trait (MCP writes) efficiently, making it easy for an agent to parse 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 simple list tool with one parameter and no output schema, the description is sufficient for an agent to identify the operation. It clearly states the purpose and scope, and the 'restorable' and 'MCP writes' details provide necessary context. The lack of explicit return-format information is a minor gap given the tool's simplicity, but not critical.
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 provides 100% coverage of the sole parameter (app_id) with a description of 'The app ID.' The tool description does not add any additional parameter details, so the schema already does the heavy lifting. Baseline 3 is appropriate since the parameter is fully documented structurally.
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 clear action (list) and resource (restorable Saved Versions) with a specific scope (for an app). It also distinguishes itself by noting it includes versions created by MCP writes, setting it apart from related tools like compare_saved_versions or restore_file_from_version without ambiguity.
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 provides clear context that this is a listing operation for a specific app, but it does not explicitly say when to use this tool versus alternatives (e.g., compare_saved_versions). The inclusion of 'restorable' and 'MCP writes' implies a broad listing use case, but there is no explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_secret_keysList Secret KeysARead-onlyIdempotentInspect
List secret key names for an app. Secret values are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds a valuable behavioral note: 'Secret values are never returned.' This goes beyond the safety hints to specify output content, helping the agent understand that the tool only provides names, not sensitive values. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The first sentence states the action and resource, and the second sentence adds a critical constraint. Information is front-loaded, making it easy for an agent to parse 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 simple read-only list tool with one parameter and no output schema, the description fully conveys what the tool does and what it returns (names). It does not mention pagination or ordering, but these are likely not critical for this basic operation. The behavior is well covered given the simplicity and annotation support.
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% for the single parameter app_id, which is described as 'The app ID'. The description mentions 'for an app' which reinforces the parameter's role but adds no additional format, constraints, or semantics beyond the schema. Baseline score of 3 is appropriate 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?
States a specific verb (List) and resource (secret key names for an app) and explicitly notes that values are never returned. This clearly distinguishes it from set_secret and delete_secret in the sibling list, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly clear from the name and description that it is used to retrieve secret key names. The added caveat that values are never returned implies it should be used when only names are needed, but it doesn't explicitly reference alternatives or exclusions. Given the tool's simplicity and the obvious contrast with set/delete operations, this is adequate context, though not explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_app_filePatch App FileAInspect
Patch one file by replacing exact text. Safer than full overwrite for targeted edits. Creates a Saved Version before changing content. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Virtual file path | |
| app_id | Yes | The app ID | |
| new_text | Yes | Replacement text | |
| old_text | Yes | Exact existing text to replace | |
| replace_all | No | Replace all matches instead of the first match |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint, idempotentHint, destructiveHint), so they provide no behavioral signals. The description adds meaningful disclosure: it creates a Saved Version before modification, claims to be safer, and links to API documentation for path conventions. These go beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: action, safety/comparison, and path guidance. No filler. The key information is front-loaded, and the documentation link is placed last without disrupting the core message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and 5 parameters, the description covers purpose, when to use it, a key side effect (Saved Version), and points to external docs for path details. It doesn't address error handling or replace_all behavior, but those are covered by schema or less critical for invocation. Overall, it's sufficiently complete for an agent to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described. The description's reference to 'replacing exact text' reinforces old_text/new_text, but this is redundant with schema. The only value-add is the path documentation link, which is more about API conventions than parameter semantics. Since schema already covers everything, 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 opens with a precise verb and object: 'Patch one file by replacing exact text.' It immediately distinguishes itself from sibling tools like write_app_file by calling out 'Safer than full overwrite for targeted edits,' which positions it as the refined alternative. The resource (app file) and operation (patch) are 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 states when to use this tool: 'for targeted edits' and contrasts with 'full overwrite,' which clearly implies using write_app_file for wholesale rewrites. It also mentions the Saved Version creation, which may influence choice. It doesn't explicitly name alternatives, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_appPublish AppAInspect
Publish an app - freeze current state and make it live at a URL. Also configures whether the public URL is open, app-login gated, private, or inferred from the app.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID to publish | |
| access_mode | No | Live access policy. public_open = anyone can view. public_auth = public URL opens but app login is required. private = published snapshot remains owner/collaborator-only. keep = preserve current visibility/auth settings. infer = choose from existing settings and obvious app structure. | infer |
| make_public | No | Optional explicit override for whether published URLs are publicly reachable. Prefer access_mode when possible. | |
| auth_required | No | Optional explicit override for generated-app login requirement. Prefer access_mode when possible. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, not destructiveHint=false, and openWorldHint=true, which gives some safety context. The description adds that it 'freezes current state' (implying a snapshot) and 'makes it live,' which is useful. However, it does not explain side effects like whether previous published versions are replaced or how versioning works. The addition is moderate but not rich enough for a 4.
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 core action is front-loaded, and the second sentence efficiently covers the access configuration. Every word earns its place, making this highly concise and clear.
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 straightforward nature of the tool and that all parameters are documented in the schema, the description is largely complete. It clearly states what publishing does. The absence of an output schema means return values are not required. Minor gaps include not specifying prerequisites (e.g., app must exist) or post-publish steps, but these are not critical for this operation.
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% for all 4 parameters, so the description carries little additional weight. The description's mention of 'public URL is open, app-login gated, private, or inferred' matches the access_mode enum, but it does not add detail beyond what the schema descriptions already provide for make_public and auth_required. 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 states the action: 'Publish an app' and specifies what that entails: 'freeze current state and make it live at a URL.' It also mentions configuring access modes, which aligns with the access_mode parameter. This distinguishes it from sibling tools like create_app and update_app by focusing on the deployment/live stage.
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 used after creating/updating an app but does not explicitly say when to use it over alternatives. It lacks guidance such as 'use this after building your app to deploy it' or 'use update_app to modify the working version instead.' The reader must infer that publishing is the appropriate final step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_entityQuery EntityARead-onlyIdempotentInspect
Query app data records for one entity with optional exact-match filters.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort field, prefix with - for descending | -created_date |
| limit | No | Max records to return | |
| app_id | Yes | The app ID | |
| entity | Yes | Entity name, for example Patient | |
| offset | No | Pagination offset | |
| filters | No | Exact-match field filters |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lowered. The description adds value by clarifying that filters are 'exact-match' and that the query is for 'one entity', which informs expected behavior (no fuzzy search, scoped to a single entity type). This is contextual detail beyond the annotations, though it does not describe pagination or return format.
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 a single, efficient sentence that front-loads the verb and resource. There is no filler or repetition. Every part earns its place by conveying action, scope, and a key behavior (exact-match) in minimal words.
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 6 parameters (2 required) and no output schema, the description provides the core purpose but omits details like the return structure (probably a list of records) and how filters interact with nesting (filters is an object). The schema covers parameter types, but without an output schema the agent might benefit from a note on the response. The description is adequate for a simple query tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters have their own descriptions in the schema. The tool description mentions 'exact-match filters' which echoes the filters parameter's schema description but does not add new semantics. With full coverage, the baseline is 3, and the description does not exceed that.
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 action (Query), the resource (app data records for one entity), and the optional capability (exact-match filters). It is specific enough to distinguish from mutation siblings like create_entity_records or delete_entity_records, and from get_entities which likely lists entities rather than records. It is not a tautology and uses a precise verb.
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 when to use this tool (to query records of a single entity) but does not explicitly state when not to use it or mention alternatives. For instance, it does not say 'use get_entities to list entities' or 'use update_entity_records to modify'. An agent must infer the appropriate sibling based on context, so guidance is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_app_fileRead App FileARead-onlyIdempotentInspect
Read one source file from an app's virtual filesystem. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Virtual file path, for example pages/Home.jsx | |
| app_id | Yes | The app ID | |
| max_chars | No | Maximum content characters to return |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the path-format context (Fine Structure app file API, external docs), which is useful. However, it does not disclose truncation behavior implied by the max_chars default, non-existent-file handling, or return shape. With annotations carrying the safety burden, a 3 is appropriate.
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 purpose is front-loaded and the path-API pointer is a single adjunct clause afterward. The only minor inefficiency is that the external-docs link could arguably be shortened, but the sentence count and ordering are economical.
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?
Adequate for a simple single-file read tool whose annotations cover the safety profile. It lacks an output schema and does not describe error behavior, truncation, or response format; it defers path semantics to an external doc. Acceptable but not richly complete for an agent that must call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: path, app_id, and max_chars are all self-describing in the schema. The description adds nothing beyond 'one source file' that isn't already in the property definitions, so it sits at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-resource pair ('Read one source file from an app's virtual filesystem') and deliberately emphasizes 'one', which differentiates it from the sibling read_app_files. The path-API reference further pins down exactly what kind of file is targeted.
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 'one source file' phrasing implies a contrast with the plural sibling read_app_files, but the description never explicitly says when to prefer this tool over read_app_files, write_app_file, or patch_app_file. Usage context is implied rather than stated, so an agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_app_filesRead App FilesARead-onlyIdempotentInspect
Read several source files from an app's virtual filesystem. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Virtual file paths to read | |
| app_id | Yes | The app ID | |
| max_chars_per_file | No | Maximum characters per file |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds the external documentation link but does not disclose behavior such as truncation (max_chars_per_file), error handling, or response format. It provides minimal incremental transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one functional sentence and one reference link. It is front-loaded with the action and resource. The external link is useful but could be integrated more naturally; nevertheless, it is efficient without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only nature, annotations cover safety, and the schema documents parameters, the description is adequate but not complete. It lacks details about return content, handling of missing files, or the effect of max_chars_per_file. It points to external docs but does not summarize key behavior. For a batch read tool, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (app_id, paths, max_chars_per_file) documented in the schema. The description adds no additional meaning beyond the schema, such as path syntax or interaction between parameters. The baseline 3 applies because the schema fully covers parameter semantics.
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 ('read'), a resource ('source files from an app's virtual filesystem'), and implies batch operation ('several'). It clearly distinguishes from the singular sibling 'read_app_file' and other file-related tools through the plural scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for batch reads ('several files') but does not explicitly contrast with alternatives like read_app_file (singular) or get_app_files (likely for listing). No when-not-to-use guidance is provided; it relies on the plural phrasing to differentiate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_app_memberRemove App MemberBDestructiveInspect
Remove a generated-app runtime member.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| user_id | Yes | Generated app user id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the destructive nature is known. The description adds no extra behavioral context—no mention of irreversibility, permissions, side effects, or what happens to the member's data. It merely repeats the action.
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 a single, concise sentence that directly states the action and target. It is efficiently front-loaded with no filler words, making it easy to parse 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 simple removal tool with only two required parameters and no output schema, the description is minimally adequate. However, it lacks context about the 'generated-app runtime' concept and the implications of removal, which could be important for correct usage. Destructive annotations cover some, but not all, 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 coverage is 100%, so the parameters are fully described in the schema ('The app ID' and 'Generated app user id'). The description adds no additional meaning or context about parameters, aligning with the baseline of 3 for full 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 states a specific verb ('Remove') and a resource ('generated-app runtime member'), making the action clear. It distinguishes from siblings like 'invite_app_member' and 'update_app_member_role' by focusing on removal. However, 'runtime member' is somewhat ambiguous and could be clarified.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., when not to use it, prerequisites, or consequences). The sibling list offers related member management tools, but the description does not route the agent to them or specify conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_custom_domainRemove Custom DomainADestructiveInspect
Remove the configured custom domain from the app and clean up the platform-side hostname registration when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| domain | No | Optional configured custom domain. If omitted, removes the current custom domain. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive write. The description adds the nuance 'clean up the platform-side hostname registration when possible,' which is a useful behavioral detail beyond the annotations. However, it does not fully disclose potential side effects (e.g., whether it is reversible, impact on other domains), but given the annotation coverage, a score of 3 is appropriate.
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 a single sentence that directly states the primary action and a secondary cleanup step. It is front-loaded with the main verb and resource, with no wasted words. This is an efficient and well-structured description.
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 tool is relatively simple (2 params, no output schema) and the description, combined with the schema and annotations, provides enough information for an agent to call it correctly. It may lack explicit edge-case guidance (e.g., what happens if no domain is configured), but given the overall simplicity and existing structured data, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning both app_id and domain have clear descriptions in the schema, including that domain is optional and omitting it removes the current custom domain. The description adds no extra parameter meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Remove the configured custom domain from the app') and a distinct resource (custom domain), which immediately distinguishes it from sibling tools like add_custom_domain and set_primary_domain. It also adds a secondary detail about cleaning up hostname registration, reinforcing its unique purpose.
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 clearly implies when to use this tool: to remove the custom domain. It does not explicitly exclude alternatives, but given the straightforward nature of the action and sibling names, the usage context is unambiguous. No exclusions are stated, but it is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_app_fileRename App FileAInspect
Rename or move one app source file atomically. Internally stages an upsert at new_path and a delete at old_path, validates the resulting app state, and creates a Saved Version before applying.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Apply even if validation reports blocking errors | |
| app_id | Yes | The app ID | |
| new_path | Yes | New virtual file path | |
| old_path | Yes | Existing virtual file path to rename | |
| overwrite | No | Allow replacing an existing file at new_path |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With minimal annotations, the description discloses atomicity, internal upsert/delete, validation, and Saved Version creation. This extends beyond the schema and gives the agent confidence about 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?
Two sentences, crisp and front-loaded with purpose. 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?
For a mutation with no output schema, it covers atomicity, validation, and saved versions. It doesn't specify return value/error behavior, but the core behavior is well explained.
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 covers 100% of parameters with descriptions. The description reinforces old_path/new_path roles but adds no extra param detail not already available.
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?
Explicitly states 'Rename or move one app source file atomically', identifying the resource and action. The internal steps distinguish it from write/patch operations even without naming siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies its use for renames/moves but does not explicitly state when to use over write_app_file or patch_app_file. No exclusions or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_file_from_versionRestore File From VersionADestructiveInspect
Restore one file from a Saved Version instead of restoring the entire app. Creates a Saved Version before changing the file. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Virtual file path to restore | |
| app_id | Yes | The app ID | |
| confirm | Yes | ||
| snapshot_id | Yes | Saved Version snapshot ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description adds valuable context by stating 'Creates a Saved Version before changing the file,' which informs the agent of an automatic safety backup. It also mentions the path API documentation, but does not explicitly describe overwrite behavior or the confirm parameter, so it does not fully compensate for the lack of annotation detail beyond destructiveHint.
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. The first sentence states purpose and differentiation, the second adds a critical behavioral detail and a reference to the path API. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and the safety backup, but it omits any explanation of the confirm parameter's role (which is critical for a destructive operation with a default false), the return value, or any additional side effects. Given the tool's destructive nature and lack of an output schema, more detail is warranted to ensure 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 description coverage is high (75%) with path, app_id, and snapshot_id already documented. The description adds context for the path parameter by referencing the Fine Structure app file API, which is helpful, but it does not elaborate on the confirm parameter (which lacks schema description) or add syntax for others. This is a minor increment over the schema, so a 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 purpose: 'Restore one file from a Saved Version instead of restoring the entire app.' It specifies the verb (restore), the resource (one file from a Saved Version), and distinguishes it from restoring the whole app, making it 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?
The description provides clear context: use this tool when you want to restore a single file rather than the entire app. It does not explicitly name alternatives or give when-not-to-use conditions, but the differentiation from the whole-app restore is a clear usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_agent_taskSchedule Agent TaskAInspect
Create a scheduled task for one of the user's agents. Supported schedule types: once (run_at ISO local time + timezone), interval (interval_minutes 5-1440), hourly, daily (time HH:MM + timezone), weekly (time + timezone + days_of_week 0=Sunday..6), cron (5-field expression + timezone), manual (only runs on demand). Returns the normalized schedule and the computed next_run_at so you can read the fire time back to the user in their timezone.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short task title | |
| activate | No | Start the schedule immediately (true) or save as draft (false) | |
| agent_id | Yes | The agent id (from create_agent or list_agents) | |
| max_runs | No | Optional cap on total runs (0 = unlimited) | |
| schedule | Yes | Schedule object, e.g. {"type":"daily","time":"08:30","timezone":"Asia/Jerusalem"} or {"type":"weekly","time":"09:00","timezone":"Asia/Jerusalem","days_of_week":[0]} or {"type":"once","run_at":"2026-08-20T09:00","timezone":"Asia/Jerusalem"} | |
| instructions | Yes | What the agent should do on each run, written as instructions to the agent |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, clarifying it's a mutation but not destructive. The description adds valuable context beyond that: it specifies the returned payload (normalized schedule and next_run_at), explains the 'manual' schedule type runs only on demand, and mentions the 'activate' flag for draft mode. It doesn't address concurrency or failure behavior, but the added detail is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused paragraph that starts with the action, then efficiently enumerates all schedule types with their required fields, and closes with the return value. There is no redundancy or filler; every sentence adds information needed to call the tool correctly.
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 complexity (nested schedule object with seven types) and no output schema, the description is thorough. It covers all schedule types, return values, and the activation flag. Missing are error conditions and how to obtain agent_id, but those are apparent from the schema and sibling tools (create_agent). Overall, it provides enough context for a competent agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are documented in the schema. The description adds significant meaning by detailing each schedule type (once, interval, hourly, daily, weekly, cron, manual) with specific constraints like interval_minutes 5-1440, days_of_week 0=Sunday..6, and timezone handling. This goes well beyond the schema's generic 'Schedule object' description, enhancing the agent's ability to construct valid 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 tool creates a scheduled task for an agent, enumerates all supported schedule types with specific constraints, and explains the return value. It's distinct from siblings like list_agent_tasks by focusing on creation, and the detailed schedule types leave no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and covers various schedule scenarios, but it does not explicitly mention when to use this over alternatives (e.g., list_agent_tasks for viewing, or update_agent_task if it existed). It implies usage for creating schedules but gives no clear guidance on when not to use it or how it relates to other task-management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seed_entitySeed Entity RecordsCInspect
Compatibility tool for starter-record creation. Inserts directly for the authenticated app owner; by default it only seeds an empty entity (skip_if_not_empty).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | append always inserts; skip_if_not_empty inserts only when the entity is empty | skip_if_not_empty |
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| reason | No | Why these records should be created | |
| records | Yes | Records to insert |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (readOnlyHint=false, destructiveHint=false), so the description must carry the burden. It does disclose the default mode behavior (skip_if_not_empty), but the phrase 'seeds an empty entity' is confusing and contradicts the mode's actual semantics (it inserts only when the entity is empty, not seeds an empty entity). No mention of side effects, idempotency, or permission 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 a single sentence, which is concise, but it uses vague terms ('compatibility', 'starter-record') and confusing phrasing that hampers clarity. It's not well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters, no output schema, and many related sibling tools, the description should differentiate from create_entity_records and explain edge cases. It doesn't mention what happens when the entity already has records (beyond the schema's mode), return values, or error behavior. The lack of any sibling differentiation makes it incomplete.
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 baseline is 3. The description adds that inserts are 'directly for the authenticated app owner,' which clarifies ownership, and explains the mode default. However, the 'seeds an empty entity' phrasing is misleading and doesn't add clear value beyond the schema's mode 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 states it inserts records for the authenticated app owner, but the terms 'compatibility tool' and 'starter-record creation' are vague and don't clearly define what the tool does or how it differs from sibling tools like create_entity_records. The purpose is partially clear but lacks specificity.
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?
No guidance is given on when to use this tool versus alternatives. The phrase 'compatibility tool' hints at legacy use but never explains the conditions for selecting it over create_entity_records or update_entity_records. There is no 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.
set_entity_policySet Entity PolicyADestructiveInspect
Create or update server-side read/write role policy for an app entity.
| Name | Required | Description | Default |
|---|---|---|---|
| read | Yes | Roles allowed to read | |
| write | Yes | Roles allowed to write | |
| app_id | Yes | The app ID | |
| entity | Yes | Entity name, e.g. Booking |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the description's 'Create or update' matches but adds no additional behavioral context beyond that. It doesn't describe whether existing policies are overwritten, merged, or how side effects manifest beyond the annotation hints.
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 a single, front-loaded sentence with no wasted words. It conveys the core action, target, and scope succinctly, earning full marks for conciseness.
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 mutation tool with 4 fully documented parameters and no output schema, the description adequately covers the essentials. It lacks a note on overwrite/merge behavior or permission requirements, but given the annotations and schema, these are minor omissions.
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 each parameter is already documented. The description does not add any parameter-specific meaning beyond what the schema provides (e.g., format or semantics of role arrays), so it meets the baseline for full 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 states a specific action ('Create or update') on a specific resource ('server-side read/write role policy') scoped to an 'app entity'. This clearly distinguishes it from sibling tools like set_route_policy, and the verb+resource structure 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?
The description implies usage for entity-level policies via the phrase 'for an app entity', but it does not explicitly contrast with alternative tools such as set_route_policy. There are no when-to-use or when-not-to-use exclusions, leaving some inference required from the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_primary_domainSet Primary DomainAInspect
Set which app host should be treated as primary for generated links and custom-domain redirects.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| domain | Yes | Primary host, for example example.com, www.example.com, or the app subdomain host. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) but not destructive or idempotent. The description adds that it affects 'generated links and custom-domain redirects,' which is useful behavioral context. However, it doesn't disclose prerequisites (e.g., domain must already be associated/accepted) or side effects (e.g., immediate changes to existing links). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the core action and purpose. No filler or redundant phrasing. It efficiently communicates the tool's function without unnecessary elaboration.
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 covers the primary purpose but lacks important contextual details such as whether the domain must already be added, whether verification is required, and what happens after setting (e.g., immediate effect on links). Given the tool's simplicity (2 params, no output schema), the description is somewhat adequate but leaves gaps that an agent might need to guess at.
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%, with both parameters well-documented. The description adds no extra parameter-specific information beyond what the schema provides. Since the schema already explains app_id and domain, the baseline of 3 applies; the description adds no additional detail about parameter usage or constraints.
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 action ('set') and the resource ('primary domain for generated links and custom-domain redirects'). It distinguishes from siblings like add_custom_domain (which adds a domain) and configure_domain_redirects (which configures redirects), so an agent can infer the specific role of this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives. It doesn't mention that domains must be added first, whether this tool should be called after adding a custom domain, or when not to use it. It merely states the function without context, forcing the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_route_policySet Route PolicyBDestructiveInspect
Create or update a server-owned route policy for a generated app route.
| Name | Required | Description | Default |
|---|---|---|---|
| route | Yes | Route or wildcard route, e.g. /admin/* | |
| app_id | Yes | The app ID | |
| redirect_to | No | /Login | |
| require_auth | Yes | ||
| allowed_roles | Yes | Allowed app roles |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false. The description adds context such as 'server-owned' and 'generated app route' but does not explain behavioral details like whether existing policies are replaced or merged, or any side effects beyond the annotation. No contradiction with annotations is present.
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 a single, concise sentence that leads with the action ('Create or update') and specifies the object. There is no fluff, and every word contributes to the core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters and no output schema, the description provides the essential action and scope but lacks nuances like the meaning of 'generated app route', the effect of updates, or the role of redirect_to and allowed_roles in policy enforcement. The schema covers required fields, but the description alone is insufficient for an agent to fully anticipate outcomes.
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 covers 60% of parameters with descriptions (route, app_id, allowed_roles), but the description itself adds no parameter-specific meaning. It does not clarify redirect_to or require_auth beyond their schema defaults, and with only 60% coverage the description could have compensated but did not.
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 clear verb ('Create or update') and a specific resource ('server-owned route policy for a generated app route'). It is distinct from sibling tools like set_entity_policy, though it doesn't explicitly name alternatives. The purpose is unambiguous and actionable.
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 provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It only states what it does, leaving the agent to infer that it is for managing route policies in the context of generated app routes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_secretSet SecretADestructiveInspect
Create or update one encrypted app secret. The secret value is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key name | |
| value | Yes | Secret value to encrypt and store | |
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so mutation is known. The description adds valuable context that the secret value is never returned and is encrypted, which goes beyond annotations and informs agents about security implications. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, dense sentence with no filler. The core action is front-loaded, and the critical behavior (never returned) is immediately stated. Very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with full schema coverage and annotations, the description covers the essential behavior. It notes the encryption and non-return of the value, which is crucial for agents. It does not describe error handling or overwrite specifics, but those are not required given the tool's simplicity and annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (key, value, app_id) are already documented. The description repeats 'encrypted' which is also in the schema's value description, adding no new parameter-specific meaning beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create or update'), the resource ('one encrypted app secret'), and the encryption characteristic. It distinguishes from sibling tools like delete_secret and list_secret_keys by focusing on write/update semantics.
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 implicitly signals when to use this tool (to set or change a secret) but does not explicitly mention alternatives such as delete_secret or list_secret_keys. It provides clear context without exclusions, which fits the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_owner_phone_verificationStart Owner Phone VerificationADestructiveInspect
Send a 6-digit code over WhatsApp to the ACCOUNT OWNER's own phone. This is the one-time ownership proof required before a platform number can be connected, and it also unlocks agents messaging the owner. Ask the user for their own WhatsApp number first and send only to that. No WhatsApp Business account is involved.
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | The owner's own WhatsApp number, ideally in E.164 form such as +972501234567. | |
| region | No | Optional ISO region hint (for example IL, US) used when the number has no country code. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so safety profile is known. The description adds useful behavioral context beyond annotations: it clarifies 'No WhatsApp Business account is involved' and states the side effect 'unlocks agents messaging the owner.' No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, then purpose and an important instruction. Every sentence earns its place; no redundancy or 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?
For a simple action with two parameters (both fully schema-described) and no output schema, the description covers the trigger context, the required input (owner's own number), and the consequences (unlocks agents). Missing details like rate limits or next steps are minor and not essential for calling this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented. The description adds procedural guidance for the phone parameter ('Ask the user for their own WhatsApp number first and send only to that'), which clarifies how the agent should obtain and use the value. This goes beyond the schema's format hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Send a 6-digit code over WhatsApp to the ACCOUNT OWNER's own phone.' It also explains the broader purpose (ownership proof required before platform number connection) and adds context about unlocking agent messaging. While it doesn't name sibling tools, the action is unambiguous and clearly distinct from confirmation steps like confirm_owner_phone_verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: 'one-time ownership proof required before a platform number can be connected' and 'unlocks agents messaging the owner.' This implies when to use it, though it doesn't explicitly name alternatives or exclusions (e.g., 'use confirm_owner_phone_verification after').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ab_testUpdate A/B TestAInspect
Update a native A/B test, including active state, variants, traffic, and conversion goal. Creates a Saved Version before the change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional new name | |
| app_id | Yes | The app ID | |
| test_id | Yes | A/B test ID | |
| variants | No | Optional replacement variants. Traffic must total 100. | |
| is_active | No | Optional active state | |
| page_name | No | Optional new base route page | |
| goal_event_type | No | Optional conversion goal type | |
| goal_event_filter | No | Optional conversion goal filter |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=false, confirming mutation. The description adds a valuable side effect: 'Creates a Saved Version before the change.' This goes beyond the annotations by disclosing that the operation snapshots the prior state, which is useful for rollback awareness. No contradictions.
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 succinct clauses, with the primary purpose front-loaded and the important side effect stated in a follow-up sentence. No wasted words, and it conveys all necessary high-level information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 8 parameters, nested objects, and no output schema, the description is adequate but leaves some gaps. It does not explicitly state that it is a partial update (only provided fields change), nor does it mention the response format or async behavior. The schema covers parameter constraints, so this is a moderate level of completeness.
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% with clear descriptions for each parameter. The description lists 'active state, variants, traffic, and conversion goal,' which maps to is_active, variants, and goal_event_type/goal_event_filter. It adds marginal reinforcement but does not introduce information beyond what the schema already provides.
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 a specific verb ('Update') and resource ('native A/B test'), and enumerates the main fields it affects (active state, variants, traffic, conversion goal). This naturally distinguishes it from the create_ab_test, delete_ab_test, and read-only sibling tools like list_ab_tests or get_ab_test_stats.
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 verb 'Update' implies this is for modifying an existing A/B test given an existing test_id, and is not for creation (create_ab_test) or deletion (delete_ab_test). However, the description gives no explicit exclusion or alternative references, so usage guidance is only implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_appUpdate AppAInspect
Update an existing application with a new prompt. The AI modifies the app based on your instructions. Creates a Saved Version before the update. Returns a job_id - poll get_job_status to track progress.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID to update | |
| prompt | Yes | What to change in the app |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the bare annotations (readOnlyHint=false, destructiveHint=false), the description discloses critical behavior: it creates a Saved Version before updating (providing rollback safety) and is asynchronous, requiring polling via get_job_status. These traits materially affect how an agent should call and interpret the tool, and they do not contradict any annotation.
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 four short sentences with zero fluff. It front-loads the core action, then adds three high-value behavioral details (AI modification, version snapshot, async tracking) in order of importance. 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 two-parameter, no-output-schema tool, the description is complete: it explains what it does, how it behaves (asynchronous, creates checkpoint), and how to follow up. An agent has everything needed to invoke it correctly and interpret the response (job_id) without 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?
The input schema already describes both parameters at 100% coverage (app_id and prompt), so the baseline is 3. The description adds meaning by clarifying that the prompt is instructions to the AI, that the app is modified asynchronously, and that a Saved Version is created, giving extra context beyond the schema's plain property descriptions.
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+resource ('Update an existing application') and the mechanism ('with a new prompt'), clearly distinguishing it from siblings like create_app (for new apps) and update_ab_test. The phrase 'existing application' also limits scope, making the purpose 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?
The description implies when to use it (for existing apps, not new ones) and notes it returns a job_id to track progress via get_job_status, which routes the agent to a sibling tool. It doesn't explicitly name alternatives or exclusions, but the context of updating an existing app is clear enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_app_member_roleUpdate App Member RoleADestructiveInspect
Update a generated-app runtime member role. This cannot assign owner and cannot change the Fine Structure account owner.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | New role | |
| app_id | Yes | The app ID | |
| user_id | Yes | Generated app user id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description needs to add context beyond that. It adds a useful constraint about not assigning owner, but it does not explain the impact of the update (e.g., role replacement is immediate, permanent) or any permission requirements. This is adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, with the primary action stated first and the critical caveat second. It is front-loaded and concise, with no wasted words.
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 role update with three parameters and no output schema, the description provides enough to understand the operation's scope and limits. It doesn't explain error conditions or success responses, but for the tool's simplicity and with sibling tools clarifying the broader context, this is mostly complete. The lack of valid role values is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have schema descriptions, so the baseline is 3. The description does not add any parameter-specific meaning, such as valid role values or the format of user_id. It relies entirely on the schema descriptions, which are minimal.
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 action ('Update') and the resource ('generated-app runtime member role'). It also provides key limitations (cannot assign owner, cannot change account owner), which distinguishes it from invite/remove operations. However, it does not explicitly name the sibling for adding or removing members, so it's slightly less explicit than 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 implies usage for existing members, but it does not explicitly contrast with sibling tools like invite_app_member or remove_app_member. The limitations on owner assignments give some contextual guidance, but there is no clear 'when to use vs when not to use' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_entity_metadataUpdate Entity MetadataAInspect
Set relationship/index metadata on an entity schema. This stores metadata in the schema file; DB index creation is automatic where supported by the platform.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| indexes | No | ||
| metadata | No | ||
| relationships | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it states that metadata is stored in the schema file and that DB index creation is automatic where supported. This clarifies side-effects without contradicting the annotations (readOnlyHint=false, destructiveHint=false). It does not mention reversibility or permission requirements, but the added detail justifies a high score.
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, front-loads the purpose, and contains zero fluff. Every sentence contributes value, and the key side-effect is stated efficiently.
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 5 parameters, nested objects (indexes, metadata, relationships), no output schema, and minimal schema descriptions, the description is far too thin. It does not explain how to structure the nested objects, whether existing metadata is replaced or merged, or how the automatic DB index creation interacts with existing indexes. An agent would need to guess at most of the input structure.
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?
With only 40% schema description coverage (only app_id and entity are described), the description must compensate for the undocumented parameters (indexes, metadata, relationships). It names them as 'relationship/index metadata' but does not explain their structure, required fields, or how they interact. The coverage gap is significant and the description provides insufficient guidance.
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 specific action ('Set relationship/index metadata') and the resource ('entity schema'), and distinguishes itself from sibling tools like update_entity_schema by focusing on metadata-only. It also explains a key side-effect (DB index creation) that separates it from general schema edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context about what it does (stores metadata in schema) but does not explicitly state when to use this tool versus others like update_entity_schema or create_entity_schema. No exclusions or alternative routing is provided, leaving the agent to infer usage from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_entity_recordUpdate Entity RecordBDestructiveInspect
Compatibility tool that updates one record by ID. Executes directly for the authenticated app owner.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Fields to merge into the record | |
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| reason | No | Why this record should be updated | |
| record_id | Yes | Record ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, and the description does not contradict them. It adds 'executes directly for the authenticated app owner,' giving authentication context, but says nothing about side effects, merge semantics, or irreversibility beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the essential function. Every word earns its place; 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?
No output schema exists, and the description doesn't mention return value or error behavior. It doesn't cover when to use or what to expect post-call, but given the simple single-record update and schema coverage, it's not dangerously incomplete.
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?
All 5 parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds no extra meaning for parameters like 'data' or 'reason', leaving the schema to do the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: updates one record by ID. Clearly distinguishes from the sibling 'update_entity_records' by specifying single record. The 'compatibility tool' prefix adds context without muddying the core purpose.
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?
No guidance on when to use this vs alternatives like update_entity_records or update_entity_metadata. It doesn't explain why this compatibility tool exists or when it should be preferred over the plural variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_entity_recordsUpdate Entity RecordsADestructiveInspect
Update exact records. Select explicit record_ids or exact-match filters and provide shared changes, or provide per-record updates. Executes directly for the authenticated app owner; expected_count aborts the write on a mismatch.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| reason | No | Why these records should be updated | |
| changes | No | Shared fields to merge into every selected record | |
| filters | No | One exact-match selector or a list of exact-match selectors | |
| updates | No | Per-record changes; use instead of shared changes | |
| record_ids | No | Exact record IDs to update | |
| expected_count | No | Required match count safety check, when known |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds meaningful context: 'Executes directly for the authenticated app owner' signals immediate execution without review, and 'expected_count aborts the write on a mismatch' explains a safety mechanism. These go beyond the annotations and help the agent understand 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?
Two sentences with no filler. The core action is front-loaded ('Update exact records'), followed by the selection modes and the key behavioral note. Every phrase 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 destructive write tool with 8 parameters and nested objects, the description covers the essential decision points: how to select records, what changes to provide, and the safety check. It doesn't mention return values (no output schema) but that's acceptable; the missing piece is an explicit note about scope (e.g., only exact matches, no partial updates), though the phrase 'exact records' implies it.
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 all parameters are individually documented. The description adds conceptual value by explaining the two usage patterns (shared changes vs per-record updates) and the role of expected_count as a safety check, which clarifies how multiple parameters interact beyond their individual schema descriptions.
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 updates exact records, and specifies two distinct modes: selecting record_ids or exact-match filters with shared changes, or providing per-record updates. This is specific and immediately distinguishes it from create/delete tools, and from the singular update_entity_record sibling.
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 implies usage through 'exact records' and the selection methods, but doesn't explicitly contrast with update_entity_record (singular) or update_entity_metadata. There is no 'when not to use' or note about choosing this over alternatives, leaving some 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.
update_entity_schemaUpdate Entity SchemaAInspect
Replace or shallow-merge an existing entity schema file. Creates a Saved Version before writing.
| Name | Required | Description | Default |
|---|---|---|---|
| merge | No | ||
| app_id | Yes | The app ID | |
| entity | Yes | Entity name | |
| schema | Yes | Schema fields to set or merge | |
| indexes | No | ||
| metadata | No | ||
| relationships | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a valuable behavioral detail—'Creates a Saved Version before writing'—which is a safety mechanism not captured in annotations (readOnlyHint=false, destructiveHint=false). It also clarifies the replace vs merge modes, providing context beyond the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action and a key side effect are front-loaded, and every word 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 tool with 7 parameters, no output schema, and no explicit guidance on alternatives, the description is insufficient. It omits explanations for indexes, metadata, relationships, and does not discuss return values, validation behavior, or potential pitfalls. The agent relies heavily on the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%, leaving several parameters (merge, indexes, metadata, relationships) without schema descriptions. The description partially compensates by explaining the merge behavior via 'shallow-merge', but it does not clarify the other parameters, leaving gaps for the agent.
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 ('Replace or shallow-merge') and resource ('existing entity schema file'), clearly distinguishing from sibling create_entity_schema. The phrase 'existing' and the mention of a Saved Version add precision.
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 implies the tool is for existing schemas (as opposed to creating new ones) but does not explicitly state when to use it over alternatives like create_entity_schema or update_entity_metadata. No when-not-to-use conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_appValidate AppARead-onlyIdempotentInspect
Run deterministic app checks: syntax, imports, routes/pages, entity schemas, missing entities, and recorded runtime errors.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| include_runtime_errors | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds value by specifying 'deterministic' checks and listing the exact categories examined (e.g., recorded runtime errors), which goes beyond what annotations alone communicate. However, it does not fully describe potential side effects (though none expected) or details about return format, so a 4 is appropriate.
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 a single sentence that is direct and information-dense, front-loading the core action ('Run deterministic app checks') and then enumerating the specific checks. Every word earns its place, with no fluff 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?
The tool is relatively simple with only two parameters, and the description covers the main functionality. However, it does not explain what the tool returns (e.g., a pass/fail status, a detailed report) or how include_runtime_errors affects the output. Since there is no output schema, the description should provide more context about the result format and parameter behavior, so a 3 is warranted.
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 50%: app_id has a description, but include_runtime_errors does not. The description mentions 'recorded runtime errors' as part of the checks, which hints at the parameter's role but does not explicitly map it to include_runtime_errors. Since coverage is not high, the description partially compensates but not completely, leaving the boolean parameter's meaning somewhat ambiguous. Baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run deterministic app checks') and enumerates the exact resources/types of checks: syntax, imports, routes/pages, entity schemas, missing entities, and recorded runtime errors. This clearly distinguishes it from sibling tools like get_errors (which retrieves errors) or validate_change_set (which validates a change set).
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 usage for validating an app, but does not explicitly state when to use this tool versus alternatives. It does not mention situations where get_errors or validate_entity_relationships might be more appropriate, nor does it provide exclusion criteria. The clear purpose gives some context, but there is no explicit guidance on alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_change_setValidate Change SetARead-onlyIdempotentInspect
Validate current app files plus staged change set files before applying.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID | |
| change_set_id | Yes | Change set ID | |
| include_runtime_errors | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which fully cover the safety profile. The description adds the scope of validation (current app files plus staged change set files), which is useful context. However, it does not disclose what the validation does in detail (e.g., checks runtime errors, returns errors) or what the result means. Given annotations cover the key behavioral aspects, a score of 3 is appropriate.
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 a single, efficient sentence that front-loads the verb and clearly conveys the action and scope. There is no redundance or filler; every word contributes to meaning. It is appropriately concise for its purpose.
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 tells what the tool does but not what it returns or what happens on success/failure. Since there is no output schema, the agent is left guessing whether validation returns a boolean, an error list, or a status. Annotations cover the read-only and idempotent aspects, but the lack of return information is a significant gap for a validation tool. Overall, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 out of 3 parameters have descriptions). The tool description does not add any additional meaning to the parameters, such as clarifying the purpose of include_runtime_errors, which has no schema description and is not mentioned in the tool description. Since the schema already covers most parameters and the description provides no extra semantic value, a score of 3 is warranted.
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 action (validate), the resource (current app files plus staged change set files), and the context (before applying). It distinguishes itself from sibling tools like apply_change_set by specifying the pre-apply validation step. The verb and resource are specific and 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?
The phrase 'before applying' gives explicit usage context, indicating this tool is meant to be used prior to applying a change set. While it doesn't explicitly mention alternatives (e.g., 'use apply_change_set after validation'), the context and sibling names make the workflow clear. There are no exclusions or when-not-to-use conditions, but the timing guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_entity_relationshipsValidate Entity RelationshipsBRead-onlyIdempotentInspect
Validate entity relationship metadata and *_id references against existing entity schemas.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds that the tool validates how *_id references and relationship metadata align with existing schemas, which is useful context beyond annotations. However, it does not disclose what the tool returns upon successful or failed validation (e.g., error list, boolean status, exceptions), which leaves behavioral expectations incomplete.
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 a single, concise sentence that leads with the action verb and specifies the scope. No filler words or redundant details. It is front-loaded and efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only one parameter and no output schema, the description should clarify what the tool returns or signals upon validation failure. This is missing. The agent cannot determine whether to expect structured errors, a boolean, or an exception. This gap is significant for a tool whose purpose is validation, as the caller likely needs to act on the result.
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 fully documents the only parameter, app_id (100% coverage), with a simple description 'The app ID'. The description adds no additional meaning about how app_id is used in the validation context. Since the schema carries the parameter semantics, 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 states the verb 'validate' and the specific resource 'entity relationship metadata and *_id references against existing entity schemas'. This is precise and distinguishes it from other validation tools like validate_app or validate_change_set. An agent can immediately understand the tool's function without ambiguity.
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 provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It only states what it does, leaving the agent to infer usage from the tool's name and schema. There is no explicit mention of when validation is necessary before other entity operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_app_fileWrite App FileAInspect
Create or replace one file in an app's virtual filesystem. Creates a Saved Version before changing content. Paths and file model follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Virtual file path | |
| app_id | Yes | The app ID | |
| content | Yes | Complete file contents | |
| file_type | No | Optional file type override |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false, but the description adds behavioral context by stating that a Saved Version is created before changing content. This is a meaningful safety detail not present in annotations. It also clarifies the file model follows the Fine Structure API, which informs expected behavior. No contradiction exists.
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 redundant content. It front-loads the core action ('Create or replace one file'), then adds a crucial behavioral note about Saved Versions, and finally provides a reference link. Every sentence earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with 4 parameters (3 required) and no output schema, the description gives enough to understand the operation and points to external documentation for detailed API semantics. It does not mention return values or error handling, but the API link mitigates that. It also doesn't explicitly address edge cases like overwrite behavior, but 'replace' covers that. Overall, it is fairly complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter descriptions already exist for path, app_id, content, and file_type. The description adds value by referencing the Fine Structure app file API, which might help understand path and content semantics, but it does not elaborate on individual parameters beyond what the schema provides. Baseline 3 is appropriate given the high 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 states 'Create or replace one file in an app's virtual filesystem', which is a specific verb and resource. It also mentions creating a Saved Version, adding specificity. However, it does not explicitly differentiate from siblings like patch_app_file or rename_app_file, though the action is distinct enough that an agent can infer its purpose.
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 usage for writing files by saying 'create or replace', but it does not provide explicit guidance on when to use this tool versus alternatives like patch_app_file. There is no mention of conditions or exclusions. The reference to the API documentation suggests context but does not directly outline usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI assistants to scaffold, edit, live-preview, and deploy full-stack apps with built-in database, email, and push notification capabilities through natural language.19MIT
- FlicenseNot gradedqualityDmaintenanceEnable AI agents to autonomously build and deploy full-stack mobile applications.1
- FlicenseNot gradedqualityCmaintenanceDeploy full-stack apps from AI. 75+ tools: GitHub/Docker deploy, databases, environments, security, billing.2
- AlicenseAqualityAmaintenanceInstant web hosting for AI agents. Publish a live site in one call, no account needed.5MIT