Skip to main content
Glama

Server Details

Host your MCP tool over streamable HTTP in one command.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Server Listing
mcphost

TDQS

A3.6/5.0

Scored across 109 tools

Disambiguation4/5

With 109 tools, there is inherent risk of confusion, but the tool names and descriptions are highly specific and clearly delineate the distinct operations. For example, host.state.* and host.table.* are explicitly separated, and the trigger, run, and tool management tools each have unique purposes. Only a few tools (e.g., host.tool_test vs host.bridge_test) could be vaguely similar, but their descriptions eliminate ambiguity.

Naming Consistency4/5

The overwhelming majority of tools follow the host.<domain>.<action> pattern with snake_case actions (e.g., host.state.get, host.trigger.set, host.tool_publish). A few exceptions like host.quickstart, host.changelog, host.whoami, and host.self_offboard deviate stylistically but are not confusing and are clearly readable. The consistency is strong overall, with only minor deviations.

Tool Count4/5

While 109 tools far exceeds the typical 3-15 range for a focused MCP server, this server is a comprehensive hosting platform covering billing, agent directory, messaging, documents, state, tables, tool lifecycle, triggers, runs, secrets, OAuth, and more. Each tool appears justified given the breadth of functionality, and the count is appropriate for the server's purpose, even if it is on the heavier side.

Completeness4/5

The tool surface is remarkably complete for a multi-tenant hosting platform, covering lifecycle operations for most resources (create/read/update/delete for documents, tables, triggers, tools, etc.) and supporting crucial workflows like export/import, usage tracking, and OAuth configuration. Minor gaps exist, such as no permanent document deletion (only soft-delete and version purge) and no single-run result deletion, but these are edge cases that agents can work around without failure.

Available Tools

109 tools
billing.checkoutAInspect

Create (or reuse an open one for the same plan) a Stripe Checkout URL to upgrade this tenant, defaulting to the pro plan. Returns billing_unavailable if this host has no Stripe key configured -- call billing.plans first to check.

ParametersJSON Schema
NameRequiredDescriptionDefault
planNoWhich plan to check out; default: pro.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does reasonably well: it discloses reuse semantics ('or reuse an open one for the same plan'), a named failure mode (billing_unavailable when no Stripe key), and a precondition. It stops short of describing auth requirements and what success returns beyond the URL.

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

Conciseness5/5

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

Two dense sentences with zero filler, and the most decision-relevant facts (create/reuse, default plan, failure mode, prerequisite) are front-loaded.

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

Completeness4/5

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

For a two-optional-param tool with no output schema, the description covers purpose, default, idempotent reuse, error surface, and prerequisite. Only the auth-header nuance lives solely in the schema, which is acceptable.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented, including the pro default and the tenant_key/auth-header precedence rule. The description's 'defaulting to the pro plan' merely restates the schema, adding no new meaning — baseline 3.

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

Purpose5/5

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

States a specific verb and resource — creating (or reusing) a Stripe Checkout URL — plus the scope (upgrade this tenant, default pro plan). This is clearly distinguishable from billing.plans and billing.status without opening any schema.

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

Usage Guidelines4/5

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

Explicitly tells the agent to call billing.plans first as a precondition check, which is real routing guidance. It does not, however, contrast this tool with billing.status or describe when checkout is *not* the right call.

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

billing.plansAInspect

The plan catalog (price and quotas per plan) and whether Stripe billing is configured on this host. Anonymous callers get the same answer as tenants.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds one meaningful behavior: anonymous and tenant callers see identical results. It does not state side effects, caching, or error behavior, though the read-oriented nature is implied by 'catalog.'

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

Conciseness5/5

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

The description is a single, dense sentence that puts the primary purpose first and adds the anonymous-caller note without wasted words. It is appropriately sized for the simple scope.

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

Completeness4/5

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

For a simple catalog query with one optional parameter and no output schema, the description covers the key return content: prices, quotas, and Stripe configuration. It could go further by noting response shape or pagination, but none is likely needed at this complexity level.

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

Parameters3/5

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

The input schema already documents tenant_key at 100% coverage, so the baseline is 3. The description adds no additional parameter-level meaning beyond the schema, but it does reinforce that tenant identity likely does not alter the response.

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

Purpose4/5

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

The description clearly identifies the resource (plan catalog) and the exact content returned (price and quotas per plan, plus Stripe configuration status). It lacks an explicit verb like 'retrieve' or 'list,' but the intent is unambiguous and distinct from the billing checkout/status siblings.

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

Usage Guidelines3/5

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

The description implies this tool is for inspecting plan catalog data, and it provides a useful caller context: anonymous callers receive the same answer as tenants. However, it does not explicitly state when to choose this over billing.checkout or billing.status, nor does it mention any exclusions.

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

billing.statusAInspect

This tenant's plan, usage against each quota, and when the daily call quota resets.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

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

The description tells the caller what information is returned, which strongly implies a read-only status lookup. Since no annotations are provided, it does not explicitly state that no side effects occur or how authentication/tenant resolution is handled beyond the schema note on tenant_key.

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

Conciseness5/5

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

The description is one compact sentence with no filler. It front-loads the tenant scope and then lists the exact data points returned, making it easy to scan.

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

Completeness4/5

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

Given the single optional parameter and the lack of an output schema, the description adequately covers the main return values: plan, quota usage, and reset time. The missing explicit usage and side-effect caveats are minor for a simple status lookup.

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

Parameters3/5

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

The input schema already fully documents the only parameter, tenant_key, including the precedence rule with the Authorization header. The description adds no parameter-level detail, so the baseline for high schema coverage applies.

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

Purpose4/5

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

The description identifies the resource (this tenant's billing status) and the specific information returned: plan, quota usage, and reset time. It is clear enough to be distinguished from billing.plans, but it does not explicitly name or contrast any sibling tool.

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

Usage Guidelines3/5

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

The phrasing implies the tool should be used when the agent needs the current tenant's plan or quota consumption. However, it gives no explicit when-to-use or when-not-to-use guidance and does not mention alternatives such as billing.plans or host.usage.

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

host.agent.contact_acceptAInspect

Accept a pending contact request addressed to you: both you and the requester become accepted contacts, visible from either side via host.agent.contacts().

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request to accept.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the key outcome: both parties become accepted contacts and see each other via host.agent.contacts(). It does not mention reversibility or permissions, but the core side effect is clearly stated.

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

Conciseness5/5

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

A single, efficient sentence front-loads the action and immediately follows with the consequence. No redundant or filler words – every clause earns its place.

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

Completeness4/5

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

For a simple two-parameter tool with no output schema or annotations, the description covers the action and its effect well. It could mention authentication prerequisites or error cases, but given the simplicity and the schema's completeness, this is adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so request_id and tenant_key are fully documented. The description adds no extra parameter-level detail beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Accept'), names the resource ('pending contact request'), and clarifies the resulting state (both become accepted contacts). It is easily distinguished from siblings like host.agent.contact_deny and host.agent.contact_request, which serve different actions.

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

Usage Guidelines4/5

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

The context is clear: use this when you want to accept a pending contact request addressed to you. It does not explicitly name alternatives like host.agent.contact_deny, but the intent is unambiguous, so no significant exclusion is needed.

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

host.agent.contact_denyAInspect

Deny a pending contact request addressed to you. The requester's subsequent sends and requests get contact_pending for 7 days, then may request again.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request to deny.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses the key consequence—subsequent sends/requests from the denied requester get contact_pending for 7 days, then they may retry—which goes beyond a simple 'Deny' statement. It does not cover return behavior or auth specifics, but the main side effect is captured.

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

Conciseness5/5

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

Two sentences with no filler: the action is front-loaded and the consequence follows immediately. Every clause adds useful information for selecting and invoking the tool.

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

Completeness4/5

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

For a simple tool with one required parameter and no output schema, the description covers the essential action and side effects. It could mention what happens in invalid/duplicate cases, but that 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.

Parameters3/5

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

Schema description coverage is 100%, with both request_id and tenant_key documented. The description adds no parameter-level detail, but the schema handles that burden, so the baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Deny') and a specific resource ('a pending contact request addressed to you'), clearly narrowing the operation's scope. It implicitly distinguishes this tool from contact_accept and contact_request even without naming them.

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

Usage Guidelines4/5

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

The description states the applicable context: only pending contact requests addressed to you. It does not explicitly name contact_accept as the alternative for approval, so the guidance is clear but lacks a direct exclusion/alternative statement.

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

host.agent.contact_requestAInspect

Request contact with a contacts-mode address; creates or returns the pending request. not_needed for an open address or one you already have an accepted contact with; contact_refused for a closed address; contact_pending if a request is already pending or was denied within the last 7 days; agent_not_found (same as a nonexistent address) if that address has blocked you. Quota contact_requests_per_day.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note, up to 512 bytes.
addressYesAn @handle or a bare namespace (t_...).
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and handles it well. It discloses that the tool creates or returns a pending request, enumerates the various status outcomes (not_needed, contact_refused, contact_pending, agent_not_found), reveals blocked-address behavior, and mentions the daily quota.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, followed by a dense but efficient enumeration of expected outcomes and quota. Every sentence contributes useful information without padding.

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

Completeness4/5

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

The description is largely complete for a tool with no output schema and no annotations: it covers purpose, possible statuses, blocked behavior, and quota. It leaves the notion of 'contacts-mode address' somewhat unexplained, and no response format is described, but these are minor given the tool's scope.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add significant parameter-level meaning beyond what the schema already provides for address, note, or tenant_key; it focuses on outcomes rather than parameter details.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Request contact with a contacts-mode address; creates or returns the pending request.' It clearly identifies the action and outcome, and the contact-related context distinguishes it from siblings like contact_accept and contact_deny.

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

Usage Guidelines4/5

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

The description gives clear context and explicitly states when a request is not needed ('not_needed for an open address or one you already have an accepted contact with'). However, it does not explicitly name alternative tools, so it falls short of full when-to-use-versus-alternatives guidance.

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

host.agent.contactsAInspect

List your accepted contacts and every pending/decided contact request in either direction; status optionally narrows incoming/outgoing to one of pending, accepted, denied, expired.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter incoming/outgoing requests to this status; omit for all.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries full responsibility. It discloses the scope (accepted contacts and pending/decided requests) and the optional status filter, but does not mention whether the operation is read-only, any authentication requirements (beyond the tenant_key schema note), pagination, or rate limits. The 'List' verb implies read-only, but this is not explicitly stated.

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

Conciseness4/5

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

The description is a single sentence that front-loads the main purpose (listing contacts/requests) and then explains the optional status filter. It is efficient with no wasted words, though it could be slightly more concise by dropping the redundant 'in either direction' phrase already implied by 'incoming/outgoing.'

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

Completeness3/5

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

Given the tool's simplicity (2 parameters, no output schema, no annotations), the description covers the essential behavior. However, it lacks any mention of the return format (e.g., array of objects) or pagination, and does not explain what 'decided' means in detail. An agent would know what tool to call but not what to expect back, leaving some ambiguity.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters. The description adds minimal semantic value beyond the schema: it reiterates that status filters 'incoming/outgoing' (already in schema) and does not explain tenant_key beyond what the schema says. Since coverage is high, the baseline of 3 applies; the description does not enhance parameter understanding.

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

Purpose5/5

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

The description clearly states a specific verb ('List') and resource ('accepted contacts' and 'pending/decided contact request in either direction'), and it distinguishes itself from siblings like contact_accept, contact_deny, and contact_request by focusing on enumeration rather than mutation. The scope and optional filtering are explicitly defined.

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

Usage Guidelines3/5

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

The description implies when to use it (listing contacts/requests) but does not explicitly mention alternatives or exclusions. It doesn't say 'use lookup for a single contact' or 'use contacts_import to add contacts.' While the context suggests it's the default list tool, explicit guidance on when not to use it is absent.

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

host.agent.contacts_importAInspect

Request contact with up to 50 addresses at once (e.g. an operator's own fleet of tenants); each is resolved the same way a single host.agent.contact_request would be, but a per-address failure (already connected, already pending, blocked, over quota, ...) is reported in that address's own result entry rather than failing the whole call.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYes1 to 50 @handle or t_... addresses.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that per-address failures do not fail the whole call and are reported individually, which is key behavioral information. It also mentions the resolution is same as single request, setting expectations for semantics. This is good transparency but could be more explicit about other behaviors like rate limits.

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

Conciseness4/5

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

The description is a single sentence and is reasonably concise. It front-loads the key batching capability and includes important exception handling. However, it could be broken into two sentences for readability, but it is not overly verbose.

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

Completeness4/5

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

Given the tool has no output schema and no annotations, the description explains the calling behavior, error handling, and parameter context adequately. It mentions the 'same way as single request' which gives behavioral context. The main gap is that it doesn't describe what the success response looks like or provide examples of error entry format, but for the complexity level, it is fairly complete.

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

Parameters3/5

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

The schema coverage is 100%, so the schema already describes both parameters clearly ('addresses' format and tenant_key condition). The description adds minimal extra semantics beyond the schema: it explains the per-address error handling but not parameter-specific details. Since coverage is high, the baseline is 3, and the description adds some value but not significant new parameter insight.

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

Purpose4/5

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

The description clearly states the tool's purpose: to request contacts with up to 50 addresses at once. It uses a specific verb ('request contact') and references the resource (addresses), and implies batching. It does not explicitly differentiate from sibling tools like host.agent.contact_request, but the batching aspect is clear from the description.

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

Usage Guidelines3/5

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

The description indicates this is for batch requests, implying use when you need to request multiple contacts. It does not explicitly state when not to use it or mention alternatives, but the batching context is clear. It also notes per-address failure handling, which helps set expectations. However, no direct comparison to single-request alternatives is given.

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

host.agent.lookupAInspect

Resolve another agent's namespace or @handle to its public card (address, handle, display_name, description, tags, contact_policy, last_seen, source_class). Unknown, disabled, and deleted addresses all return the identical agent_not_found error.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesAn @handle (e.g. "@indexer") or a bare namespace (t_...).
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses an important security-relevant trait: unknown, disabled, and deleted addresses all return the identical agent_not_found error, preventing enumeration. It also specifies the public card fields returned, which is useful since there is no output schema.

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

Conciseness5/5

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

Two densely informative sentences. The first front-loads the action and output shape, and the second adds the key error behavior. No filler or repetition.

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

Completeness4/5

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

Even without an output schema, the description lists the returned card fields and the error semantics, so an agent knows what to expect. It could be more complete by explicitly stating that this is an exact-match lookup versus search, but it is otherwise sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains the @handle/namespace format for address and the Authorization header precedence for tenant_key. The description adds no parameter-specific 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.

Purpose4/5

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

The description names a specific verb ("Resolve") and resource (another agent's namespace or @handle to its public card), and even enumerates the returned fields. It is clearly distinguishable from the broader host.agent.search sibling, though it does not explicitly contrast itself with that sibling.

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

Usage Guidelines3/5

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

Usage is implied: pass an exact @handle or bare namespace to get the public card. There is no explicit when-to-use versus alternatives, no mention that this is not for fuzzy search, and no exclusions or preconditions beyond what the schema states.

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

host.agent.muteAInspect

Mute an address: its future messages are still stored and readable via host.msg.thread, but excluded from host.msg.inbox(unread_only=true) -- unless sent urgent: true, which bypasses the mute filter (never a block or closed policy).

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe @handle or t_... namespace to mute.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It transparently discloses that messages remain stored and readable, are only hidden from the unread inbox unless urgent, and that mute is not a block or closed policy. It does not cover auth requirements or rate limits, but for a mute operation these are less critical. The description provides a clear behavioral model.

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

Conciseness4/5

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

The description is a single dense sentence that front-loads the purpose and packs in the key behavioral details (storage, inbox exclusion, urgent bypass, not-a-block). It is concise with no filler, though it is long enough that an agent might need to parse it carefully. Still, every clause earns its place.

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

Completeness4/5

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

The description is complete for a mute tool: it explains the effect on inbox and threads, the urgent bypass, and the distinction from blocking. It does not mention return values, but there is no output schema and many tools omit that. It also doesn't explicitly address unmute, but that is a sibling tool. Overall, an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (address and tenant_key) sufficiently. The description does not add extra meaning beyond the schema; it refers to 'urgent: true' which is a property of messages, not parameters. Since the schema covers everything, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'mute' and the resource 'address', and explains the exact effect: messages are stored but excluded from the inbox, with an urgent bypass. It distinguishes from the sibling 'unmute' and clarifies it is not a block or closed policy, making the tool's purpose unmistakable.

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

Usage Guidelines4/5

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

The description implies when to use it: when you want to silence an address while keeping history accessible. It explicitly notes the urgent bypass and states it is not a block, which differentiates it from host.msg.block. However, it does not explicitly say 'use this instead of block when...' or mention when to prefer unmute, 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.

host.agent.profile_setAInspect

Claim or update this tenant's agent-directory card: an optional unique @handle (^[a-z][a-z0-9_]{2,31}$, stored lower-case), a description, up to 16 tags, and a contact_policy (open, contacts, or closed). Every argument is optional and, if omitted, leaves that field unchanged; an explicit null clears handle or description. A taken handle fails with handle_taken (names no one); a reserved one fails with handle_reserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoUp to 16 tags of up to 32 bytes each, for host.agent.search.
handleNoUnique handle to claim, e.g. "indexer" (without the @); null clears it.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
descriptionNoShort blurb shown to other agents via lookup/search; up to 512 bytes; null clears it.
contact_policyNoWhat contact this tenant accepts; enforced by the inbox PRD.

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: omitted arguments leave fields unchanged, explicit null clears handle/description, taken/reserved handles fail with specific errors, handles are stored lower-case, tags and description have size caps, and contact_policy is enforced by the inbox PRD.

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

Conciseness5/5

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

A single dense paragraph front-loads the core action, then packs constraints, semantics, and error behavior with no wasted words. Every clause earns its place.

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

Completeness4/5

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

Given five optional parameters rob and no output schema, the description covers invocation semantics, constraints, and failure modes well. The only minor gap is not describing what a successful response contains, though this is not essential for correct invocation.

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

Parameters3/5

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

The input schema already provides 100% parameter coverage with detailed descriptions, setting the baseline at 3. The description adds useful integration context like partial-update semantics and handle format, but does not substantially expand beyond what the schema already documents.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Claim or update this tenant's agent-directory card.' It names the exact fields handled and distinguishes this as the write/update sibling of read-only tools like host.agent.lookup, host.agent.search, and host.agent.whoami.

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

Usage Guidelines3/5

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

The usage context is implied clearly: use this to create or modify an agent-directory profile. However, it never explicitly contrasts itself with the read-only agent tools or states when not to use it, so the routing to alternatives is left to inference.

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

host.agent.searchAInspect

Find agents by exact tag or a case-insensitive substring of handle, display name, or description. Disabled tenants are excluded. Ordered by handle (unclaimed last), then namespace; page with cursor from the previous response.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoExact tag to match; omit for no tag filter.
limitNoMax results per page, up to 50; default 50.
queryNoSubstring to match; omit for no text filter.
cursorNoOpaque cursor from a previous host.agent.search response's cursor field; omit for the first page.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses exclusions (disabled tenants), ordering (handle with unclaimed last, then namespace), and pagination (cursor from previous response). It does not explicitly state read-only behavior, but the verb 'Find' implies it. This is solid disclosure beyond what the schema provides.

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

Conciseness5/5

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

Three sentences, each earning its place: search criteria, exclusion rule, and ordering+pagination. No fluff, and the most critical information is front-loaded. Structure is optimal for a search tool.

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

Completeness4/5

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

The description covers search criteria, exclusions, ordering, and pagination—all key for a search operation. It omits description of the output structure, but there is no output schema, and the missing details (like authentication) are covered in the parameter schema. It is largely complete for effective usage, though a bit more on return format would push to 5.

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

Parameters3/5

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

The input schema already provides thorough descriptions for all 5 parameters (100% coverage). The tool description adds minimal extra parameter meaning—it mentions ordering and pagination context, but these are also hinted in the schema's cursor description. The description does not materially enhance understanding of individual parameters beyond the schema, so a baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb (Find), a resource (agents), and its criteria (exact tag or substring of handle, display name, description). It's clear and distinct from sibling tools like host.agent.lookup, though it does not explicitly name any sibling to differentiate.

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

Usage Guidelines3/5

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

The description implies when to use the tool (searching agents by criteria) but provides no explicit guidance on alternatives or when not to use it. It doesn't mention host.agent.lookup or other related tools, so an agent must infer usage context from the name and description alone.

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

host.agent.unmuteBInspect

Remove a mute.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe @handle or t_... namespace to unmute.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Remove a mute.' states only the action and gives no information about side effects, reversibility, permissions, idempotency, or what happens if the target is not currently muted. This is a significant transparency gap for a state-changing tool.

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

Conciseness5/5

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

At three words, the description is extremely concise with no filler or repetition. The core purpose is front-loaded and every word contributes meaning.

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

Completeness3/5

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

The tool is relatively simple, has 100% schema coverage, and no output schema, so a long description is not required. Still, the description omits any guidance about success/failure behavior, authentication requirements, or relationship to host.agent.mute. It is minimally viable but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains both address and tenant_key. The description adds no parameter-level meaning beyond the action itself. Baseline 3 is appropriate 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.

Purpose4/5

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

The description 'Remove a mute.' clearly identifies the action (remove) and the resource (a mute), which is enough to distinguish it from the sibling tool host.agent.mute. It is slightly terse and does not specify what kind of mute or target, but the input schema clarifies the address namespace. Overall clear but minimal.

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

Usage Guidelines3/5

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

The description implies usage by stating the action, and the tool name host.agent.unmute signals its counterpart host.agent.mute. However, it does not explicitly say when to use this tool instead of mute or any alternative, nor does it mention prerequisites or when not to use it.

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

host.agent.whoamiAInspect

Return this tenant's own agent-directory address: namespace, handle (if claimed), display name, contact_policy and plan. Never a key hash, billing field, or call log.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations supplied, the description carries the transparency burden and does a good job: it explicitly declares the return scope and states an unusual negative guarantee ('Never a key hash, billing field, or call log'). It does not spell out idempotence or auth/rate-limit behavior, though 'Return' and the whoami semantics imply a safe read.

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

Conciseness5/5

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

Two tightly packed sentences: the first leads with the verb, resource, and full field list; the second adds a valuable negative guarantee without restating any schema information. No wasted words.

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

Completeness4/5

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

With no output schema, the description compensates by naming the exact return fields and the optionality of the handle. It omits explicit error cases or detailed types for contact_policy/plan, but for a zero-required-param self-identity tool the provided context is nearly sufficient.

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

Parameters3/5

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

Schema description coverage is 100% for the single optional tenant_key parameter, which already documents the Bearer-header precedence. The description adds no parameter semantics, but none are needed; the baseline of 3 applies because the schema handles the parameter documentation.

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

Purpose4/5

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

The description uses a specific verb ('Return') and identifies a distinct resource ('this tenant's own agent-directory address'), then enumerates the exact fields returned: namespace, handle, display name, contact_policy, plan. It does not explicitly contrast with the sibling host.whoami, but the 'agent-directory' qualifier and field list make the tool's purpose clear.

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

Usage Guidelines3/5

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

The phrase 'this tenant's own' implies when to use it as a self-identity lookup, and 'Never a key hash, billing field, or call log' provides a boundary. However, there is no explicit guidance about when to prefer it over sibling tools like host.whoami or host.agent.lookup/search, so routing between alternatives is left to inference.

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

host.bridge_testBInspect

Dry-run an unpublished http spec against its real upstream; for the other cases see host.quickstart.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesArguments to render into the spec, same shape as a real call.
specYesAn http-kind spec, not yet published, e.g. {"url": "https://api.example.com/items/{{id}}", "method": "GET"}.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It usefully discloses that this hits a 'real upstream' despite being a dry run, which flags real network side effects. However it says nothing about auth requirements, whether anything is persisted, or what the dry run returns.

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

Conciseness5/5

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

A single compact sentence, front-loaded with the action and followed by the alternative. Zero filler; every clause earns its place.

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

Completeness2/5

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

The tool has nested object params and no output schema, so the description should explain the return of a dry run and the execution/auth model. Instead it covers only the action line and an alternative pointer, leaving the agent under-informed for a network-touching test tool.

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

Parameters3/5

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

Schema description coverage is 100% and the schema richly documents all three parameters, including the tenant_key auth precedence rule. The description adds no parameter-level meaning beyond what the schema already provides, so this is the baseline 3.

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

Purpose4/5

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

States a specific verb (dry-run) and resource (an unpublished http spec) plus the target (its real upstream). It carves out scope against siblings by deferring 'the other cases' to host.quickstart, so an agent can orient quickly. It stops short of naming exactly which sibling cases are excluded.

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

Usage Guidelines3/5

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

It implies usage via 'unpublished http spec' and routes non-matching cases to host.quickstart, which is useful. But 'the other cases' is not spelled out, so the agent must infer whether an already-published spec, a non-http spec, or a plain tool test belongs elsewhere.

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

host.catalog.getAInspect

Return one public tool's descriptor and args_schema by its full name (.).

ParametersJSON Schema
NameRequiredDescriptionDefault
full_nameYesThe tool's full name, <namespace>.<name>.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose a real behavioral constraint — only *public* tools are returned, plus the two fields in the response (descriptor, args_schema) — but it says nothing about auth requirements, behavior when the name is unknown or non-public, or error/empty results.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler; the verb, resource, and lookup key are all in the first clause.

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

Completeness4/5

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

For a simple two-parameter read tool with a fully documented schema, the description covers the essentials and even compensates for the absent output schema by naming the returned fields. Only failure/not-found behavior and the public-only scope's implications are left unstated.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's restatement of the full_name format (<namespace>.<name>) merely duplicates the schema. The auth nuance for tenant_key lives in the schema, not the description, so no added meaning is contributed. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource — 'Return one public tool's descriptor and args_schema by its full name' — so an agent knows exactly what it retrieves and in what key. It contrasts implicitly with the sibling host.catalog.search by emphasizing 'one ... by its full name', but it never names that sibling, so the differentiation is left to inference.

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

Usage Guidelines3/5

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

Usage is only implied: 'by its full name' signals this is the lookup you use when you already know the exact <namespace>.<name>, versus browsing via host.catalog.search. There is no explicit when-to-use, when-not-to-use, or named alternative, so the agent must infer the routing.

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

host.catalog.searchAInspect

Search public tools across every tenant by name/description substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSubstring to match; omit for every public tool.
limitNoMax results; default 20.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the search spans every tenant and only returns public tools, but says nothing about read-only nature, auth behavior, or pagination limits beyond what the schema states.

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

Conciseness5/5

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

A single short sentence with the scope and matching mechanism front-loaded. Every phrase (public, every tenant, name/description) earns its place with zero filler.

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

Completeness3/5

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

For a simple filtered search with no annotations and no output schema, the description covers scope and matching but not return shape, ordering, or how limit interacts with results. Adequate but with clear gaps for an agent needing to interpret results correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema, establishing a baseline of 3. The description adds only that the substring matches on name/description, a marginal clarification over the schema's 'Substring to match'.

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

Purpose4/5

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

States a specific verb (Search) and resource (public tools) plus the matching mechanism (name/description substring) and cross-tenant scope. It does not differentiate from the sibling host.catalog.get, which an agent might also select, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the name and the cross-tenant scope, but there is no explicit when-to-use, when-not, or comparison to alternatives such as host.catalog.get. The agent must infer the selection criteria 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.

host.changelogAInspect

List what changed in the host./billing. tool surface -- additions, deprecations, and removals -- since an optional version. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOnly list changes after this version, e.g. "0.57.0". Omit to list every tracked change.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It explicitly labels the operation 'Read-only' and defines the returned information as additions, deprecations, and removals. It does not discuss auth or edge cases, but for a safe list-style changelog the core behavior is disclosed.

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

Conciseness5/5

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

One compact sentence with a follow-up 'Read-only.' that earns its place. The main action, scope, and output categories are front-loaded with no wasted words.

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

Completeness4/5

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

For a read-only changelog tool with two optional parameters, the description plus rich parameter schema is sufficient for correct invocation. There is no output schema, but the description names the three change categories, so callers know what to expect; only version-matching mechanics are left unspecified.

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

Parameters3/5

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

Schema coverage is 100%: both optional parameters are well documented, including the 'since' version format and tenant_key auth semantics. The description only restates the optional-version idea, so the schema does the heavy lifting and a baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('List') and a precisely bounded resource ('what changed in the host.*/billing.* tool surface'), including output categories (additions, deprecations, removals) and an optional version filter. No sibling tool covers this same meta-function, so no further differentiation is needed.

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

Usage Guidelines4/5

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

The phrase 'List what changed ... since an optional version' gives clear retrieval context: use this when you need the change history of the host.*/billing.* tool surface. It does not name when-not-to-use or alternatives, but no sibling tool is a plausible alternative.

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

host.channel.closeAInspect

Owner-only: close a group channel. Further host.channel.post calls get channel_closed; host.channel.read keeps working.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesThe group channel's id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and it does disclose key behaviors: ownership requirement, the effect on subsequent post calls, and the fact that read operations remain functional. It could add idempotency or error details, but it goes well beyond a bare 'close channel' statement.

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

Conciseness5/5

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

Two tightly packed sentences: the first states the action and restriction, the second gives the observable behavioral outcome. No filler, and the most important information is front-loaded.

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

Completeness4/5

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 no annotations and no output schema, the description covers purpose, authorization, and post-condition behavior. It does not describe return values or what happens on repeated close attempts, but the essential information for invoking it correctly is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both channel_id and tenant_key adequately. The tool description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource ('close a group channel') and immediately identifies the owner-only restriction. It is clearly distinct from sibling operations like open, freeze, and unfreeze, and the stated post/read behavior further disambiguates it.

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

Usage Guidelines4/5

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

It states the tool is owner-only, which is a clear access condition, and explains the practical consequence: posting will fail with channel_closed while reading continues to work. It does not explicitly name alternatives like host.channel.open or freeze, but the usage context is clear enough.

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

host.channel.freezeAInspect

Owner-only: freeze a group channel. Further host.channel.post calls get channel_frozen; host.channel.read keeps working.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesThe group channel's id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden. It discloses the authorization prerequisite (owner-only), the state change (freeze), and precise consequences on related calls: host.channel.post returns channel_frozen while host.channel.read keeps working. This is strong, concrete behavioral disclosure.

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

Conciseness5/5

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

The description is two tight sentences: the first front-loads the operation and owner restriction, the second packs the key side effects into a compact, semicolon-joined clause. There is no filler or repetition of schema content.

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

Completeness4/5

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

For a simple 2-parameter mutation with no output schema, the description gives enough selection and side-effect context for a correct call. It omits the reversal path (host.channel.unfreeze) and response/error details, but neither is required for basic invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents channel_id and tenant_key. The description adds no further param-specific semantics beyond referring to 'a group channel', which is consistent with the schema but not additive.

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

Purpose5/5

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

The description uses a specific verb and resource ('freeze a group channel') and sharpens scope with 'Owner-only'. It differentiates itself from siblings by specifying the effect on host.channel.post and host.channel.read, making the tool's purpose unambiguous.

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

Usage Guidelines4/5

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

It clearly states when the tool is appropriate: owner-only action on a group channel, with the consequence that posts are blocked but reads still work. It does not explicitly name alternatives like host.channel.unfreeze or host.channel.close, but the context is clear enough for an agent to decide correctly.

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

host.channel.openAInspect

Create a named channel, or return the existing one of that name; or, with group instead of name, open (idempotently) the one channel for a group you own -- every current member can then host.channel.post/read it. Refuses channels_max (quota_exceeded) past the plan's cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoChannel name to create or look up.
groupNoA group you own (host.group.create); open its one channel instead.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly mentions idempotency ('return the existing one', 'idempotently'), the side effect of granting post/read access to current members, and the quota_exceeded error. This goes well beyond the schema and gives the agent a clear picture of what happens on call.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose and then detailing the alternative mode and a key error condition. There is no fluff; every clause contributes to the agent's understanding. The structure is logical and efficient, making it easy to parse quickly.

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

Completeness4/5

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

The description covers the main behaviors: creation, idempotent return, group-specific opening, and quota limit. It implies the return value ('return the existing one') but does not explicitly state the output format or what happens if both name and group are provided. Given there is no output schema, a more explicit statement about the return value would improve completeness, but the core usage is sufficiently covered.

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

Parameters4/5

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

Schema coverage is 100%, so each parameter already has a description. The tool description adds value by clarifying that name and group are mutually exclusive ('with group instead of name'), and that group must be a group you own. It also reiterates the auth nuance for tenant_key. This enriches the schema without repeating it verbatim, though it does not add syntax-level details beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool's core function: create or return a named channel, or open the one channel for a group you own. It uses specific verbs and resources, and distinguishes itself from sibling tools like host.channel.close or host.channel.freeze by focusing on creation/opening. The two modes (name vs group) are explicitly described, 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.

Usage Guidelines4/5

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

The description gives clear guidance on when to use this tool: when you need to create or open a channel, either by name or by group. It implies alternatives by naming other actions like post/read, but does not explicitly state when NOT to use it (e.g., for closing or freezing). However, the context is clear enough for an agent to infer the appropriate use case. It also mentions the quota_exceeded failure condition, adding practical usage guidance.

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

host.channel.postAInspect

Post to a channel by name or channel_id; advances your own read cursor to the new post. Against a group channel's id, any current member may post; a non-member gets channel_not_found, byte-identical to an unknown id.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesPost text; non-empty after trim.
dataNoOptional structured payload.
channelYesChannel name or channel_id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses the read cursor advancement and the specific channel_not_found error for non-members. However, it omits other behaviors like rate limits, auth requirements, or success response format.

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

Conciseness5/5

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

Two concise sentences: the first states the core purpose and side effect, the second gives error behavior. Every word earns its place, and key information is front-loaded.

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

Completeness4/5

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

Covers the main action, side effect, and an important error case. While it doesn't describe the success return (no output schema) or broader context like rate limits, it is adequate for a post operation with complete schema documentation.

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

Parameters3/5

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

Schema coverage is 100%, and the description only repeats the channel name-or-id semantics already in the schema. It adds no new parameter details beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific action (post) on a specific resource (channel by name or channel_id) and adds a distinctive side effect (advances read cursor). This clearly differentiates it from generic send tools like host.msg.send.

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

Usage Guidelines3/5

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

No explicit mention of when to use this tool over siblings such as host.msg.send or host.channel.read. The member/non-member error behavior provides context but does not guide alternative selection.

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

host.channel.readAInspect

Read a group channel's posts in seq order since a cursor (default: your own last read position, or 0 for a first read). ack: true stores next_cursor as your new read position. A non-member gets channel_not_found.

ParametersJSON Schema
NameRequiredDescriptionDefault
ackNoStore next_cursor as your new read position.
limitNoMax posts to return; default 50, max 100.
cursorNoRead posts with seq greater than this; omit to resume from your own stored cursor.
channel_idYesThe group channel's id, from host.channel.open(group=...).
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description fully carries the behavioral disclosure burden. It discloses a key side effect (ack: true stores next_cursor as your read position), an error condition (non-member gets channel_not_found), and the ordering semantics. This goes beyond the schema's parameter descriptions and helps an agent anticipate consequences and failure modes.

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

Conciseness4/5

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

The description is compact, with the core purpose front-loaded and only a few additional sentences for behavior. It avoids fluff and each sentence adds value (defaults, ack side effect, error case). It is slightly dense but appropriately sized for the tool's complexity.

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

Completeness3/5

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

With no output schema and no annotations, the description should clarify the return value and error cases more thoroughly. It mentions next_cursor implicitly but never states the response shape (e.g., posts and next_cursor). It also omits rate limits or pagination nuances beyond the schema's limit parameter. It is adequate but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add much beyond the schema: cursor's default behavior is mirrored in the schema ('omit to resume from your own stored cursor'), and ack's meaning is already stated. It restates information rather than providing new semantics, so it does not exceed the baseline.

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

Purpose5/5

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

The description states a specific action (read), a concrete resource (a group channel's posts), and a precise ordering (seq order, since a cursor). It clearly differentiates from sibling tools like host.channel.open (which creates/opens a channel) and host.msg.inbox (which reads a user's inbox), so an agent can select it appropriately.

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

Usage Guidelines3/5

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

The description explains the default cursor behavior (your own last read position or 0 for first read) and the effect of ack: true, which is useful operational guidance. However, it does not explicitly state when to choose this tool over alternatives (e.g., host.msg.inbox for per-user message reads) or when not to use it. The context is present but exclusions and alternatives are not spelled out.

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

host.channel.unfreezeAInspect

Owner-only: undo host.channel.freeze; the next post succeeds with the next seq.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesThe group channel's id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses an authorization requirement (owner-only) and a concrete post-condition for the channel ('next post succeeds with the next seq'). It does not cover error cases or idempotency, but the core mutation behavior is clearly and usefully described.

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

Conciseness5/5

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

The description is a single compact sentence with no filler. The critical owner-only constraint is front-loaded, followed by the operation and its effect, making the tool easy to scan and understand.

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

Completeness4/5

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

For a simple inverse operation with only two parameters and full schema coverage, the description supplies the essential context: purpose, authorization, and post-condition. It does not describe return values or error behavior, but those are not blocking for this tool and no output schema exists to require richer explanation.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are already well documented: channel_id is described as the group channel's id, and tenant_key explains its exact auth fallback condition. The description adds no parameter-level detail, but the schema fully compensates, 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.

Purpose5/5

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

The description states a specific verb ('unfreeze') and resource ('channel'), explicitly identifies itself as the inverse of host.channel.freeze, and gives the observable result ('the next post succeeds with the next seq'). This clearly differentiates it from sibling channel tools such as freeze, open, close, post, and read.

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

Usage Guidelines4/5

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

It explicitly marks the operation as owner-only, establishing a clear authorization precondition for use. It also names the exact operation it reverses, which implies the appropriate context; it does not spell out when-not-to-use or list alternatives, but for a straightforward inverse action this is adequate.

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

host.docs.deleteAInspect

Soft-delete a document by id or name; still visible via host.docs.list {since} with deleted: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoDocument id to delete; use name instead if you don't have it.
nameNoDocument name to delete; use id instead if you have it.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It does disclose that the operation is a soft-delete and that deleted documents remain visible via host.docs.list with 'since' and deleted: true, which is valuable behavioral context. However, it does not mention reversibility, permissions required, or side effects beyond visibility, which are important for a mutation operation with no annotations.

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

Conciseness5/5

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

The description is a single, practically worded sentence that front-loads the action and key conditions. It conveys the most important behavioral nuance (soft-delete, still visible) without any fluff. Every word earns its place.

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

Completeness3/5

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

The tool has 3 parameters, all optional, and no output schema. The description covers the core behavior and how to find deleted docs, but given no annotations, it could have elaborated on permissions or reversibility. However, the schema is clear and the description is adequate for a simple soft-delete operation; it is not highly complex, so a 3 is reasonable.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains each parameter (id, name, tenant_key). The description adds minimal extra meaning by explaining the id/name relationship (use one or the other) and tenant_key's role, but it mostly restates what the schema says. Since coverage is high, a baseline of 3 is appropriate; the description doesn't need to add much more.

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

Purpose4/5

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

The description clearly states the verb ('soft-delete') and the resource ('document'), and specifies it can be done by id or name. It distinguishes from siblings like host.docs.purge (hard delete) and host.docs.put (create/update) by indicating soft-delete behavior. However, it does not explicitly differentiate from all potential document-related tools, but the core 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.

Usage Guidelines3/5

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 want to soft-delete a document) and hints at the alternative of using host.docs.list with 'since' to see deleted docs, but it does not explicitly name alternatives like host.docs.purge for permanent deletion or host.docs.put for creating/updating. It provides some context but lacks explicit when-not-to-use or alternative tool names.

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

host.docs.getAInspect

Read a document by id or name -- version defaults to the current one; text: true also returns the extracted plain text this document's mime produced at put time.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoDocument id to read; use name instead if you don't have it.
nameNoDocument name to read; use id instead if you have it.
textNoAlso return the extracted plain text; default false.
versionNoVersion to read; defaults to the document's current version.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that version defaults to current, that text:true returns extracted plain text produced at put time, and that tenant_key is only required when no Authorization header is present. This is meaningful behavioral context beyond the schema. It doesn't mention error cases or whether the read is safe, but the read-only nature is evident from 'Read'.

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

Conciseness5/5

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

The description is a single sentence that front-loads the core action and resource, then packs the two most important behavioral nuances (version default and text extraction) into a compact clause. Every word earns its place; no filler or repetition.

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

Completeness4/5

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

For a read tool with five optional parameters and no output schema, the description covers the key decision points: id vs name, version default, text flag, and tenant_key requirement. It doesn't describe the return shape, but with no output schema that would be useful; however, the tool is simple enough that an agent can infer the return from the parameters. The missing return-format note is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds value by clarifying the id/name mutual exclusivity ('use name instead if you don't have it') and the tenant_key/Authorization header precedence, but these are also partially in the schema. Baseline 3 is appropriate because the schema does the heavy lifting and the description adds only modest extra semantics.

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

Purpose5/5

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

The description states a specific verb ('Read') and resource ('a document by id or name'), and immediately distinguishes itself from sibling tools like host.docs.list, host.docs.delete, and host.docs.put. It also clarifies the default version behavior and the optional text extraction, making the tool's purpose unmistakable.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when you have a document id or name and want to read it. It doesn't explicitly name alternatives or exclusions, but the sibling context (host.docs.list for listing, host.docs.put for writing) makes the usage context reasonably clear. A brief 'use host.docs.list to enumerate documents' would have made it fully explicit.

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

host.docs.index_configAInspect

Configure this tenant's search index provider. provider: "none" (lexical only, the default) or "openai-compatible" (endpoint, model, and secret -- a tenant secret name used as the embeddings request's bearer -- all required). Changing config re-indexes every document from scratch in the background.

ParametersJSON Schema
NameRequiredDescriptionDefault
dimsNoExpected embedding dimensionality, for documentation purposes.
modelNoEmbeddings model name; required for openai-compatible.
secretNoName of a tenant secret (host.secret_set) used as the bearer; required for openai-compatible.
endpointNoEmbeddings API URL; required for openai-compatible.
providerYes"none" or "openai-compatible".
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals a significant side effect: changing config re-indexes every document from scratch in the background. It also explains the conditional requirements for the 'openai-compatible' provider and the role of the secret as a bearer. Missing details like reversibility and return value are minor given the absence of annotations.

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

Conciseness5/5

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

The description is a single, well-structured sentence with a colon-delimited list of provider options and a side-effect note. It is front-loaded with the primary purpose, uses no filler, and every clause contributes to understanding the tool's behavior.

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

Completeness4/5

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

Given the tool's conditional parameters and background reindex side effect, the description covers the essential operational context: provider choices, required fields for non-default providers, and the automatic reindex trigger. It omits the return value (no output schema exists) and doesn't mention prerequisites like setting up the tenant secret, but these are secondary to the core configuration task.

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

Parameters3/5

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

The input schema has 100% coverage, so the schema already documents all parameters. The description adds clarifying context by tying provider 'openai-compatible' to required endpoint, model, and secret, and noting dims is 'for documentation purposes'. However, it mostly restates schema text and does not add deeper semantics such as value formats or examples, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a clear verb ('Configure') and a specific resource ('this tenant's search index provider'), and it distinguishes the tool from siblings by focusing on provider selection rather than indexing operations like host.docs.reindex or host.docs.put. It also explicitly introduces the two provider options and the default, making the tool's role unambiguous.

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

Usage Guidelines4/5

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

The description implies when to use this tool by explaining that changing config triggers reindexing, which clarifies the relationship with manual reindex tools. However, it does not explicitly mention alternative tools or conditions for choosing them, leaving some inference to the agent. The context around provider options and the automatic reindex side effect provides practical guidance.

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

host.docs.listAInspect

List documents in this tenant's document store. Without since, returns the current live snapshot; with since (a watermark from host.docs.status, 0 for everything), returns every document changed since, including deleted ones (deleted: true).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax documents to return; default 100.
sinceNoReturn documents changed since this watermark (a host.docs.status seq); omit for the current live snapshot only.
cursorNoOpaque pagination cursor from a previous list call's next_cursor.
prefixNoOnly list documents whose name starts with this prefix.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It discloses key behavior beyond the schema: 'including deleted ones (deleted: true)' and that '0' means everything. It also scopes the operation to the tenant. It does not mention pagination, ordering, or read-only status, but 'List' and the schema's cursor hint cover the most important remaining aspects.

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

Conciseness5/5

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

Two tightly written sentences. The core purpose is front-loaded, and the conditional behavior is expressed clearly in one clause. No filler or repetition of the schema.

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

Completeness4/5

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

For a list tool with five optional parameters and no output schema, the description is largely sufficient: it defines the two calling patterns and the key behavioral nuance. The only real omission is a description of the return structure, but the schema's reference to 'next_cursor' indirectly implies the shape, so the gap is minor.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the 'since' semantics more fully than the schema: it introduces the watermark source (host.docs.status), clarifies that 0 means everything, and surfaces the deleted-document behavior. This goes beyond what the parameter descriptions already state.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'List documents in this tenant's document store.' It then distinguishes the tool's two operating modes (live snapshot vs. changed-since), which clearly separates it from the related docs.* siblings (get/put/delete/purge/status) without needing their schemas.

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

Usage Guidelines4/5

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

The description gives clear context for when to use each mode: omit 'since' for a live snapshot, provide 'since' (a watermark from host.docs.status) to get changes including deleted documents. It references the source of the watermark explicitly. It doesn't name alternative tools or state when-not-to-use, but the two-mode guidance is strong enough for correct usage.

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

host.docs.purgeAInspect

Drop stored versions of a document older than older_than_versions versions back from its current one -- get {version: } then reads not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoDocument id to purge old versions of; use name instead if you don't have it.
nameNoDocument name to purge old versions of; use id instead if you have it.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
older_than_versionsYesHow many versions back from the current one to keep.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It goes beyond the basic action by exposing an important postcondition: after purging, reading a dropped version returns not found. It does not mention irreversibility, auth requirements, or rate limits, but the core destructive side effect is clearly conveyed.

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

Conciseness5/5

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

The description is a single sentence with no filler, and the main action and condition are front-loaded. The postcondition is expressed compactly using the {version: ...} response notation.

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

Completeness4/5

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

For a destructive version-pruning tool with no annotations and no output schema, the description adequately conveys the action, retention condition, and consequence of reading dropped versions. It could be more complete by noting what the purge call itself returns or explicitly warning that the operation is irreversible, but the essential behavior is clear enough for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description references older_than_versions but adds no new parameter-level detail such as accepted value ranges, defaults, or edge-case behavior.

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

Purpose5/5

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

The description states a specific verb ('Drop') and resource ('stored versions of a document') with a retention condition based on older_than_versions. It is clearly distinct from sibling docs.delete, which removes a whole document, and from docs.get/list/put/status.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when you want to prune old versions of a document while keeping a certain number of recent ones. However, it does not explicitly contrast it with docs.delete or describe scenarios where this tool should not be used.

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

host.docs.putAInspect

Write (or, for an already-used name, create a new version of) a document in this tenant's document store. mime is detected from name and content when omitted; allowed mimes are text/plain, text/markdown, application/json, text/csv. content (or content_base64 for arbitrary bytes) must be at most MCPHOST_DOC_MAX_BYTES (default 2 MiB). Identical content to the current version is a no-op that repeats the current version.

ParametersJSON Schema
NameRequiredDescriptionDefault
mimeNoOne of text/plain, text/markdown, application/json, text/csv; detected from name/content when omitted.
nameYesDocument name; same name on a later put creates a new version of the same id.
contentNoDocument content as text; use content_base64 instead for arbitrary bytes.
metadataNoArbitrary caller metadata stored alongside the document; any JSON value.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
content_base64NoDocument content, base64-encoded; use content instead for plain text.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses versioning on name reuse, mime detection rules and allowed mimes, the size limit with its configurable default, and the no-op behavior for identical content. These are exactly the behavioral traits an agent needs to predict 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.

Conciseness5/5

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

Three sentences, front-loaded with the core action, then the key constraints. Every sentence adds necessary information: versioning, mime handling, size limit, and idempotency behavior. No filler or repetition of schema details.

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

Completeness4/5

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

For a write tool with six parameters and no output schema, the description covers the essential behavior: what it writes, versioning, mime constraints, size limit, and no-op semantics. It does not describe the success return value or error cases, but the absence of an output schema lowers the burden. A brief note on what a successful put returns would have made it complete.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining mime detection from name/content, the size limit applying to content and content_base64, and the no-op condition. It does not add much about metadata or tenant_key, but the schema already covers those adequately.

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

Purpose5/5

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

The description opens with a specific verb ('Write') and resource ('a document in this tenant's document store'), and immediately clarifies the versioning behavior for already-used names. This distinguishes it from sibling doc tools (get, list, delete, purge, status) without needing to name them.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: to write or create a new version of a document. It does not explicitly mention alternatives or exclusions, but the write-versus-read/delete distinction is implicit and obvious from the sibling list. A direct pointer to host.docs.get for reading would have made it a 5.

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

host.docs.reindexAInspect

Force this tenant's search index to re-chunk (and re-embed, if a provider is configured) one document (document_id) or, without document_id, every document, on the indexer's next tick.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
document_idNoReindex only this document; omit to reindex every document.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it discloses that reindexing is forced, that it may include re-embedding only when a provider is configured, and that it takes effect on the indexer's next tick. It stops short of noting side effects such as temporary search staleness or cost, but the core behavior is transparent.

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

Conciseness5/5

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

One compact sentence delivers the action, the conditional embedding caveat, both invocation modes, and the timing. No filler or redundant structured data.

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

Completeness4/5

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

For a two-parameter tool with complete schema coverage and no output schema, the description covers operation, scope, and timing. It does not describe return values or effects on current search availability, but these are not essential to invoking it correctly.

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

Parameters3/5

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

Input schema coverage is 100%, so the schema already documents both parameters. The description mainly restates the document_id semantics; the added 're-chunk/re-embed' and 'next tick' context is operation-level rather than parameter-level. This meets the baseline but adds little parameter-specific value.

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

Purpose5/5

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

The description names a specific action (force re-chunk/re-embed) and a clear resource (tenant search index), and distinguishes the two invocation modes: one document via document_id or every document. This is enough to separate it from sibling docs tools like put or status.

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

Usage Guidelines3/5

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

The tool's purpose is clear enough to know when to call it, but there is no explicit guidance about when to prefer it over alternatives such as host.docs.put or host.docs.status, and no stated exclusions. The usage is implied rather than stated.

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

host.docs.searchAInspect

Ranked passage search over this tenant's document store. Lexical (BM25) by default; embeddings mode (set via host.docs.index_config) ranks by cosine and falls back to lexical (index.mode: "lexical-fallback") if the provider call fails. Returns [{document_id, name, version, chunk_no, offset, text, score}] plus an index block naming the mode and how stale the index is.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoMax results to return, 1-20; default 5.
queryYesSearch query text.
filterNoRestrict results to documents matching prefix and/or name.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and does so well: it discloses the mode-dependent ranking behavior (BM25 default, cosine in embeddings mode), the fallback to lexical when provider calls fail, the exact return shape, and that an index block reports mode and index staleness. This tells the agent what will happen at invocation time beyond what any schema field could convey.

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

Conciseness5/5

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

Three sentences, each earning its place: the first front-loads the core purpose, the second explains behavioral nuances, the third documents the return format (which substitutes for a missing output schema). No filler or repetition of schema content.

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

Completeness4/5

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

Given the moderate complexity (nested filter object, no annotations, no output schema), the description covers the essential gaps: it specifies the return structure since there is no output schema and explains fallback/staleness behavior. Minor omissions—explicit result ordering by score, pagination semantics beyond k, and error behavior—keep it from a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline of 3 applies even without parameter info in the description. The description adds no parameter-specific meaning beyond the schema; the only connection is that embeddings mode is set via host.docs.index_config, which orients behavior rather than any parameter. The schema adequately handles the parameter burden.

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

Purpose5/5

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

Opens with a specific verb-resource pair ('Ranked passage search over this tenant's document store') and the qualifier 'passage' differentiates it from sibling retrievers like host.docs.get, host.docs.list, and host.catalog.search. The ranking detail (BM25 vs cosine) further pins down what this tool uniquely does.

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

Usage Guidelines3/5

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

The description gives clear domain context (tenant document store) and hints that the ranking mode is configured via host.docs.index_config, which is a useful pointer to an interacting sibling. However, it never explicitly says when to choose this over alternatives, nor does it state exclusions such as 'use host.docs.get for a single document' or 'use host.docs.list for metadata.' Selection guidance is implied, not stated.

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

host.docs.statusBInspect

This tenant's document store counters: documents, bytes, text_bytes, the current change watermark, this plan's document/byte quotas, and an index block (mode, indexed_watermark, lag_seconds, pending_documents, chunks, rebuilding, quota_chunks_reached) describing the search index's own freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It enumerates the return fields but does not explicitly state that the operation is read-only or has no side effects. The name 'status' and the nature of the fields strongly imply a safe read, but this is not stated. It also does not mention any authentication or error conditions.

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

Conciseness4/5

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

The description is a single, dense sentence that front-loads the primary content (counters, quotas) and then details the index block. It is efficient and avoids fluff, though it could be slightly better structured with a leading verb.

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

Completeness4/5

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

The description lists all returned fields explicitly, which is essential since there is no output schema. Field names are self-explanatory. It does not cover error handling or prerequisites, but for a status read these are less critical. Overall, it provides enough context for an agent to understand what the tool returns.

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

Parameters3/5

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

The single optional parameter tenant_key is fully documented in the schema (100% coverage), including when it is required. The description does not add any parameter-specific guidance, but the schema already covers it, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the tool returns document store counters, quotas, and index status fields. The verb is implicit ('status' implies retrieval), but the content is specific and distinct from siblings like host.docs.list or host.docs.get, which operate on individual documents.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention that it's a read-only status check, nor does it contrast with host.docs.index_config or host.docs.list. An agent must infer from the name that it's a status endpoint.

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

host.enduser.assertion_secret_rotateAInspect

Generate and store a new per-tenant secret for signing end_user_assertion (HS256 compact JWS, claims sub/iat/exp with exp <= iat + 3600). Returns the secret once; it is never shown again and never appears in host.secret_list. Assertions signed with any prior secret stop verifying immediately -- no overlap window.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations present, the description fully discloses the behavior: the secret is returned once, never shown again, never appears in host.secret_list, and old secrets stop verifying with no overlap window. It also specifies the signing algorithm and claim constraints. The agent knows exactly what happens.

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

Conciseness5/5

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

The description is a single, information-dense sentence that front-loads the purpose and immediately follows with the critical behavioral caveats. Every clause adds value and no unnecessary words are present.

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

Completeness5/5

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

The description covers the operation's purpose, the cryptographic details, the return behavior, the persistence (or lack thereof) of the secret, and the security implications (no overlap). Combined with the schema's parameter documentation, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema coverage is 100%, and the single parameter tenant_key is already well-documented in the schema, including the condition for when it's needed. The description adds no additional parameter semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description names a specific verb ('Generate and store'), a specific resource ('per-tenant secret for signing end_user_assertion'), and details the token format (HS256 compact JWS) and claims (sub/iat/exp). This clearly distinguishes it from generic secret tools like host.secret_set or host.key_rotate.

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

Usage Guidelines4/5

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

The description implies usage context by explaining the secret's uniqueness and the immediate invalidation of prior secrets, which suggests this is the tool to rotate the assertion secret. It does not explicitly name alternatives or say 'when not to use', but the context is clear enough for an agent to decide.

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

host.enduser.whoamiAInspect

The end user (if any) this call itself carries: {subject, issuer, method, verified_at} from the OAuth bearer's sub/iss or a verified end_user_assertion; null when the call carries no verified end-user identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and largely meets it: it discloses the identity source (OAuth bearer sub/iss or verified end_user_assertion), the output shape, and the null behavior. It stops short of explicitly stating there are no side effects or rate-limit/auth failure behaviors, but the passive 'carries' wording strongly implies a read-only query.

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

Conciseness5/5

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

A single dense sentence front-loads the core result ('the end user this call carries') and then packs the source, fields, and null case without wasted words.

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

Completeness5/5

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

For a zero-required-parameter introspection tool with no output schema, the description is complete: it explains what the agent will get back, the exact fields, the null case, and the one optional parameter is fully documented in the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents tenant_key, including the bearer-header precedence. The tool description itself adds no parameter semantics beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description identifies the tool's subject precisely: the verified end-user identity carried on the current call, with the exact fields it contains and a null fallback. It does not use an explicit action verb like 'return' or 'get,' but 'whoami' plus the description makes 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.

Usage Guidelines3/5

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 the end-user identity attached to the current call, and it notes the no-identity case. It does not explicitly distinguish this from sibling tools like host.whoami or host.agent.whoami, nor give exclusion criteria.

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

host.exportAInspect

Build a downloadable .tar.gz of everything this tenant owns: tool sources, state, secret NAMES (never values), run/thread history and usage, plus a manifest.json re-publishable via host.tool_publish. Runs as a background job (poll host.runs.get with the returned run_id) -- calling this again while one is already running returns that same run_id rather than starting a second one. The finished run's result carries a download_url valid 24 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsNoLocal names of the tools to include; every tool when omitted.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and covers key behaviors: background job execution, deduplication (returns same run_id if already running), 24-hour download validity, and the result structure. It does not discuss side effects like disk cleanup, but readability is high and important operational details are disclosed.

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

Conciseness4/5

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

The description is well-structured: the main purpose comes first, followed by operational details (background job, polling, deduplication, URL validity). It is longer than a single sentence but every sentence delivers necessary information without redundancy.

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

Completeness4/5

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

The description covers the tool's behavior, parameters, and how to retrieve results (poll runs.get). Since there is no output schema, it appropriately explains the run result's download_url and validity. It lacks details on manifest.json structure or error handling, but for a background export tool it is largely complete.

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

Parameters4/5

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

The input schema already provides 100% coverage for both parameters. The description adds value by explaining the default for tools ('every tool when omitted') and the condition for tenant_key (only needed when no auth header, header wins). This goes beyond the schema's descriptions, so a score above baseline.

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

Purpose5/5

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

The description clearly identifies the action (build a downloadable .tar.gz), the resource (everything this tenant owns), and enumerates contents (tool sources, state, secret names, history, usage, manifest.json). It distinguishes itself from siblings like host.tool_publish and host.runs.get by stating the export scope and re-publishability.

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

Usage Guidelines4/5

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

It gives clear context on when to use (when a full tenant export is needed) and how it behaves (background job, polling via host.runs.get). However, it does not explicitly state when not to use it or mention alternatives, but for a unique export tool 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.

host.group.addBInspect

Add a tenant (by namespace) to a group this tenant owns.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGroup name.
namespaceYesMember tenant's namespace.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It discloses the ownership precondition but says nothing about idempotency, duplicate membership handling, reversibility (a sibling host.group.remove exists), or failure modes.

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

Conciseness5/5

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

A single tight sentence with the key constraint front-loaded and no wasted words.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the one-liner plus strong parameter docs cover the basics, but behavioral details an agent would want (idempotency, duplicate handling, permissions) are absent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, namespace, and the tenant_key auth fallback. The description's '(by namespace)' adds clarifying intent but no syntax or meaning beyond what the schema provides, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb (add) and resource (tenant to group), plus clarifies the tenant is identified by namespace. It is distinguishable from siblings like host.group.create and host.group.remove, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

It conveys a prerequisite ('a group this tenant owns'), which implies when the call is valid, but there is no explicit guidance on when to use this versus host.group.create/remove or how membership interacts with those. Usage must be inferred.

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

host.group.createAInspect

Create a named group this tenant owns, for host.tool_share(visibility: "group").

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGroup name.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden for a mutation, yet it says nothing about name uniqueness/idempotency, what happens when a duplicate name is submitted, required auth, or what is returned. Only the tenant-ownership scope is disclosed, leaving the error and permission surface undocumented.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler; the creation act and its downstream purpose are both expressed without redundant restatement of the name or title.

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

Completeness3/5

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

For a 2-parameter mutation with no annotations and no output schema, the description covers the intent but omits what the caller receives back -- notably the group identifier needed to reference the group in host.tool_share. It is minimally adequate rather than complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both `name` and `tenant_key` are already documented with their usage conditions. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb+resource ("Create a named group") and scopes it to the calling tenant, which is genuinely useful. It does not, however, disambiguate itself from the close sibling host.group.add, which an agent could easily confuse with creation.

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

Usage Guidelines4/5

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

It states a concrete reason to call it -- producing a group consumable by host.tool_share(visibility: "group") -- which gives the agent a clear trigger. It stops short of naming when not to use it or pointing at host.group.list/remove as the lifecycle alternatives.

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

host.group.listBInspect

List the groups this tenant owns and their members.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden; it does add that members are returned alongside groups and that results are tenant-scoped, which is useful. It does not state read-only status explicitly, nor anything about ordering, pagination, or what happens when the tenant owns no groups.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the scope and return payload are both stated up front. It is arguably terse for a tool whose behavior beyond the schema is undocumented.

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

Completeness4/5

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

For a simple read-only list with one optional, fully documented parameter and no output schema, this covers what an agent needs to call it. The only shortfall is the absence of any usage framing relative to the many sibling group and host tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents tenant_key including the 'header wins' precedence rule. The description adds no additional meaning about the parameter, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (groups) scoped to 'this tenant', plus the returned payload (groups and their members). It is distinguishable by verb from siblings host.group.add/create/remove, though it never names them explicitly.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is provided. The read-only nature is only implied by 'List', and nothing tells the agent how this differs in practice from host.whoami or the group mutation siblings.

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

host.group.removeBInspect

Remove a tenant (by namespace) from a group this tenant owns.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGroup name.
namespaceYesMember tenant's namespace.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a destructive mutation but does not state whether removal is reversible, what happens to the removed member, what permissions are required, or any side effects; only the ownership precondition is hinted at.

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

Conciseness4/5

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

A single compact sentence with the scope qualifier front-loaded and no wasted words. It is appropriately sized, though its brevity contributes to the behavioral gaps noted elsewhere.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is too thin: it omits reversibility, permission requirements, error conditions (e.g., tenant not a member), and any confirmation semantics an agent would need before calling it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters including the tenant_key authorization nuance. The description adds only a light restatement ('by namespace'), which does not exceed the schema baseline.

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

Purpose4/5

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

States a specific verb ('Remove') and resource ('a tenant ... from a group'), with the qualifier 'this tenant owns' narrowing scope. An agent can distinguish it from host.group.add and host.group.create from the verb alone, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

The phrase 'a group this tenant owns' implies a precondition (ownership) that gates legitimate use, but there is no explicit when-to-use guidance and no alternative sibling (e.g., host.group.list or host.group.add) is referenced for the inverse operation.

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

host.key_rotateAInspect

Issue a new tenant key and invalidate the current one immediately: every other call using the old key fails as unauthenticated from this point on. Returns the new key exactly once -- use it (as tenant_key or Authorization) for every call after this one.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so well: it discloses the destructive/irreversible effect (old key fails as unauthenticated immediately), and the one-time-only visibility of the returned key. These are exactly the behavioral traits an agent must know before calling a credential-mutating tool.

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

Conciseness5/5

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

Two tight sentences with no filler; the rotation action and its destructive consequence are front-loaded, and the follow-up usage instruction comes second where it belongs. Every clause earns its place.

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

Completeness4/5

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

Given a single optional parameter, no annotations and no output schema, the description covers the return value ('returns the new key exactly once') and the auth contract, which is most of what an agent needs. It omits any authorization prerequisite for calling the rotation itself (e.g. what credential is required to rotate), a minor but real gap for a security-sensitive operation.

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

Parameters3/5

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

Schema coverage is 100% and the single tenant_key parameter is already fully documented, including the Authorization-header precedence rule. The description only adds that the new key works 'as tenant_key or Authorization', which is a marginal restatement rather than new syntactic or format meaning, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource (rotate/issue a new tenant key) and its immediate effect (invalidate the current one), so an agent can tell at a glance that this is a credential-rotation operation. No sibling tool in the list performs key rotation, so no disambiguation is needed.

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

Usage Guidelines4/5

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

Gives clear post-invocation guidance ('use it as tenant_key or Authorization for every call after this one') and states the consequence of not doing so. It never names an explicit when-to-rotate condition or when-not (e.g. key compromise vs. routine rotation), so it stops short of a full when/alternatives statement.

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

host.msg.ackAInspect

Mark messages as read for you; unread_only inbox reads stop returning them. Per-recipient -- a sender never sees others' receipts.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
message_idsYesmessage_ids to mark read for you.

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses meaningful behavior: the effect on unread_only inbox queries and that receipts are per-recipient and invisible to the sender. It does not state idempotency, whether marking nonexistent IDs errors, or auth beyond what the schema conveys.

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

Conciseness5/5

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

Three compact clauses, front-loaded with the core action, then the behavioral consequence, then the scoping rule. Every sentence earns its place with no padding.

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

Completeness3/5

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

For a two-parameter mutation tool with no annotations and no output schema, the description covers the essential semantics (effect and scoping) but omits return behavior, error cases, and idempotency. Adequate but with clear gaps given the lack of structured behavioral data.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds only the per-recipient framing ('for you'), which is consistent with but not richer than the schema's 'mark read for you.' Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

Clear verb+resource: 'Mark messages as read for you.' It states the effect on the inbox (unread_only reads stop returning them) and the per-recipient scoping. It doesn't explicitly distinguish from siblings like host.msg.inbox or host.msg.thread, but the read-receipt semantics make its domain unambiguous.

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

Usage Guidelines3/5

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

Usage is implied by the behavioral note that unread_only inbox reads stop returning marked messages, which tells the agent the consequence of calling it. However, there is no explicit when-to-use vs when-not-to-use guidance or named alternative (e.g., host.msg.inbox for reading).

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

host.msg.blockAInspect

Block an address: its future sends to you are refused agent_not_found, byte-identical to sending to a nonexistent address. You can still send to it. Block lists are never exposed to the blocked party.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe @handle or t_... namespace to block.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so well: it discloses that future sends are refused with agent_not_found, that this is byte-identical to a nonexistent address, that the caller can still send to the blocked party, and that block lists are never exposed. These are exactly the non-obvious side effects and information-disclosure traits an agent needs.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the core action and then the behavioral consequences. No filler; every clause conveys a distinct fact.

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

Completeness4/5

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

For a two-parameter mutation tool with no annotations and no output schema, the description is nearly complete on behavior. It does not state what the call returns, but the operational semantics are otherwise well covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters fully. The description implies the target is an address but adds no format or semantic detail beyond what the schema provides, making baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb (Block) and resource (an address), and its meaning is immediately distinguishable from the sibling host.msg.unblock. 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.

Usage Guidelines3/5

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

The context for blocking is implied by the description of its effects, but there is no explicit when-to-use guidance or routing against alternatives such as host.msg.unblock. Usage must be inferred.

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

host.msg.inboxAInspect

Every unread-or-read message across every thread you participate in, excluding your own sends, ordered oldest first; page with cursor from the previous response's next_cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoUp to 100; default 50.
cursorNoOpaque; omit for the first page.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
unread_onlyNoFilter to messages not yet acked.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that pagination is cursor-based (next_cursor) and that results exclude own sends, which is helpful. But it doesn't state whether this is a read-only operation, pagination stability, or rate limits.

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

Conciseness5/5

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

A single dense sentence front-loads the scope, ordering, and pagination instruction with zero waste. Every clause earns its place.

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

Completeness3/5

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

For a read/list tool with complete parameter schema but no annotations, the description covers scope and pagination. It omits whether the operation requires auth (tenant_key implies it), whether it's read-only, and what the return shape looks like.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds pagination semantics (use next_cursor from previous response), going beyond the schema's terse 'Opaque; omit for first page.'

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

Purpose5/5

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

States a specific verb+resource: retrieves messages across all threads the agent participates in, excluding own sends, ordered oldest first. The scope and ordering distinguish it from siblings like host.msg.thread (single thread) and host.msg.ack (mutating).

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

Usage Guidelines3/5

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

The description implies when the result is filtered (all threads, not own sends) but doesn't explicitly state when to use this versus host.msg.thread. Usage is inferrable from the scope but no alternates are named.

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

host.msg.replyAInspect

Reply in a thread you participate in; appends with the next seq. Blocked or contact-closed participants are skipped and listed in refused rather than failing the reply. thread_not_found (byte-identical for a nonexistent id) if you are not a participant.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMessage text; non-empty after trim.
dataNoOptional structured payload.
thread_idYesThe thread to reply in.
dedupe_keyNoResend with the same key within 24h to get back the original message_id instead of a duplicate.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
in_reply_toNoThe message_id this replies to.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well. It discloses append semantics ('next seq'), non-failing handling of blocked or contact-closed participants via a refused list, and the specific thread_not_found error behavior for non-participants.

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

Conciseness5/5

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

The description is compact and front-loaded: it states the core action first, then appends behavioral details and error semantics. Every sentence carries useful information with no filler.

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

Completeness4/5

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

For a mutating tool with no annotations and no output schema, the description covers participation requirements, append behavior, participant-skipping behavior, and key error semantics. It does not describe the successful return value or authorization details, but the schema covers parameters well and the description is largely complete for safe invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all six parameters. The description adds useful behavioral context but does not provide additional meaning for specific parameters beyond what the schema states; baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Reply in a thread you participate in.' It distinguishes the operation from starting a new thread by requiring participation and describes the append/sequence behavior, so an agent can tell it apart from siblings such as host.msg.send.

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

Usage Guidelines4/5

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

The description clearly gives the core usage condition: you must be a participant in the thread, otherwise thread_not_found is returned. It does not explicitly name an alternative tool such as host.msg.send for starting a new thread, so it lacks full when-to-use/when-not-to-use routing guidance.

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

host.msg.sendAInspect

Send a message to one or more agent-directory addresses, creating a new thread (or, with thread_id, adding to one you already participate in). Refused recipients (agent_not_found, contact_refused, recipient_inbox_full) are listed in refused rather than failing the whole call; from is always the authenticated tenant, never a caller argument.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes1 to recipients_per_msg_max addresses (@handle or t_... namespace).
bodyYesMessage text; non-empty after trim.
dataNoOptional structured payload.
urgentNoMark this send urgent (default false): allowed only to accepted contacts or open recipients (refused the same as any other send otherwise), under its own urgent_per_day quota per sender/recipient pair, and bypasses a muted recipient's unread_only inbox filter (never a block or a closed contact_policy).
thread_idNoAdd this send to an existing thread you participate in instead of starting a new one; to's addresses join as participants.
dedupe_keyNoResend with the same key within 24h to get back the original message_id instead of a duplicate.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses important behaviors: refused recipients are listed in refused rather than failing the call, and from is always the authenticated tenant. However, it omits response shape, permission requirements, and rate limits, making it good but not fully transparent.

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

Conciseness5/5

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

The description is two sentences, with the primary purpose and thread behavior front-loaded, followed by the partial-failure and sender-identity information. Every sentence adds value, with no redundant or filler content.

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

Completeness3/5

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

For a tool with 7 parameters, no annotations, and no output schema, the description covers core behavior but leaves gaps: it does not explain what the response contains (e.g., message_id), prerequisites for sending (e.g., contact acceptance), or any rate limits beyond the urgent note in the schema. It is adequate but not fully complete for an agent.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described, so the baseline is 3. The description adds minor context (e.g., thread_id's purpose, from always being the tenant) but does not significantly extend the parameter semantics beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific action ('Send a message to one or more agent-directory addresses') and explicitly distinguishes the thread behavior (new thread vs. adding to existing via thread_id). This separates it from siblings like host.msg.reply and host.msg.thread, making the tool's function unambiguous.

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

Usage Guidelines3/5

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

The description provides clear context for when to use the tool (sending messages, creating/joining threads) but does not explicitly name alternatives or state when not to use it. It implies usage through the thread_id mention, but there is no exclusion or comparison with host.msg.reply or other messaging tools.

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

host.msg.threadAInspect

Every message in one thread you participate in, ordered by seq; thread_not_found if you are not (or no longer) a participant.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoUp to 100; default 50.
cursorNoThe seq to resume after; omit for the start.
thread_idYesThe thread to read.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses ordering (by seq), the pagination model (cursor describing seq to resume after), and a named error condition (thread_not_found when not a participant). It does not state permissions or rate limits, but the key behavioral facts for a read are covered.

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

Conciseness5/5

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

Single compact sentence, front-loaded with the primary resource, followed by ordering and the failure condition. No wasted words.

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

Completeness4/5

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

For a read tool with no output schema, the description covers the essential behavior: what is returned, order, pagination mechanism, and one error. It could mention that results are limited per call or that participation is required to get data, but the coverage is quite complete.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter already has a description. The description adds only the ordering/pagination concept, which aligns with the cursor semantics. 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.

Purpose5/5

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

States a specific verb (read) and resource (every message in one thread), with clear scope: 'you participate in'. Easily distinguished from siblings like host.msg.inbox (all messages) and host.msg.reply.

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

Usage Guidelines2/5

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

No explicit when-to-use guidance or discussion of alternatives such as host.msg.inbox for browsing many threads or host.msg.ack for marking read. The participation constraint implies usage but doesn't say when to choose this over siblings.

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

host.msg.unblockCInspect

Remove a block.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe @handle or t_... namespace to unblock.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure for a mutation. It does not state whether the address must currently be blocked, what happens on a non-blocked address, whether the operation is reversible or idempotent, or what permissions/auth are required (the auth nuance is only in the schema's tenant_key field).

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

Conciseness3/5

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

Three words, front-loaded and waste-free, but it is under-specified rather than genuinely concise. There is no structural element such as scope, side effects, or return behavior to anchor the agent.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description should at least indicate effect and failure modes, but it does not. The schema covers parameters and the header-vs-tenant_key nuance, leaving the behavioral layer entirely undocumented.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both 'address' (the handle or t_... namespace) and 'tenant_key' (auth fallback with header precedence). The description adds nothing beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Remove') and resource ('a block'), which an agent can read as the inverse of the sibling host.msg.block. However, it does not explicitly differentiate itself from that sibling or clarify what kind of block is being removed (messaging block assumed from the host.msg.* namespace).

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

Usage Guidelines2/5

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

There is no guidance on when to unblock versus other recovery actions, no prerequisites, and no mention of the block counterpart it reverses. The agent must infer the use case entirely from the name.

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

host.msg.waitAInspect

Long-poll for a new message until one past cursor arrives or timeout_s elapses (max 25s), returning the same shape as host.msg.inbox either way -- for a client with no polling loop of its own. On timeout, messages is empty and next_cursor is unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque; omit to wait for the next message from now.
timeout_sNoMax seconds to wait, capped at 25; default 20.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
unread_onlyNoFilter to messages not yet acked.

TDQS

A4.2/5.0
Behavior4/5

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

With zero annotations, the description carries the full behavioral burden, and it delivers: it discloses the blocking long-poll nature, the 25s cap, the same-shape return either way, and the precise timeout end-state (empty messages, unchanged next_cursor). What's missing is any statement about side effects — notably whether waiting acks or otherwise mutates messages, which matters given sibling host.msg.ack exists.

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

Conciseness5/5

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

Two dense sentences with zero waste. The core behavior and timeout constraint are front-loaded; the return-shape equivalence and timeout end-state follow; the usage context closes it out. Every clause earns its place.

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

Completeness4/5

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

Given no output schema and no annotations, the description adequately covers behavior (blocking, timeout, end-state) and return shape by cross-reference to host.msg.inbox with named fields (messages, next_cursor). Minor gaps remain: it doesn't specify whether waiting affects ack state (relevant given unread_only and host.msg.ack), but nothing blocks an agent from invoking it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3 applies. The description adds modest context around cursor ('one past cursor arrives') and timeout_s ('elapses... max 25s'), but these details are largely restated in the schema. No significant new meaning is added beyond what the parameter descriptions already provide.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Long-poll for a new message until one past cursor arrives or timeout_s elapses.' It clearly distinguishes itself from sibling host.msg.inbox by framing this as the blocking/waiting variant, so an agent can tell them apart without opening either schema.

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

Usage Guidelines4/5

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

The phrase 'for a client with no polling loop of its own' gives clear context for when to choose this tool, and referencing host.msg.inbox implicitly identifies the alternative. However, it never explicitly says 'use host.msg.inbox instead if you poll periodically' — the exclusion is implied, not stated.

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

host.oauth.issuer_removeAInspect

Remove one of this tenant's registered OAuth issuers; bearer JWTs from it stop authenticating immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuerYesThe issuer to remove.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of disclosing side effects. It explicitly states the immediate consequence – bearer JWTs from the removed issuer stop authenticating – which is the critical behavioral trait for a destructive config change. It doesn't mention reversibility or permission requirements, but the most important runtime impact is disclosed.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and follows with the key consequence. It contains no filler, repetitive wording, or redundant schema echoes.

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

Completeness4/5

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

For a two-parameter mutating tool with no output schema and no annotations, the description covers the action, scope, and immediate side effect, which is sufficient for basic invocation. It doesn't address error cases or idempotency, but those are secondary given the schema already covers the parameters.

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

Parameters3/5

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

The input schema already documents both parameters with 100% coverage, so the baseline is 3. The description adds no parameter-specific meaning beyond the schema – it only refers to the issuer generically and doesn't elaborate on `tenant_key` or value formats.

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

Purpose5/5

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

The description states a specific verb ('Remove') and resource ('OAuth issuers'), and clarifies scope ('this tenant's registered'). The consequence clause ('bearer JWTs from it stop authenticating immediately') further distinguishes it from listing or setting issuers, so an agent can tell it apart from siblings host.oauth.issuers and host.oauth.issuer_set.

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

Usage Guidelines4/5

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

The description provides clear context that this tool targets an already-registered tenant issuer, implying it should be used for revocation rather than registration or listing. It doesn't explicitly name sibling alternatives or exclusion conditions, but the verb and resource make the use case unambiguous.

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

host.oauth.issuersAInspect

List this tenant's registered OAuth issuers with their audience, jwks_url, and JWKS fetch age.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It clearly indicates a read-only listing operation and specifies the returned data fields, including the useful detail that JWKS fetch age is included. While it does not discuss authentication or side effects, 'List' and the field list are sufficient for this non-destructive tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every element adds value: the operation, the scope, and the exact returned fields.

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

Completeness4/5

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

For a simple one-optional-parameter list tool with no output schema, the description provides enough information about what will be returned and the tenant scope. It does not detail response formatting or pagination, but those are minor omissions given the simplicity of the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents tenant_key, including when it is required and how it interacts with the Authorization header. The description adds no parameter-level detail beyond the schema, matching the baseline for high schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('List') with a clear resource ('this tenant's registered OAuth issuers') and names the key returned fields. This clearly distinguishes it from the sibling tools host.oauth.issuer_set and host.oauth.issuer_remove, which are mutation operations.

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

Usage Guidelines3/5

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

The listing verb and tenant scope imply this is the read-oriented counterpart to issuer_set/issuer_remove, but the description does not explicitly state when to use this tool instead of those alternatives. There is no direct when/when-not guidance, so usage is mostly inferred from the resource name and siblings.

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

host.oauth.issuer_setAInspect

Register (or update) an OAuth issuer for this tenant: bearer JWTs with iss equal to issuer, a matching aud, verified against jwks_url, authenticate as this tenant. Up to 3 issuers per tenant; an issuer already registered by another tenant is refused issuer_already_registered.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuerYesThe JWT `iss` claim value to match, e.g. https://issuer.example.com.
audienceYesThe JWT `aud` claim value to require.
jwks_urlYesURL this host fetches the issuer's JWKS from.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral disclosure burden and does so thoroughly. It explains the authentication behavior (bearer JWTs with iss equal, matching aud, verified against jwks_url), implies idempotent register-or-update semantics, states the per-tenant limit, and names a precise error condition (issuer_already_registered).

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

Conciseness5/5

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

Two dense, front-loaded sentences: the first states the action and core verification logic, the second adds constraints and an error condition. Every clause earns its place with no redundancy or boilerplate.

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

Completeness4/5

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

For a 4-parameter mutating tool with no output schema and no annotations, the description covers the operation's purpose, authentication pipeline, limits, and likely failure mode. The optional tenant_key parameter is fully documented in the schema. It is slightly thin on what the response returns and what exactly 'update' changes, but nothing essential to invoking the tool correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so each parameter is already documented individually. The description adds value by tying the parameters together into the verification flow (iss matches the issuer, audience must match, jwks_url is used for verification) and by explaining uniqueness behavior. It does not add tenant_key semantics, but the schema already covers those fully.

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

Purpose5/5

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

The description opens with 'Register (or update) an OAuth issuer for this tenant' – a specific verb and resource – and then details the exact JWT verification semantics (iss, aud, jwks_url). This is clearly distinct from sibling tools host.oauth.issuers (list) and host.oauth.issuer_remove (delete), so an agent can differentiate them without opening schemas.

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

Usage Guidelines4/5

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

The description clearly frames the use case: register or update an OAuth issuer for tenant authentication, with constraints (max 3 per tenant, uniqueness conflict) that inform decision-making. However, it does not explicitly reference sibling alternatives or state when not to use this tool, so it stops short of full routing guidance.

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

host.progressAInspect

Report (or merge in) counters and/or pct/msg on a run, by id. Each named counter (items_processed, items_total, bytes_out, custom.) is monotonic on its own -- a lower value than what's already stored fails validation with nothing written. Read back via host.runs.get/wait/list's counters field.

ParametersJSON Schema
NameRequiredDescriptionDefault
msgNoA free-text progress message.
pctNo0-100 percent complete, free text.
run_idYesThe run id to report progress on.
countersNoitems_processed?, items_total?, bytes_out?, custom?: {k: number} -- each key monotonic.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses a critical behavioral trait: counters are monotonic and a lower value fails validation with nothing written. It also mentions the tenant_key/Authorization header precedence, which is useful behavioral context. It does not describe the return value or error format, but the core behavioral risks are covered.

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

Conciseness5/5

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

The description is compact and front-loaded: it states the action and resource in the first sentence, then adds the critical monotonic constraint, then points to read-back tools. Every sentence earns its place with no redundancy.

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

Completeness4/5

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

For a tool with 5 parameters, no output schema, and no annotations, the description covers the essential behavioral constraints (monotonic counters, validation failure, tenant_key precedence) and points to sibling tools for reading back. It could mention what the response looks like or whether partial updates are atomic, but the description is largely complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds meaning by explaining the monotonic semantics of counters and the merge behavior, which goes beyond the schema's per-key descriptions. However, it does not elaborate on pct/msg semantics beyond what the schema states, so the added value is moderate.

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

Purpose5/5

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

The description states a specific verb ('Report (or merge in)') and resource ('counters and/or pct/msg on a run, by id'), and distinguishes itself from sibling read tools by explicitly pointing to host.runs.get/wait/list for reading back. It is clear what the tool does and how it differs from related tools.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool (reporting progress on a run) and mentions the monotonic counter constraint that affects usage. It does not explicitly state when not to use it or name alternatives beyond the read-back reference, but the context is sufficient 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.

host.quickstartAInspect

Return the shortest ordered sequence of calls to a working tool of kind, with your namespace and a filled-in example already substituted in, plus the current limits and a try_before_call table naming the one dry-run tool for each case. Read-only. Call this before host.tool_publish if you're not sure what a spec should look like. Unauthenticated callers get the signup step first.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich registered kind to return a worked example for, e.g. echo, http, python.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden and does reasonably well: it declares "Read-only," discloses that unauthenticated callers get the signup step prepended, and describes the returned artifacts (sequence, limits, try_before_call table). It does not discuss rate limits, caching, or whether the example is executable, leaving some behavioral surface uncovered.

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

Conciseness4/5

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

Three sentences, front-loaded with the return contents and zero filler. The first sentence is a heavy noun phrase, but every clause (read-only, when to call, auth behavior) earns its place.

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

Completeness5/5

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

With no output schema and a simple two-parameter schema, the description fully covers what the tool returns (sequence, limits, try_before_call table), when to use it, and the auth flow. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both `kind` and `tenant_key` are already documented in the schema, including the header-wins-if-both-present rule. The description adds only indirect context (the unauthenticated→signup flow) and does not expand on valid `kind` values or tenant_key sourcing, so it remains at the baseline.

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

Purpose5/5

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

The description gives a specific verb and a concrete resource: it returns the shortest ordered sequence of calls to a working tool of the requested `kind`, plus limits and a try_before_call table, with the caller's namespace substituted in. An agent can tell this apart from the sibling `host.tool_publish` (which it references) and from `signup` without opening any schema.

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

Usage Guidelines4/5

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

It explicitly states when to call it: "Call this before host.tool_publish if you're not sure what a spec should look like," and gives the auth precondition that unauthenticated callers hit the signup step first. It doesn't cover other scenarios (e.g., looking up limits independently), so it's clear context rather than a full when/when-not decision tree.

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

host.redeemAInspect

Exchange a signup(handoff: true) handoff_token for the tenant key it was issued for. Single-use: a second redemption fails with handoff_token_redeemed; past its expiry it fails with handoff_token_expired. Unauthenticated -- the token itself is the proof.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
handoff_tokenYesThe handoff_token signup(handoff: true) returned.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses single-use semantics, the specific error codes handoff_token_redeemed and handoff_token_expired, and that the call is unauthenticated because the token itself is the proof. It stops short of describing the exact response shape or any rate limits.

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

Conciseness5/5

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

Three tight sentences: the core exchange is front-loaded, followed by failure modes, then the auth model. Every sentence carries new information with no filler.

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

Completeness4/5

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

For a two-parameter tool with no output schema, the description covers the operation, its preconditions, its failure modes, and the authentication model, and it names the returned value (tenant key). Only the concrete return shape is left unspecified, which is minor here.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself documents both parameters, including the subtle rule that tenant_key is only needed without an Authorization header and that the header wins. The description adds no parameter detail beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (exchange) plus the exact inputs and output: a signup(handoff: true) handoff_token for the tenant key it was issued for. It also names the sibling that produces the token, so an agent can place it in the flow without opening any schema.

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

Usage Guidelines4/5

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

The description frames the call as the redemption step following signup(handoff: true) and gives the failure conditions (single-use, expiry). It does not explicitly state when not to use it or name an alternative redemption path, but the flow context is clear.

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

host.registry_publishAInspect

Publish this tenant's server.json to the configured MCP registry (requires --registry-url and admin.tenant_verify_namespace first).

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal a key prerequisite and the tenant-scoped nature of the operation. However, it does not disclose whether publishing overwrites existing registry data, what permissions are required beyond the named verification, or what success/failure looks like.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and resource, then appends the prerequisites in a parenthetical. It contains no wasted words and is easy to parse.

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

Completeness3/5

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

For a state-changing tool with no output schema and no annotations, the description is somewhat thin. It names necessary prerequisites, but it does not explain return values, failure modes, idempotency, or what the registry publish operation changes. This is a clear gap even though the parameter count is low.

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

Parameters3/5

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

Schema coverage for tenant_key is 100%, so the schema already explains the parameter thoroughly, including the Authorization header precedence. The description adds no extra parameter-level meaning, which is acceptable under the baseline for full coverage.

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

Purpose5/5

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

The description uses a specific verb ('Publish') and a clear resource ('this tenant's server.json' to the configured MCP registry). It is unambiguous and distinguishable from siblings like host.tool_publish, which targets a different publishing concept.

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

Usage Guidelines4/5

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

The description gives explicit prerequisites: --registry-url must be configured and admin.tenant_verify_namespace must be run first. This gives an agent actionable preconditions, though it does not explicitly contrast with sibling tools or state when not 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.

host.runs.cancelAInspect

Stop a queued or running job: its sandbox process is killed within ~2s and the run reads cancelled. A run that already finished fails with run_not_cancellable.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run id to cancel.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the sandbox process is killed within ~2s, the run transitions to cancelled, and the exact failure mode for finished runs. It omits auth/permission requirements and whether the operation is idempotent, but the safety-relevant behavior is well covered.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the action and immediately followed by timing and error semantics. No wasted words.

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

Completeness4/5

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

For a two-parameter mutation tool with no annotations or output schema, the description covers the essential behavior, timing, and failure case. Only auth/permission expectations are left unaddressed.

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

Parameters3/5

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

Schema coverage is 100%, so both run_id and tenant_key are already fully documented in the schema. The description adds no parameter-level detail beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb (Stop/cancel) and resource (queued or running job) with precise scope. It clearly distinguishes itself from sibling run tools like host.runs.get, host.runs.wait, and host.runs.purge by naming the run states it acts on.

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

Usage Guidelines4/5

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

Specifies the conditions under which it works (queued or running) and when it fails (already-finished run returns run_not_cancellable). It doesn't explicitly name alternative siblings such as runs.purge or runs.wait, so it stops short of full routing guidance.

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

host.runs.getAInspect

Read one run's status, progress and (once done) result by id -- the same run a host.tool_call(..., async=true) or a scheduled/triggered execution created.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run id to read.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the result is only available 'once done' (i.e., non-blocking polling semantics) and that it returns progress, but says nothing about auth requirements beyond the schema, whether polling is rate-limited, or how it differs behaviorally from host.runs.wait.

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

Conciseness4/5

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

A single sentence with the core action and resource front-loaded; the em-dash aside about run origin earns its place as disambiguation. Slightly dense but no filler sentences.

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

Completeness3/5

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

There is no output schema and no annotations, so the description must cover return semantics; it names status, progress, and result but gives no shape for the status values or progress representation. For a simple two-parameter read tool this is adequate but leaves the agent guessing at the payload structure.

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

Parameters3/5

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

Schema coverage is 100% and both parameters (run_id, tenant_key) are documented there, so the schema does the heavy lifting. The description only adds the phrase 'by id', which does not extend 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.

Purpose5/5

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

States a specific verb (Read) and resource (one run) and enumerates what is retrieved: status, progress, and result once done. It also ties the resource to its origin (host.tool_call async, scheduled/triggered execution), which cleanly separates it from host.runs.list, host.runs.cancel, and host.runs.purge.

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

Usage Guidelines3/5

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

The description implies usage by explaining where a run id comes from (an async host.tool_call or a scheduled/triggered execution), which tells the agent when it will have an id to query. However, it never names alternatives such as host.runs.wait (blocking) or host.runs.list (enumerate runs), leaving the choice between polling and waiting to inference.

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

host.runs.listAInspect

List this tenant's recent runs, newest first, optionally filtered by tool, status (queued|running|done|error|timeout|cancelled) or trigger (call|job|schedule|event|chain).

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNoOnly runs of this tool name.
limitNoMax runs to return; default 20.
statusNoOnly runs in this status.
triggerNoOnly runs of this trigger kind.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses ordering ('newest first'), tenant scoping, and available filters, but says nothing about the tenant_key auth requirement, pagination/limit ceilings, or what a returned run includes. Some behavioral value added, but the safety/auth profile is undocumented.

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

Conciseness5/5

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

A single front-loaded sentence; the verb+resource+scope lead, and the parenthetical enum lists earn their space by documenting otherwise-absent value sets. No wasted words.

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

Completeness4/5

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

This is a read-only list tool with no output schema, and the description covers scope, ordering, and filters, which is most of what an agent needs to call it correctly. Minor gaps remain around pagination and return shape.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by enumerating the accepted status values (queued|running|done|error|timeout|cancelled) and trigger values (call|job|schedule|event|chain), which the schema leaves as bare strings with no enums.

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

Purpose5/5

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

States a specific verb and resource ('List this tenant's recent runs') with scope ('this tenant's'), ordering ('newest first'), and the filterable axes. It is immediately distinguishable from host.runs.get, host.runs.cancel, host.runs.purge, and host.runs.wait.

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

Usage Guidelines3/5

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

Usage is implied by the description — an agent infers 'use this to enumerate runs' — but there is no explicit when-to-use, when-not, or routing to siblings like host.runs.get for a single run. Adequate but with a clear gap.

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

host.runs.partAInspect

Read part n of a run's result (host.runs.get/wait inline only part 0). A run whose whole result fit inline reads back parts: 1, n: 0 with the full result. n past the last part fails with not_found.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoThe 0-based part index; default 0.
run_idYesThe run id to read a part of.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the read-only nature, the 0-based part behavior, the single-part case when the result fit inline, and the not_found failure for overrun n. It does not discuss authorization prerequisites or output format, but the key behaviors are surfaced.

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

Conciseness4/5

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

Three sentences with no filler, and the purpose is front-loaded. The phrase 'reads back parts: 1, n: 0' is compressed to the point of mild ambiguity and could be punctuated more clearly, but the overall description is appropriately sized.

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

Completeness4/5

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

Given the simple parameter set and the absence of an output schema, the description adequately covers how parts behave and what happens on overrun. It does not explain how an agent would learn the total part count or what exactly a part contains beyond the n:0 case, but those are reasonably discoverable from the not_found behavior and the tool name.

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

Parameters3/5

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

The schema already describes all three parameters (100% coverage), so the baseline is 3. The description adds useful n-boundary semantics: 'n past the last part fails with not_found' and n:0 returns the full result when the result fit inline. This is helpful but not a major expansion over what the schema already documents.

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

Purpose5/5

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

The opening sentence names a specific operation ('Read part n') and resource ('a run's result'), and immediately contrasts with host.runs.get/wait. The not_found boundary and the n:0-holds-full-result rule reinforce the semantics. Minor grammar awkwardness in the second sentence does not obscure 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.

Usage Guidelines4/5

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

It explicitly notes that host.runs.get/wait inline only part 0, which tells an agent when this tool is needed: to read parts beyond the inline part. It also gives the failure condition for out-of-range n. It does not spell out an explicit if-then routing rule, but the context is clear enough.

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

host.runs.purgeAInspect

Delete the stored results of every done run finished at or before before_unix; each then reads done with result: null, purged: true. Frees state_bytes_max quota the results were counted against.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
before_unixYesPurge results of runs finished at or before this unix timestamp.

TDQS

A3.9/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden and does reasonably well: it discloses exactly what is destroyed (results of done runs), the resulting post-state (each reads done with result: null, purged: true), and the side effect on quota. It omits irreversibility and permission/tenant requirements, but the mutation semantics are clearly conveyed.

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

Conciseness4/5

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

A single dense sentence that front-loads the destructive action and then the state change and quota effect. No padding, though it is long and would read better split, but every clause carries information.

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

Completeness4/5

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

For a mutation tool with no output schema and no annotations, the description covers the key behaviors an agent needs: what is deleted, the resulting run state, and the quota benefit. It lacks any note on reversibility or required permissions, which is the main remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description restates before_unix's cutoff semantics without adding syntax or edge-case detail, and never touches tenant_key, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (delete/purge) applied to a precise resource (stored results of done runs) with an explicit scope (finished at or before before_unix). The 'done run' qualifier distinguishes it from siblings like host.runs.cancel (running runs) and host.runs.get/list, so an agent can select it without opening schemas.

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

Usage Guidelines3/5

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

The description explains the motivation ('Frees state_bytes_max quota') which implies when the tool is useful, but never states explicit when-to-use conditions or contrasts with alternatives such as host.runs.cancel or host.state.delete. Usage is inferable but not spelled out.

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

host.runs.waitAInspect

Long-poll one run until it finalizes, until: {counter, gte} is reached, or timeout_s elapses (max 25s), returning its current status either way -- for a client with no polling loop of its own.

ParametersJSON Schema
NameRequiredDescriptionDefault
untilNo{counter: <name>, gte: <n>} -- return as soon as that counter reaches n, even while the run is still running.
run_idYesThe run id to wait on.
timeout_sNoMax seconds to wait, capped at 25; default 20.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the call blocks via long-polling, returns early when a counter threshold is reached, returns after a timeout, and returns the current status regardless. This is solid behavioral transparency for a wait operation, though it does not mention auth, rate limits, or error behavior.

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

Conciseness5/5

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

The description is a single dense sentence with every clause earning its place. It front-loads the core behavior ('Long-poll one run until it finalizes') and then packs the termination conditions and intended audience without waste.

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

Completeness4/5

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

For a tool with a rich schema covering all parameters, the description adequately explains the wait semantics, timeout cap, and return behavior. It could be more complete by describing what 'finalizes' means or what the returned status looks like, but those are minor gaps given the schema already specifies the inputs.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds useful context about the max 25s timeout and the early-return counter condition, but it does not substantially enrich parameter meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Long-poll'), a specific resource ('one run'), and precise termination conditions. It clearly distinguishes this from sibling run tools like host.runs.get or host.runs.list by emphasizing the blocking, wait-until-finalized behavior.

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

Usage Guidelines4/5

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

The phrase 'for a client with no polling loop of its own' gives clear context on when this tool is appropriate, implying that clients with their own polling should use a different read-style tool. It stops short of explicitly naming an alternative tool or stating when-not-to-use, but the context is strong.

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

host.secret_listAInspect

List this tenant's secret names (never their values).

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does add a meaningful guarantee ('never their values') and scopes results to the tenant, which is useful. However, it does not disclose other behaviors such as pagination, ordering, empty results, or authentication failure behavior, leaving some gaps for a no-annotation tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word earns its place: it states the action, the scope, the resource, and the critical behavior (names only, never values).

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

Completeness5/5

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

For a simple one-optional-parameter read-only listing tool, the description plus fully covered schema is sufficient. The agent knows what the tool returns (secret names), the tenant scoping, and the one authentication nuance. No output schema exists, but the description's 'secret names' makes the return intent clear.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains tenant_key's conditional nature and precedence with the Authorization header. The tool description adds little beyond the word 'tenant's,' which slightly reinforces the parameter's scope but does not materially expand on the schema.

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

Purpose5/5

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

The description uses a specific verb ('List'), names the resource ('secret names'), and scopes it ('this tenant's'). It also clarifies a key boundary ('never their values'), making it easy to distinguish from value-returning or value-setting operations and from sibling tools like host.secret_set.

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

Usage Guidelines3/5

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

The description implies when to use the tool by stating it lists secret names rather than setting or retrieving values, but it does not explicitly mention alternatives or exclusion criteria. The parameter schema adds an auth-header condition, but the tool description itself offers no direct 'use this instead of that' guidance.

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

host.secret_setCInspect

Store an encrypted secret value under this tenant's namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSecret name, referenced from a spec as secret.<name>.
valueYesThe secret value; stored AES-256-GCM encrypted, never returned.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. "Encrypted" and the tenant scoping are useful context (though partially restated in the schema), but key behaviors are absent: whether setting an existing name overwrites, idempotency, required permissions, and failure modes.

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

Conciseness4/5

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

A single efficient sentence with the critical constraint (tenant namespace scoping) front-loaded and no filler. It is appropriately sized, though it is brief enough that it arguably trades away needed context.

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

Completeness2/5

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

A mutation tool with no annotations and no output schema should at least say what happens on overwrite and what is returned. The schema covers parameters well, but the behavioral profile of a secret-write operation is essentially undocumented.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters including the secret.<name> reference syntax, the AES-256-GCM storage, and the tenant_key/Bearer-header precedence rule. The description adds no parameter meaning beyond what the schema supplies, so the baseline 3 applies.

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

Purpose4/5

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

Specific verb ("Store") plus resource ("encrypted secret value") and an explicit scope ("under this tenant's namespace"). It is clearly a write counterpart to the sibling host.secret_list, though it does not name or contrast with that sibling directly.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives, no prerequisites, and no mention that host.secret_list is the read-side counterpart. Usage must be inferred entirely from the name and the sibling list.

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

host.self_offboardAInspect

Permanently close your own account: disables the tenant, cancels any active Stripe subscription (pro plan), and stops your key from authenticating anything further -- same as an admin-disabled tenant. Idempotent: an already-offboarded key gets the same tenant_disabled/tenant_key_invalid error every other host./ billing. call already gets from it, not a crash. This does not scrub historical usage/signup records -- those stay for audit, same as today's admin-disabled tenants.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so well. It discloses the permanent/destructive nature, the side effects (tenant disabled, Stripe subscription canceled, key invalidated), idempotency behavior, and what is NOT affected (historical usage/signup records remain for audit). This is exactly the kind of context an agent needs before invoking a destructive self-service operation. It could add a note about whether the action is reversible, but the word 'permanently' and the comparison to admin-disabled tenants strongly imply irreversibility.

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

Conciseness5/5

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

The description is dense but well-organized: it front-loads the core action and effects, then covers idempotency and audit retention. Every sentence earns its place, and there is no filler or repetition of schema content. The structure makes it easy for an agent to parse the critical facts quickly.

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

Completeness4/5

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

For a destructive, irreversible self-service action with no annotations and no output schema, the description is remarkably complete. It covers the action, side effects, idempotency, and what is preserved. The only minor gap is that it doesn't describe the success response shape or whether the caller should expect a confirmation object, but since there is no output schema and the error behavior is described, this is a small omission. Overall, an agent has enough to invoke this tool correctly and understand the consequences.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents the single parameter (tenant_key) and its optionality. The description adds meaningful context by explaining when the parameter is required (when no Authorization header is present) and the precedence rule (header wins). This goes beyond the schema's description and helps the agent decide whether to pass the parameter. A 4 is appropriate because the description adds value, though the schema already covers the basics.

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

Purpose5/5

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

The description states a specific verb ('close'), the resource ('your own account'), and enumerates the concrete effects: disables the tenant, cancels the Stripe subscription, and stops key authentication. It also explicitly distinguishes this from admin-disabled tenants by noting it is the same behavior, and the idempotency note clarifies what happens on repeat calls. This is unambiguous and clearly differentiated from siblings like host.key_rotate or billing.status.

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

Usage Guidelines4/5

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

The description clearly implies when to use it: when a user wants to permanently close their own account, and it contrasts with admin-disabled tenants. It does not explicitly name alternative tools or say 'use X instead', but the context is strong enough that an agent can infer this is the self-service offboarding tool. The idempotency note also guides behavior on repeated calls. A small gap: it doesn't explicitly state when NOT to use it (e.g., if the user only wants to cancel billing without closing the account).

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

host.share.caller_limitAInspect

Cap how many successful calls a caller tenant may make per UTC day into one of this tenant's shared tools. The tool must already be shared. Exceeding the cap fails the call with quota_caller (never runs it); this tenant's own calls to the tool are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesLocal name of the shared tool.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
caller_tenantYesThe caller's namespace to cap.
calls_per_dayYesMax successful calls per UTC day for this caller.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and handles it well: it discloses the quota error code (quota_caller), that the call 'never runs,' and that this tenant's own calls are unaffected. These are exactly the behavioral facts an agent needs beyond the raw schema.

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

Conciseness5/5

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

Three compact sentences with no filler: the core behavior is front-loaded, followed by the precondition and the key side-effects. Every sentence earns its place.

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

Completeness5/5

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

For a simple configuration tool, the description covers what it does, when it can be used, what happens on violation, and what it does not affect. It does not describe the success return shape, but no output schema exists and the invocation behavior is otherwise fully specified.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline applies. The description reinforces that calls_per_day counts 'successful calls' per UTC day and ties the tool parameter to the sharing precondition, but it does not add detailed parameter-level semantics beyond the schema, which is acceptable.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Cap how many successful calls a caller tenant may make per UTC day into one of this tenant's shared tools.' This unambiguously defines the operation and distinguishes it from the sibling caller_limit_remove without conflating it with general sharing tools.

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

Usage Guidelines4/5

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

It provides a clear precondition: 'The tool must already be shared,' so an agent knows this is a post-sharing step and should route to host.tool_share first if that precondition fails. It does not explicitly enumerate alternatives or when-not-to-use cases, but the constraint is specific enough to guide invocation.

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

host.share.caller_limit_removeAInspect

Remove a caller_limit set by host.share.caller_limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesLocal name of the shared tool.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
caller_tenantYesThe caller's namespace whose limit to remove.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden; it clearly states that the tool removes a previously set caller_limit, so the core action is transparent. However, it does not disclose side effects, idempotency, auth requirements, or what happens when no caller_limit exists.

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

Conciseness5/5

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

The entire description is one short sentence that names the action and resource in the opening words. There is no filler or repetition of schema details.

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

Completeness3/5

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

For a simple delete-like tool with a fully documented parameter schema, the description is mostly sufficient. Gaps remain because there are no annotations and no output schema, and the description gives no guidance on prerequisites or consequences of removing the limit.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the input schema. The description adds no additional meaning about how tool, caller_tenant, or tenant_key interact, but it does not need to compensate for missing schema info.

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

Purpose5/5

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

The description uses a specific action ('Remove') and a specific resource ('a caller_limit') and anchors it to the counterpart tool ('set by host.share.caller_limit'), which distinguishes it from the sibling setter. Even without a title, an agent can tell exactly what this tool does.

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

Usage Guidelines3/5

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

The description implies this is the inverse of host.share.caller_limit, but it never explicitly says when to use this tool over any alternative or mentions conditions such as needing a tenant_key when no Authorization header is present. Usage context is left to inference.

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

host.state.deleteBInspect

Delete one key from this tenant's key-value state namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey to delete from this tenant's key-value state namespace.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. While 'Delete one key' clearly expresses the mutation, it does not state whether deletion is permanent, what permissions or auth context are required, whether the operation is idempotent, or what response can be expected.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes meaning: 'delete,' 'one key,' 'tenant,' and 'key-value state namespace' all clarify purpose and scope.

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

Completeness4/5

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

This is a simple tool with one required parameter and full schema documentation, so the description plus schema provide enough for a basic invocation. It is not perfect because the lack of annotations and output schema means the description does not convey response behavior, error semantics, or irreversibility, but the core call is adequately specified.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, including key, end_user, and tenant_key. The description adds no parameter-level detail beyond restating the namespace scope, 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.

Purpose5/5

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

The description uses a specific verb and resource: 'Delete one key' in the host's key-value state namespace. It clearly distinguishes this from sibling host.state.delete_rows by emphasizing single-key scope, and the tenant-scoped wording adds useful precision.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as host.state.delete_rows, host.state.set, or host.state.query. The single-key qualifier implies a contrast with delete_rows, but no explicit usage conditions, exclusions, or alternative recommendations are provided.

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

host.state.delete_rowsAInspect

Delete rows from a declared table matching an optional where filter (same grammar as host.state.query); omitting where deletes every row in the table.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesName of the declared table to delete rows from.
whereNoOptional filter, same grammar as host.state.query; omit to delete every row.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and explicitly warns that omitting where deletes every row in the table, which is critical destructive behavior. It does not mention irreversibility or permissions, but the core risk is well disclosed.

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

Conciseness5/5

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

A single sentence conveys the action, scope, filter behavior, and the critical consequence of omitting the filter. There is no wasted text, and the most important warning is front-loaded.

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

Completeness4/5

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

For a destructive row-deletion operation, the description covers the essential behavior and the optional filter semantics. With no output schema needed and full parameter schema coverage, the remaining gaps such as permissions or return values are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds a useful reference to host.state.query's grammar and repeats the all-rows deletion warning, but it does not provide substantial extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation as deleting rows from a declared table and specifies the optional where filter. It is distinct from host.state.delete and other sibling tools, though it does not explicitly name a sibling for differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: delete rows from a declared table, optionally filtered. It mentions that host.state.query provides the filter grammar, but it does not explicitly say when to prefer this tool over host.state.delete or other alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.state.getAInspect

Read one key from this tenant's key-value state namespace. Returns found: false (not an error) if the key was never set.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey to read from this tenant's key-value state namespace.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It meaningfully states that a missing key returns found:false rather than an error, which is useful non-obvious behavior. For a simple read operation, this is adequate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The primary action is front-loaded, and the important not-found behavior is included without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-key read tool, the description covers the key behavior and the not-found case. There is no output schema, but the description gives the most important return-semantic detail. Additional auth-related context is already handled in the parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented in the input schema. The description adds minimal extra meaning beyond restating the key-value namespace context, which meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Read'), the resource ('one key'), and the scope ('this tenant's key-value state namespace'). It distinguishes this tool from sibling state tools like list or query by emphasizing single-key access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when reading a single key from the state namespace. However, it does not explicitly mention alternatives like host.state.list or host.state.query, nor does it state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.state.insertAInspect

Insert one row (an object) or several (an array of objects) into a declared table. Each row is validated against the table's schema first -- a type mismatch fails the whole call with state_schema_violation and writes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYesOne row (an object) or several (an array of objects), each validated against the table's schema.
tableYesName of the declared table to insert into.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the safety burden and does well: it reveals that rows are validated before any write and that any type mismatch fails the whole call with state_schema_violation, writing nothing. It doesn't cover authentication or the success response, but the disclosed failure behavior is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences; the first states the action and accepted shapes, the second the critical validation/atomicity caveat. No filler or redundant schema repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation with no annotations and no output schema, the description supplies the most decision-relevant behavioral facts: schema validation, all-or-nothing failure, and the error code, while optional auth params are already covered by schema descriptions. A success-return note would be nice but isn't essential for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all four parameters at 100% coverage; the description mainly restates that rows may be an object or array and that validation is against the table schema. It adds no new per-parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description leads with a specific verb ('Insert') and resource ('declared table'), and it covers both single-object and array inputs. This makes it immediately distinguishable from sibling state tools like host.state.get, host.state.delete, host.state.query, and host.state.set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames the call as inserting new rows into an already declared table, so an agent knows a table must exist first. It doesn't name alternatives or when-not-to-use cases, but for an insert primitive this context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.state.listAInspect

List keys (with their current values) in this tenant's key-value state namespace, optionally filtered by prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax keys to return; default 100.
prefixNoOnly list keys starting with this prefix; default: all keys.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the operation lists keys with their current values within the tenant namespace and supports prefix filtering. However, it does not explicitly state that it is read-only, does not mention authentication requirements (beyond schema notes), or describe any potential side effects. The read-only nature is implied by 'list' but not explicitly disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the primary action and includes the optional filter. It contains no redundant or filler text, earning full marks for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with fully documented parameters, the description covers the core behavior. It does not mention return format details beyond stating keys and values, which is sufficient. Given no output schema, the description is adequate for an agent to understand the operation's purpose and scope, though it could mention pagination or edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed descriptions for limit, prefix, end_user, and tenant_key. The tool description itself adds no parameter-specific information beyond what the schema already provides, so it meets the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), the resource (keys in the tenant's key-value state namespace), and an optional filter (by prefix). It is specific and unambiguous, distinguishing it from siblings like host.state.get (single key fetch) or host.state.query (search) without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention any exclusion conditions, prerequisites, or alternative tools. The parameter descriptions in the schema give some context (e.g., tenant_key required without bearer), but that is not usage guidance for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.state.queryAInspect

Read rows from a declared table, optionally filtered (where: "field op value", ops = != < <= > >=, clauses joined by ' and '), ordered (order_by: "field" or "field desc") and capped (limit).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return; optional.
tableYesName of the declared table to read from.
whereNoOptional filter, e.g. "age > 21"; ops are != < <= > >=, clauses joined by ' and '.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
order_byNoOptional "field" or "field desc" to sort by.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are none provided, so the description carries the full burden. It discloses the operation type (read, not mutation) implicitly through the verb 'Read' and the optional parameters. It discloses the filtering syntax and supported operators, sorting syntax, and limit. However, it does not disclose details about what happens if the table doesn't exist, error behavior, permission requirements, or whether it returns raw rows or some structure. The description adds context about syntax (ops = != < <= > >=, clauses joined by ' and ') which goes beyond schema to specify exact filtering syntax.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that introduces the purpose and then details optional clauses in parenthesis. It is front-loaded with action and resource, then details the parameters in a compact way. No wasted words; every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read query tool with no output schema, the description explains the main parameters and syntax. It doesn't mention return format (e.g., array of rows) or error cases, but given the tool's complexity is low to moderate, and schema covers all parameters, it is fairly complete. It could be improved by noting that it returns rows or that the table must exist, but the essentials are covered. It handles the syntax for where and order_by, which are the trickiest parts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter (table, where, order_by, limit, end_user, tenant_key). The description adds minimal additional semantic value: it clarifies that where clauses support specific operators and joining, and that order_by uses 'field' or 'field desc', and that limit caps rows. However, it doesn't add about end_user or tenant_key beyond what's in schema. Baseline 3 is appropriate because the schema already explains each parameter well, and the description adds some syntax details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read'), a clear resource (rows of a declared table), and outlines optional operations (filtering with where, ordering, capping). It distinguishes from siblings like host.state.get (single row), host.state.list (likely listing resources), host.state.delete_rows (deletion), host.table.query (querying tables from a different namespace), and host.state.insert by focusing on reading rows with filters/order/limit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly describes the functionality and conditions for using it (reads rows from a declared table, supports optional filtering, ordering, and limitation). It implies usage: when you need to fetch multiple rows based on criteria. It doesn't explicitly mention when NOT to use it or point to alternatives like host.state.get for single keys, but given the sibling set, the description is clear enough to select this tool for read operations. A sibling distinction is partially present through the description of capabilities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.state.setAInspect

Write one key in this tenant's key-value state namespace; value may be any JSON value. Overrun of the plan's state_bytes_max quota fails with state_quota_exceeded and writes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey to write in this tenant's key-value state namespace.
valueYesAny JSON value to store under key.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses the key failure mode and atomicity ('fails with state_quota_exceeded and writes nothing'), which goes beyond simply saying 'set a value'. It does not cover overwrite semantics or auth requirements, but the core side-effect behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and resource, followed by the failure behavior. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-key write tool with full schema coverage, the description provides the core semantics and the important quota/atomicity edge case. It is only slightly incomplete in not explaining when to prefer sibling tools or what a successful call returns, especially since no output schema exists to fill that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description mostly reinforces the schema's tenant-scoped key-value framing and adds no additional parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Write one key in this tenant's key-value state namespace'. The scope is clear—single key, tenant-scoped, any JSON value—and the action is easily distinguished from sibling state tools like get, delete, query, and list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the description states this tool writes one key, but it never names alternatives or says when not to use it. An agent must infer from the sibling list that host.state.get, host.state.delete, or host.state.insert cover other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.state.table_createAInspect

Declare (or replace the schema of) a table in this tenant's state store. schema is {"column": "text"|"integer"|"real"|"boolean"|"json"}; primary_key, if given, must name one of schema's columns -- an insert whose row matches an existing row's primary_key value replaces it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTable name to declare, or replace the schema of.
schemaYesColumn name to type map, each type one of text|integer|real|boolean|json, e.g. {"id": "integer"}.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
primary_keyNoColumn name (must be in schema) whose matching value replaces an existing row on insert; optional.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the upsert-like semantics -- an insert matching an existing primary_key value replaces that row -- and the allowed column-type set. However, it omits what happens to existing rows and data when a schema is replaced, whether the operation is idempotent, and any error/permission behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A tight two-clause sentence with the main action front-loaded and the type grammar and primary_key rule appended as necessary detail. No filler, though the embedded JSON grammar makes it dense to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a schema-mutating tool with no annotations and no output schema, the core declaration semantics are covered, but the consequences of 'replace the schema' on existing rows and data -- the riskiest aspect -- are left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented. The description restates the type map and the primary_key-in-schema constraint rather than adding format, defaults, or edge cases beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource -- 'Declare (or replace the schema of) a table in this tenant's state store' -- and is unambiguous against siblings like host.state.table_drop, host.state.insert, and host.state.set, each of which does something different to the same store.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies when the tool applies (declaring a new table or replacing an existing table's schema), but never states when to prefer it over alternatives such as host.state.table_drop for removal or how declaring relates to subsequent host.state.insert calls. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.state.table_dropBInspect

Drop a declared table and every row it holds.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the declared table to drop, with every row it holds.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It explicitly states that both the table and all its rows are destroyed, which is a meaningful trait beyond the name. However, it omits whether the operation is irreversible, what permissions are required, and what happens if the table does not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It immediately conveys the action and its destructive scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully covers the parameters and there is no output schema, but as a destructive operation with no annotations, the description should say more about irreversibility, permissions, and usage context. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (name and tenant_key) are fully documented in the schema, including the auth fallback for tenant_key. The description adds no additional parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Drop) and resource (declared table) plus the scope of destruction (every row it holds). It does not explicitly differentiate from sibling tools like host.state.delete_rows or host.state.table_create, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to use this tool versus alternatives such as delete_rows or table_create, nor any prerequisites or exclusions. The description is purely declarative and leaves all routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.appendAInspect

Append one row (an object) or several (an array of objects) to a declared table. Each row is validated against the table's schema first -- a type mismatch fails the whole call with table_schema_violation and writes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYesOne row (an object) or several (an array of objects), each validated against the table's schema.
tableYesName of the declared table to append to.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that each row is validated against the table's schema, that a type mismatch fails the entire call with table_schema_violation, and that nothing is written (atomic semantics). Permission and rate-limit behavior are not covered, but the key mutation semantics are.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with zero waste: the first defines the operation and accepted input shapes, the second defines validation and failure behavior. Nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation with a fully documented schema and no output schema, the description covers purpose, input shapes, validation, and error/atomicity semantics. The only gap is that it doesn't explain how to create a table first or how this differs from sibling insert tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (rows, table, tenant_key) are already documented, including the header-precedence rule for tenant_key. The description adds no parameter detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (append) and resource (rows to a declared table), and clarifies that rows may be a single object or an array. It does not explicitly distinguish itself from the similar sibling host.state.insert, so the agent must infer the difference from the 'declared table' phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: 'declared table' signals a prerequisite that the table must already exist via host.table.create, and the schema handles the tenant_key auth condition. However, there is no explicit when-to-use guidance or named alternative (e.g., host.state.insert, host.table.query) to route the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.createAInspect

Declare a table in this tenant's SQL table store -- a different store from host.state.'s key-value namespace and its own tables: use host.state. for a handful of small values, host.table.* when you want real SQL (joins, aggregates, read-only queries) over rows. columns is {"column": "text"|"integer"|"real"| "timestamp"|"boolean"|"json"}; primary_key, if given, must name one of columns's own entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTable name to declare.
columnsYesColumn name to type map, each type one of text|integer|real|timestamp|boolean|json, e.g. {"id": "integer"}.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
primary_keyNoColumn name (must be in columns); optional.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the store's nature and the primary_key constraint, but does not state what happens if the table already exists (error vs idempotent), nor the permission/auth implications beyond tenant_key. Adequate but with real gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the store distinction in the first clause; every sentence earns its place. The inline columns schema is slightly awkward but conveys the enum set efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description does the heavy lifting on the store model and the primary_key rule. It is nearly complete for a create tool, missing only post-creation behavior (e.g., duplicate handling).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented, including the columns type map and the 'must be in columns' constraint on primary_key. The description restates these rather than adding new syntax or defaults, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Declare) and resource (table) scoped to 'this tenant's SQL table store'. It explicitly distinguishes itself from host.state.*, so an agent can tell it apart from sibling creation tools like host.state.table_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear routing rule: use host.state.* 'for a handful of small values' and host.table.* 'when you want real SQL (joins, aggregates, read-only queries) over rows.' This is explicit when-to-use guidance naming the alternative store.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.describeAInspect

Return the generated semantic model for a declared table: per column its inferred type, null share, distinct count, min/max or top values, and role (key|category|measure|date|id|text); per table its row count, candidate primary key, detected foreign keys, and suggested measures/dimensions. Refreshes after append/create within 30s; a call right after a write returns the previous model with stale: true rather than blocking.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesName of the declared table to describe.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does real work: it discloses eventual consistency ('Refreshes after append/create within 30s') and the fact that a post-write call returns stale: true rather than blocking. It could also mention error cases like undeclared tables, but the disclosed behavior is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences pack the core return contract and a useful staleness behavior with no filler. The main output list is front-loaded before the timing caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description lists most return fields (column type/statistics/role; table row count/keys/suggestions) plus stale behavior. It stops short of covering error handling for unknown/undeclared tables, but it is otherwise sufficient 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented and baseline is 3. The description adds no parameter-specific details beyond calling the target a 'declared table.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening verb 'Return' plus 'generated semantic model for a declared table' names the operation and includes a detailed inventory of output. It does not explicitly differentiate from host.table.schema or host.table.models, though the semantic-model focus makes it distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for inspecting the generated semantic model and notes staleness behavior after append/create, which gives timing context. It never states when to choose this over siblings like host.table.schema, host.table.models, or host.table.query, and offers no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.dropBInspect

Drop a declared table and every row it holds.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the declared table to drop, with every row it holds.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the destructive scope ('every row it holds'), but says nothing about irreversibility, required permissions, confirmation steps, or what happens to dependent state such as triggers. Partial disclosure of a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence that front-loads the verb and the destructive consequence. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, annotation-free, output-schema-free tool, the description is thin: it omits reversibility, permission/auth requirements, and any distinction from host.state.table_drop. It covers the core effect but not the operational context an agent needs before calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so 'name' and 'tenant_key' (including the Authorization-header precedence rule) are already fully documented in the schema. The description adds no syntax or format detail beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Drop') and resource ('a declared table') with scope ('every row it holds'). However, it does not differentiate from the closely named sibling host.state.table_drop, leaving the agent to guess which drop applies to which storage family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no warning that this is irreversible data destruction, and no routing between this tool and the sibling host.state.table_drop or host.table.list/schema. The agent gets no signal about prerequisites or safe usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.listBInspect

List this tenant's declared tables, each with its current row count, plus the tenant's whole table-store byte usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral load. It discloses the return content (per-table row counts and aggregate byte usage), which is useful, but says nothing about permissions, read-only safety beyond the implied "List", pagination, or cost of the aggregate scan.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that carries the verb, scope, and return payload with no filler. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only inventory tool with no output schema and one well-documented optional parameter, the description covers what is returned and at what scope. Missing only minor context such as ordering or pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one optional parameter, and the schema documents it fully (100% coverage) including the Authorization header precedence rule. The description adds nothing about tenant_key, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List this tenant's declared tables") and even discloses the payload (row count plus table-store byte usage), which separates it from host.table.schema and host.table.query. It does not explicitly name a sibling, so it falls short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not guidance is given. An agent cannot tell from the description whether to prefer this over host.table.schema or host.state.list, nor under what circumstances the inventory is the right call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.modelsAInspect

List every declared table that has a computed semantic model, each with its version, staleness, row count and when it was last computed.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It clearly frames the tool as a read-only listing operation ('List every...') and discloses the returned fields. It doesn't mention potential side effects or authorization requirements, but for a listing operation this is adequately transparent. Slightly more could be said about being non-destructive, but it's strongly implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource, includes the key output fields, and wastes no words. Excellent structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with one optional parameter and no output schema, the description provides the essential information: what is listed and the fields returned. It omits pagination or output formatting details, but these are not critical for this tool. The description is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the only parameter, tenant_key, including when it is required. The description itself does not add parameter details, but the schema covers 100% of the parameters with clear semantics, hitting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and a clearly defined resource: 'every declared table that has a computed semantic model'. It also lists the exact output fields (version, staleness, row count, last computed), which distinguishes it from sibling tools like host.table.list or host.table.describe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: use this when you need a summary of computed semantic models. The specificity of 'every declared table that has a computed semantic model' makes the use case obvious, but it does not explicitly contrast with alternatives like host.table.list or host.table.describe. This is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.model_setAInspect

Annotate a declared table or one of its columns -- the next describe merges this back in (an annotation's role wins over the inferred one; unit/description are added; hidden marks a column to omit from a summary). key must be one of role, unit, description, hidden.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesOne of role, unit, description, hidden.
tableYesName of the declared table to annotate.
valueYesThe annotation's value.
columnNoColumn name to annotate; omit for a table-level annotation.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the merge behavior ('the next describe merges this back in'), the precedence rule ('an annotation's role wins over the inferred one'), and the effect of each key (unit/description added; hidden omits column from summary). It does not cover error handling or idempotency, but it explains the core behavior well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the primary action, and packs essential information efficiently. Every clause contributes to understanding the tool's purpose and key semantics without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core functionality, key semantics, and how it interacts with describe. It does not describe the return value, but for a set operation this may be trivial. It also doesn't mention prerequisites like table existence, but given the schema documents required parameters and the description explains behavior, it is sufficiently complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the effect of each allowed key value ('role wins over the inferred one; unit/description are added; hidden marks a column to omit from a summary'). It also clarifies the column parameter's purpose by saying 'omit for a table-level annotation', which is in the schema but reinforced. This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action clearly: 'Annotate a declared table or one of its columns'. It specifies the verb and resource, and the mention of 'the next describe merges this back in' hints at its integration with describe, but it does not explicitly name alternative tools to differentiate from. Thus it is clear but not fully distinctive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives context that annotations are merged into the next describe, implying usage before describe. However, it does not explicitly state when to use this tool versus other table tools like host.table.schema or host.table.models, nor does it mention exclusions or alternatives. The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.queryAInspect

Run a single read-only SQL SELECT (CTEs allowed) against this tenant's own tables. Structurally rejected (not by string matching): anything but exactly one SELECT statement, a result over 1,000 rows, or a query running past 5 seconds -- each refusal names the rule or bound it hit.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesA single read-only SELECT statement (CTEs allowed) over this tenant's own declared tables.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does most of it well: it discloses that validation is structural (not string matching), the exact rejection triggers, and that refusals name the rule hit. It omits auth/permission requirements and any return-shape expectations, which for a mutation-free read tool is a modest gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with zero filler; the core capability is front-loaded and the enforcement details follow immediately, each earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-param read tool with no output schema and no annotations, the description covers the critical enforcement behavior an agent needs. It stops short of describing the result shape or column/error payload structure, which leaves a small completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both params (sql, tenant_key) are already fully documented in the schema. The description largely restates the sql constraint rather than adding semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run a single read-only SQL SELECT (CTEs allowed)') and scopes it to 'this tenant's own tables.' It does not, however, differentiate itself from the very similar sibling host.state.query, so the agent must infer which query surface to use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description defines operational bounds (exactly one SELECT, 1,000-row cap, 5-second timeout) which implicitly tells the agent when the tool will refuse, but it gives no explicit when-to-use vs. when-to-prefer-an-alternative guidance against siblings like host.state.query or host.table.append.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.table.schemaAInspect

Return one table's columns, types, row count and byte count, without running a query -- how an agent discovers its own table shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesName of the declared table to describe.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden. It usefully signals a cheap metadata read with no query execution and enumerates the returned metrics, but it says nothing about permission requirements, behavior for a missing/unauthorized table, or whether row/byte counts are exact or estimated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the resource and the differentiator front-loaded and zero filler. Every clause (what is returned, no query execution, use case) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly enumerates the return shape (columns, types, row count, byte count), and auth semantics live in the schema. It is nearly complete for a simple introspection tool, missing only error/failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the tenant_key description already explains the Authorization-header precedence rule in detail, so the schema does the heavy lifting. The description only adds the implicit 'one table' scope for the table parameter, which is baseline-level value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (return) and resource (one table's columns, types, row count, byte count), and the clause 'without running a query' explicitly differentiates it from query-based siblings such as host.table.query. An agent knows exactly what it gets without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'how an agent discovers its own table shape' gives clear context for when to reach for it (introspection instead of querying), which is useful routing against host.table.query. It stops short of naming alternatives or stating when-not-to-use (e.g. host.table.list for enumerating all tables), so it is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_callAInspect

Invoke a tool this tenant has already published, by its local name -- the same real, metered call as calling it directly by its namespaced name (.), for a session that has no way to see its own namespaced tool name yet. Unlike host.tool_test, this counts toward host.usage and appears in host.tool_logs. Pass async: true for a tool that needs more than the call deadline: returns {run_id, status: "queued"} immediately instead of running inline -- see host.runs.get/wait. Pass version to pin the call to one of host.tool_history's versions instead of whichever is current.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesArguments to pass, validated against the tool's own args_schema.
nameYesLocal name of the tool to invoke.
asyncNoRun as a job instead of inline: returns {run_id, status} within ~50ms under the plan's job_max_s deadline; default false.
versionNoPin the call to this version instead of whichever is current; see host.tool_history. An unknown version is an argument error.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses metering, logging, async queuing behavior, version pinning semantics, and auth requirements. It doesn't explicitly state that the invoked tool may have arbitrary side effects, but 'the same real, metered call' implies execution of the target tool with its inherent behavior. Overall, strong transparency for a dynamic invoker.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, densely packed with purpose, contrasts, async behavior, and versioning. Front-loaded with the core purpose, then alternatives and nuances. No fluff, but slightly long due to necessary detail. Well structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 params, nested objects, and no output schema, the description covers all key aspects: purpose, auth, async, versioning, and differentiation from siblings. It references related tools (host.tool_history, host.runs.get/wait) for follow-up. Minor gap: doesn't explicitly describe error handling for unknown tools or validation failures, but that's not critical for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining why tenant_key is only needed without auth header, what async returns and its timing, and how version pins to history. It enriches parameter understanding without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'invoke', the resource (a published tool by local name), and explicitly distinguishes itself from host.tool_test by noting it counts toward usage and logs. It also explains the specific use case for sessions that cannot see their own namespaced name, 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly contrasts with host.tool_test, clarifies when async is needed (beyond the call deadline), when to pass version (to pin to a specific history version), and when tenant_key is required (no auth header). This gives clear when-to-use and when-not-to-use guidance with named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_diffAInspect

Return a unified diff between two published versions of one of this tenant's tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe later version number.
fromYesThe earlier version number.
nameYesLocal name of the tool.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It clearly indicates a non-mutating retrieval by saying 'Return', specifies the result format ('unified diff'), and scopes the operation to 'published versions' of 'this tenant's tools'. This is adequate, though it does not mention error cases or auth behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no filler. The core verb, resource, and scope are front-loaded, making it immediately parseable by an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, full schema coverage, and no output schema, the description is mostly complete: it states what is returned, between what, and for whom. The main missing piece is guidance on how this relates to version-history siblings, but that is already captured under usage guidelines rather than a fundamental contextual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents name, from, to, and tenant_key. The description adds no additional parameter semantics beyond what the schema provides, which matches the baseline for complete schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Return'), a specific resource ('unified diff between two published versions'), and a clear scope ('one of this tenant's tools'). This distinguishes it from sibling tools like host.tool_history and host.tool_list without needing to inspect their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as host.tool_history or host.tool_rollback. The intended use is implied by the name and wording, but no explicit when-to-use or when-not-to-use context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_historyAInspect

List every published version of one of this tenant's tools, newest first, each with its creation time, source_sha256, and whether it's the current one.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocal name of the tool.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the ordering ('newest first'), the fields returned (creation time, source_sha256, current flag), and the tenant scoping. It does not disclose pagination, rate limits, or what happens if the tool name does not exist, but for a read-only list operation this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, dense sentence that front-loads the action and resource, then packs the key output details. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with 100% schema coverage and no output schema, the description covers the essential behavior: what is listed, the order, and the returned fields. It could mention pagination or error behavior, but those are minor gaps for this tool type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds the context that 'name' refers to a local tool name and that the result is version history, but it does not add syntax or format details beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a specific resource ('every published version of one of this tenant's tools'), and a clear scope ('newest first, each with its creation time, source_sha256, and whether it's the current one'). It is clearly distinguishable from siblings like host.tool_list, host.tool_diff, and host.tool_rollback.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a clear use case: retrieving the version history of a specific tool. It does not explicitly name alternatives or exclusions, but the context of 'published versions' and 'newest first' makes it evident when to use it versus other tool-related siblings. A small gap: no explicit statement about when to prefer host.tool_diff or host.tool_rollback.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_listAInspect

List this tenant's published tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description bears the burden of behavioral disclosure. 'List' implies a read-only operation and 'this tenant's published tools' conveys scoping, but the description does not explicitly state that nothing is mutated, nor does it describe ordering, pagination, or error behavior. Annotations are absent, so a 3 reflects that the basics are present but the behavioral details are thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one tight sentence that front-loads the essential purpose. There is no filler or repetition of the tool name, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with zero required parameters, the description plus the tenant_key schema note is nearly complete. The main missing information is the return format or pagination, but no output schema exists and the call would still be correctly selected and invoked with the provided text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter, tenant_key, has 100% schema-description coverage: the schema already explains where the key comes from and the precedence between the Authorization header and the key. The tool description itself adds no parameter semantics, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a clear, specific statement: 'List this tenant's published tools.' It names the verb (list), the resource (published tools), and the scope (this tenant), which separates it from sibling tools like host.secret_list or host.tool_logs on first read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the active verb and 'published tools' scope, but the description never explicitly states when to choose this tool over alternatives such as host.tool_publish or host.tool_run. No when-not-to-use guidance is provided; only the tenant_key schema description gives auth-related usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_logsBInspect

Return the most recent log lines for one of this tenant's tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocal name of the tool whose log lines to return.
limitNoMax lines to return, most recent first; default 20.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it only says it returns recent log lines. It omits whether this is a safe read, ordering guarantees beyond the schema's 'most recent first', behavior when the tool name is unknown or has no logs, and volume/pagination limits. The one fragment of ordering context duplicates what the limit parameter already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler that places the resource and scope immediately. Nothing redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description is the main source of behavioral and return context, yet it does not describe what a log line contains or error/none cases. The 100% schema coverage covers inputs, but the definition is only adequate, not complete, for a diagnostic/read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (name, limit, tenant_key) are already documented, including the default of 20 and the Authorization-header precedence for tenant_key. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Return) and resource (log lines) with clear scope (one of this tenant's tools) and a recency qualifier. An agent can distinguish this from siblings like host.tool_list or host.tool_call. However, it does not explicitly differentiate against the nearest alternatives (e.g., host.runs.list, host.tool_test), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the description suggests it is used when inspecting logs for a named tool, but it never states when to prefer this over host.runs.list or host.tool_test, nor any exclusions. This is minimum viable routing information without explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_publishAInspect

Publish a tool of a registered kind (chain, echo, http, python, wasm) under this tenant's namespace. Call host.quickstart(kind) first for a filled-in example spec and the full publish-to-call sequence. Name must match ^[a-z][a-z0-9_]{1,40}$; a rejection names the failing field and a corrected example. Try host.tool_test before a real call.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich registered kind to publish under, e.g. echo, http, python.
nameYesLocal name for the new tool; must match ^[a-z][a-z0-9_]{1,40}$.
specYesThe kind-specific spec object; see host.quickstart(kind) for a filled-in example.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It discloses the name validation regex and rejection behavior (naming the failing field and a corrected example), which is useful. However, it does not disclose overwrite/idempotency behavior, permission requirements, or side effects beyond the verb 'publish'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences accomplish purpose, prerequisites, validation, error behavior, and testing guidance with no filler. The main action is front-loaded, and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description gives enough to call the tool correctly: supported kinds, prerequisite quickstart, name validation, rejection format, and post-publish testing. It does not describe the success response shape, but the quickstart reference is positioned to fill that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds value by listing the complete set of supported kinds (chain, echo, http, python, wasm) beyond the schema's 'e.g.' examples. It also directs the agent to host.quickstart(kind) for the spec shape, compensating for the nested spec's lack of detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and resource: publish a tool of a registered kind under the tenant's namespace, with supported kinds enumerated. This clearly differentiates it from closely related siblings such as host.registry_publish and host.tool_call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs calling host.quickstart(kind) first to obtain a filled-in example spec and the publish-to-call sequence, and recommends host.tool_test before a real call. This gives clear workflow context, though it does not state explicit exclusions or when not 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.

host.tool_removeCInspect

Remove a published tool by its local name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocal name of the tool to remove.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Remove' implies a destructive mutation, but the description never states whether deletion is permanent or reversible, whether it requires authorization, or what happens to associated runs, logs, and shared grants. For a destructive tool with zero annotation coverage this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb first and zero filler. Every word earns its place and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no annotations and no output schema, the description is too thin. An agent calling it cannot tell whether the removal is destructive/permanent, what authorization is needed, or what the tool returns, and none of that is supplied by structured fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'name' and the conditional 'tenant_key' are documented in the schema itself, including the bearer-header precedence rule. The phrase 'by its local name' reinforces the name parameter but adds no syntax, format, or validation detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Remove') and resource ('a published tool') with scope qualifier ('by its local name'), so an agent knows exactly what the operation targets. However, it does not differentiate itself from related siblings such as host.registry_publish, host.tool_unshare, or host.state.delete, leaving the boundary between removal and unsharing unstated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given: nothing says whether this is for cleanup after testing, deprecation, or replacing host.tool_unshare. No prerequisites or preconditions (e.g., tool must be unpublished, must be owner) are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_rollbackAInspect

Make an earlier published version of one of this tenant's tools current again -- the next host.tool_call (or namespaced call) runs that version's source. See host.tool_history for the valid version numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocal name of the tool to roll back.
versionYesThe version number (from host.tool_history) to make current.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains the main effect: the next call uses the rolled-back version's source. However, it does not mention reversibility, potential side effects (e.g., whether the rollback is permanent until changed again), permission requirements, or what happens if an invalid version is provided. It does indirectly mitigate version validation by pointing to host.tool_history, but lacks comprehensive 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core action, explains the immediate consequence, and includes a practical reference to a sibling tool. Every sentence earns its place; there is no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool with no output schema, the description covers the essential action, the effect on subsequent calls, and points to where valid version numbers can be found. It does not mention return values or error conditions, but given the tool's simplicity and the explicit reference to host.tool_history for validation, it is sufficiently complete for an agent to invoke it correctly. A minor gap is the lack of clarification on whether the rollback affects all future calls until changed again, though this is implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions. The description adds some value by directing the agent to host.tool_history for valid version numbers, which provides context for the 'version' parameter. It does not add further semantics beyond the schema, such as naming conventions or error handling. Since the baseline for 100% coverage is 3, and only a minor extra is added, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Make an earlier published version of one of this tenant's tools current again.' It also specifies the direct consequence ('the next host.tool_call runs that version's source'), which distinguishes it from sibling tools like host.tool_publish (which creates new versions) and host.tool_history (which only lists versions). The verb-resource pair is unambiguous and well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage hint by instructing the agent to 'See host.tool_history for the valid version numbers,' which sets a prerequisite. It implies the tool is used to revert to a prior version but does not explicitly state when not to use it or compare it to alternatives like host.tool_publish or host.tool_diff. The guidance is adequate but lacks explicit exclusions or a full decision tree.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_runAInspect

Debug-run a published python tool: result.payload plus duration_ms and exit_code; for the other cases see host.quickstart.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesArguments to pass, same shape as a real call.
nameYesLocal name of the already-published python tool to debug-run.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses that the tool returns result.payload plus duration_ms and exit_code, but it does not explain whether debug-running actually executes the tool with side effects, how it differs from a real call, or any failure/error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It states the core purpose, the expected output, and points to an alternative in a compact way.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the full schema coverage, a clear output-field summary, and the pointer to host.quickstart, an agent has most of what it needs to call the tool. The main gap is the lack of differentiation from host.tool_test and host.tool_call, but the description is otherwise reasonably complete for a debug-run helper.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-level meaning beyond what the schema already provides; name and args are already well described in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Debug-run') and resource ('a published python tool'), and states the output fields (result.payload, duration_ms, exit_code). It does not, however, distinguish itself from closely related siblings like host.tool_test or host.tool_call, only from host.quickstart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for the other cases see host.quickstart' provides a pointer to one alternative, but 'other cases' is vague and no explicit conditions distinguish host.tool_run from host.tool_test or host.tool_call. Some usage context is present, but it is largely 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.

host.tool_shareAInspect

Share one of this tenant's published tools with everyone (visibility: "public") or with a named group this tenant owns (visibility: "group", group: ). The tool keeps running in this tenant's own sandbox with this tenant's own secrets; a caller reaches it as <this tenant's namespace>..

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocal name of the tool to share.
groupNoRequired when visibility is "group"; must already exist (host.group.create).
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
visibilityYes"public" or "group".
descriptionNoCatalog-facing blurb; shown by host.catalog.search/get.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose important non-obvious behavior: the tool keeps running in the tenant's own sandbox with its own secrets, and callers reach it via namespace.name. However, it omits reversibility, required permissions, and idempotency, leaving meaningful behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action and visibility options, then the execution/naming behavior. No wasted words, though it packs two distinct ideas without clear separation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a sharing tool with no annotations and no output schema, the description covers the key operational facts (where the tool runs, how it is addressed, the two modes). Missing only reversibility and permission prerequisites, which are minor given the unshare sibling exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning by explaining what visibility values accomplish (share with everyone vs. a named group) and reinforcing the group requirement. This goes beyond the terse '"public" or "group"' schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (share) and resource (a tenant's published tool), plus the two visibility modes. It clearly distinguishes itself from siblings like host.tool_publish and host.tool_unshare by naming the exact scope and target audience.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the two visibility modes and the group prerequisite, which implies usage, but never states when to choose this over host.tool_publish or host.registry_publish. No explicit when-not guidance or exclusion criteria are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_testBInspect

Dry-run an already-published tool by name, no calls row written; for the other cases see host.quickstart.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesArguments to pass, same shape as a real call.
nameYesLocal name of the already-published tool to dry-run.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose one valuable trait: the dry-run writes no calls row, i.e. it has no persisted side effect. It stops there, saying nothing about whether the tool's own side effects are suppressed, permission/tenant requirements, or what a run returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the action and the key constraint (no calls row). It is efficient, though the telegraphic 'for the other cases' phrasing trades clarity for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-args, no-annotation, no-output-schema tool, the description covers the core behavior but omits return shape and the precise comparison against host.tool_call/host.tool_run. Adequate but with identifiable gaps an agent would need to resolve elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (name, args, tenant_key) are already documented in the schema, including the auth precedence rule for tenant_key. The description adds only 'by name' and implies args mimic a real call, which is redundant with the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (dry-run) and resource (an already-published tool identified by name), plus a differentiating trait (no calls row written). However it does not distinguish itself from close siblings like host.tool_call, host.tool_run, or host.bridge_test, so an agent must infer the boundary rather than being told.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names one alternative (host.quickstart) for 'the other cases', which is a real routing hint, but 'the other cases' is left undefined and the more obvious overlapping siblings (host.tool_call, host.tool_run) are never mentioned. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.tool_unshareCInspect

Take a shared tool back to private.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocal name of the tool to unshare.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the end state (private) but says nothing about required permissions, whether the share link/registration is revoked or merely hidden, reversibility, or error behavior for unshared tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the outcome front-loaded and no filler. It is efficient, though extremely terse for a mutation tool with no annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema the description needn't explain returns, and the two parameters are fully documented in the schema. However, for an unannotated mutation tool, the absence of permission, idempotency, and failure-mode context leaves a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the non-obvious tenant_key precedence rule, so the schema does the heavy lifting. The description adds no parameter meaning beyond what is already documented, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('take a shared tool back to private'), making the inverse relationship to host.tool_share inferable. It does not explicitly name that sibling or otherwise differentiate from the other host.tool_* tools, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus alternatives, no mention of prerequisites (ownership of the tool, an existing share), and no statement of what happens if the tool is not currently shared. The agent must infer all of this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.fireAInspect

Run a schedule once right now, for testing -- recorded as trigger: "schedule" with manual: true, independent of next_unix or pause state.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe trigger id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the run is recorded as trigger: "schedule" with manual: true and fires regardless of next_unix or pause state. It doesn't state whether it blocks or what it returns, but the key side-effect behavior is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, tightly packed sentence with the purpose front-loaded and no filler. Slightly dense with the quoted literals, but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param tool with full schema coverage and no output schema, the description is nearly complete: purpose, side-effect recording, and state-independence are all present. The return/result behavior is the only notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both 'id' and 'tenant_key' are already fully documented in the schema, including the header-precedence nuance for tenant_key. The description adds no additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Run a schedule once right now, for testing.' It clearly conveys an immediate one-shot fire, distinct in spirit from pause/resume/set siblings, though it doesn't name a sibling to route against explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'for testing' gives the intended context for use, and 'independent of next_unix or pause state' clarifies behavior relative to scheduling primitives. However, there is no explicit when-not guidance or named alternative (e.g., host.trigger.resume vs this).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.getAInspect

Read one trigger's current schedule, next_unix, last_run_id and last_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe trigger id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the burden; 'Read' correctly signals a non-mutating operation, and it usefully enumerates what comes back (schedule, next_unix, last_run_id, last_status). It says nothing about authorization requirements or rate limits, and tenant_key's auth semantics are only covered in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the verb, scope, and return fields are all in the first clause. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned fields is the right compensating move, and 100% schema coverage handles the parameters. Minor gaps remain around failure modes and how the fields relate to sibling trigger state (e.g., last_status values), but for a simple read tool this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both id and tenant_key (including the Bearer-header precedence rule) are already documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (one trigger) and enumerates the returned fields, which distinguishes it from the sibling host.trigger.list and the mutation tools fire/pause/resume/set/remove. It does not explicitly name a sibling, but the singular 'one trigger' scoping is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Read one trigger's current schedule' — fetch the current state for a known id. There is no explicit when-to-use guidance, no mention of host.trigger.list as the alternative for enumerating triggers, and no statement about error/not-found behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.listAInspect

List this tenant's triggers (optionally filtered by tool), each with next_unix, last_run_id and last_status (schedule), url/verify/unverified (event), or url/name/verify with no secret (webhook).

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNoOnly triggers on this tool name.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior itself. It describes the output structure for schedule, event, and webhook triggers, which is valuable. However, it does not explicitly state that the operation is read-only, nor does it mention any side effects, error conditions, or pagination. The description adds context but could be more explicit about its non-mutating nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the main action and then lists the specific return fields for different trigger types. It avoids fluff and effectively conveys the essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the output structure for all trigger types, which is critical given the absence of an output schema. It also mentions the optional filter. It does not mention pagination or sorting, but for a simple list operation this is likely acceptable. The tenant_key parameter behavior is well-documented in the schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full descriptions for both parameters (tool filter and tenant_key auth handling). The tool description adds no additional meaning beyond what the schema offers. With 100% schema coverage, the baseline is 3, and the description does not elevate it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (List) and resource (this tenant's triggers), and mentions optional filtering by tool. It distinguishes from sibling trigger tools by the verb 'list' vs get/set/fire, but does not explicitly name alternatives. The inclusion of return-field details for different trigger types makes 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing triggers but does not explicitly state when to use this over host.trigger.get or other trigger tools. It does not mention exclusions or alternatives, leaving the agent to infer that this is the list operation while get retrieves a specific trigger. Minimal guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.pauseAInspect

Stop a trigger from firing until resumed; still counts toward schedules_max.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe trigger id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that paused triggers still count toward schedules_max, which is important quota context, but omits auth requirements, idempotency, permissions, and what happens to in-flight or scheduled fires.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence that earns every clause: the action, its temporary nature, and the quota consequence. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple two-parameter tool with fully described inputs and no output schema, the description covers the essential action and an important quota side effect. It could still say more about permissions or side effects, but it is largely sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including nuanced auth guidance for tenant_key, so the schema already fully documents both parameters. The description adds no additional parameter meaning beyond the schema, which is the correct baseline here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: stop a trigger from firing until resumed. The temporary nature cleanly distinguishes it from siblings like host.trigger.resume, host.trigger.remove, and host.trigger.fire.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use this tool: for temporarily halting a trigger while preserving it for later resume. The note that it still counts toward schedules_max helps an agent choose between pausing and removing, though no alternative is named explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.removeAInspect

Delete a trigger outright (frees its schedules_max slot, unlike pause).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe trigger id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses a non-obvious side effect (the schedules_max slot is released, unlike pause) and 'outright' signals permanence. It does not address reversibility, cascade behavior on dependent runs, or error behavior for a missing id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and immediately followed by the differentiator. Every clause earns its place with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter delete with no output schema and full schema coverage, the description supplies the key behavioral fact an agent needs (slot release vs. pause). Only minor gaps remain around irreversibility and failure modes, which are not blocking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'id' and 'tenant_key' (including the auth-header precedence rule) are fully documented in the schema. The description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Delete a trigger outright' says exactly what happens. It also implicitly contrasts with the host.trigger.pause sibling, so an agent can separate the two without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'frees its schedules_max slot, unlike pause' names the alternative and gives the condition that differentiates deletion from pausing. It stops short of spelling out the counter-case (when the agent should pause instead), but the discriminator is explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.replayAInspect

Re-run a past event- or message-triggered run's exact stored event/envelope (no re-verification -- the original delivery already passed it). The new run's trigger_ref names the original run id. For a webhook trigger, pass id (the trigger) and row_id (an inbox_ row id, e.g. from POST /hook/...'s own response or host.state.query) instead of run_id -- a paused delivery has no run to replay from.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNokind="webhook" only: the trigger id (paired with row_id).
row_idNokind="webhook" only: the inbox_<name> row id to replay (paired with id).
run_idNoThe event- or message-triggered run id to replay.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral nuances. It states that replay does not re-verify the event (original delivery already passed verification), and that the new run's trigger_ref references the original run id. It also notes that a paused delivery has no run to replay. However, it does not disclose side effects like creating a new run record, potential idempotency, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence fronts the core purpose and behavior; the second addresses the webhook special case. Information is efficiently packed without redundancy, though the second sentence is slightly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 params, no output schema, no annotations), the description covers the main usage scenarios and parameter selection. However, it does not explicitly state that either run_id or (id+row_id) is required (the schema lists no required fields), nor what happens if both are provided. It also lacks guidance on locating row_id beyond a couple of examples, and does not describe return values or errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful usage context beyond the schema: it explains that id and row_id are paired and only for webhook triggers, and that run_id is for event/message triggers. It also clarifies tenant_key's conditional necessity (only when no Authorization header). This extra guidance improves parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: re-running a past event- or message-triggered run using its exact stored event/envelope. It also differentiates from sibling tools like host.trigger.fire (which presumably creates new runs) and host.runs.get (which retrieves run info) by focusing on replaying an existing run's payload. The webhook vs event/message distinction is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear guidance on when to use webhook parameters (id and row_id) versus run_id for event/message triggers, explicitly stating that webhook triggers lack a run to replay from. It also mentions tenant_key requirement context. It does not explicitly name alternatives (e.g., 'use host.trigger.fire to create a new run'), but the parameter-selection guidance effectively routes the agent to the correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.resumeAInspect

Re-enable a paused trigger; if its scheduled time already passed, the next tick fires it once (a missed firing is never replayed).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe trigger id.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it delivers genuinely non-obvious behavior: a passed scheduled time causes exactly one firing on the next tick, and a missed firing is never replayed. It omits error/ownership semantics and what the call returns, but the firing-semantics disclosure is substantial context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the core action front-loaded and the scheduling caveat appended. Every clause earns its place, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema, no-annotation mutation tool, the description covers the key operational surprise (no replay of missed firings). Auth is handled by the schema's tenant_key note, though error and return behavior remain unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both 'id' and 'tenant_key' (including the auth-header precedence rule). The description adds nothing about parameters, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('re-enable') and resource ('a paused trigger'), which immediately separates it from siblings like host.trigger.pause and host.trigger.fire. An agent knows exactly what operation this performs without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'a paused trigger' implies the precondition for use, giving context on when this applies. However, it names no alternative and states no explicit when-not condition, so the routing guidance is only implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.setAInspect

Run a published tool on a cron schedule (5-field: minute hour day-of-month month day-of-week, UTC), give it a public webhook URL (kind="event"): a signed POST to that URL runs the tool with the event as its argument, fire it whenever this tenant receives a message (kind="message"): the tool runs with the message envelope as its argument, or give it an inbound-inbox URL (kind="webhook"): a verified POST lands as a row in state table inbox_ and fires the tool with that row as its argument -- the response carries {url, secret} once (host.trigger.get afterwards never returns the secret again). Each firing/delivery is a run visible in host.runs.list(trigger="schedule"|"event"|"message"|"webhook"). Refuses schedules_max (trigger_quota_exceeded, shared by schedule and webhook triggers), event_triggers_max (shared by event and message triggers) or a too-short schedule interval (trigger_interval_too_short); an invalid expression or verify config fails trigger_invalid naming the field.

ParametersJSON Schema
NameRequiredDescriptionDefault
tzNokind="schedule" P1: only "UTC" (or omitted) works today.
argsNoArguments passed to the tool on each firing/delivery (kind="schedule"/"event" only -- a message trigger's whole argument is the message envelope and a webhook trigger's whole argument is the stored inbox row).
fromNokind="message": only fire for messages from this address (@handle or t_... namespace); omit to fire for any sender.
kindNo"schedule" (default), "event", "message" or "webhook".
nameNokind="webhook": letters/digits/underscore -- becomes the inbox_<name> state table each accepted delivery is stored in.
toolYesThe published tool this trigger runs.
verifyNokind="event": {scheme: "hmac-sha256"|"hmac-sha1"|"token"|"none", header, secret (a host.secret_set name), prefix?, timestamp_header?, tolerance_s?, allow_unverified? (required true for scheme "none")}. kind="webhook": a plain string, one of "hmac" (default; checks X-Mcphost-Signature: sha256=<hex>), "none", or "stripe" (checks Stripe-Signature the way Stripe itself signs, using the same generated secret).
scheduleNokind="schedule": 5-field cron expression (minute hour day-of-month month day-of-week), UTC. Supports *, lists, ranges and steps.
channel_idNokind="message": scope this trigger to one group channel's posts (host.channel.open's channel_id) instead of ordinary host.msg.send/reply deliveries.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.
dedupe_headerNokind="event": a header (e.g. X-GitHub-Delivery) whose repeated value within 24h answers 202 with the original run id instead of running again.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the one-time return of {url, secret}, that each firing appears in host.runs.list, the signing/verification behavior for event and webhook, deduplication via dedupe_header, and specific error names (trigger_quota_exceeded, trigger_interval_too_short, trigger_invalid). This is exceptionally thorough for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense and efficiently packed into a single paragraph with semicolon-separated clauses. It front-loads the core schedule purpose, then lists alternatives. Given the complexity of four trigger kinds and 11 parameters, the length is justified and there is no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters, 1 required, no output schema, and no annotations, this description covers all the essential behavioral aspects: kind-specific argument handling, verification schemes, error conditions, and the run visibility. An agent could correctly construct a call for any of the four trigger types without further documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaningful cross-parameter semantics: it explains which params apply to which kind (args only for schedule/event, from for message, name for webhook), and clarifies the verify object structure and dedupe_header purpose. This goes beyond the schema's individual field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource — 'Run a published tool on a cron schedule' — then expands to four explicit trigger kinds (schedule, event, message, webhook). It is unambiguous about what the tool does and naturally distinguishes it from sibling read/manage tools like host.trigger.get and host.trigger.list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the conditions for each kind (e.g., 'kind=event' for webhook, 'kind=message' for tenant messages) and gives practical constraints (refuses quotas, interval limits). It does not explicitly contrast with manual triggering tools like host.trigger.fire or test, but the purpose is clear enough that an agent would know this is the creation path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.trigger.testAInspect

Dry-run an event trigger's verify config against a payload you supply, without exposing its real URL -- verifies the signature exactly as POST /hooks/... would, then runs the tool with the event as its argument. On a message trigger, runs the tool with a synthetic envelope (test: true, no messages row created). On a webhook trigger, builds and self-signs a synthetic body exactly like a real sender would, then stores and fires it through the same path POST /hook/... uses (one inbox row, one run). The run is marked test: true. A wrong signature fails signature_invalid, naming the header it checked.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe event, message or webhook trigger id.
bodyNokind="event"/"webhook": the payload to verify and run with -- any JSON value. kind="message": the synthetic envelope's body text.
dataNokind="message": the synthetic envelope's data payload.
fromNokind="message": the synthetic envelope's from address; default "@test".
headersNokind="event": header name -> string value, e.g. {"X-Hub-Signature-256": "sha256=..."}.
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It is exceptionally transparent: it states side effects (one inbox row, one run), marks the run as test:true, explains synthetic envelope construction, notes that message triggers create no messages row, and even describes the failure mode (signature_invalid, naming the header checked). This exceeds expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but not bloated. Every sentence conveys distinct, necessary information about trigger kind behavior, side effects, or failure modes. It is a single paragraph, but the complexity of the tool justifies the length. It is front-loaded with the main purpose and then details variations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with multiple trigger kinds and no output schema, the description covers all essential aspects: what it does, how each trigger type is handled, what side effects occur, and failure behavior. The high schema coverage and rich description leave no gap that an agent would need to guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial meaning beyond the schema by explaining how each parameter behaves per trigger kind (e.g., 'body' for event vs message, 'headers' for event verification, 'from' default). This enriches the schema descriptions, which are already decent but less contextual. The description goes well beyond a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Dry-run') and clearly identifies the resource (event trigger's verify config) and its behavior (verifies signature, runs the tool). It distinguishes itself from sibling tools like host.trigger.fire by framing this as a test/dry-run that doesn't expose the real URL, leaving no ambiguity about its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong context on when to use the tool (for dry-running without exposing the real URL) and explains behavior for message, event, and webhook triggers. It does not explicitly name alternative tools or state when not to use it, but the dry-run intent is clear and the sibling list includes host.trigger.fire which is implied as the non-test alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.usageAInspect

Calls, errors and duration percentiles for this tenant over a window. Pass by ("tool", "caller", or "end_user") for a breakdown instead of the plain per-tenant summary: "caller" (only valid for a tool this tenant has shared) shows which tenant called in and how much; "end_user" shows which identified end user called, with the caller tenant folded into the key when the call crossed tenants. Breakdown rows cap at 1000 per page; pass the returned cursor back to page further.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNo"tool", "caller", or "end_user" -- omit for the plain per-tenant summary.
toolNoScope the breakdown to one local tool name. Required when by is "caller".
limitNoMax breakdown rows per page (1-1000, default 1000).
cursorNoResume a breakdown after this page's last key.
windowNoTime window to summarize, e.g. "24h"/"1d"/"7d"/"30d"; default 24h ("1d" when `by` is given).
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It covers pagination limits (1000 rows per page) and cursor usage, and explains validity constraints (caller only for shared tools, end_user folding). It does not mention auth requirements or error handling, but the read-only nature is implied and the disclosed details are adequate for a usage tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense paragraph that front-loads the core purpose and then logically explains breakdown options and pagination. It is efficient and avoids redundancy, earning a high score for structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and annotations, the description covers the essential aspects: what is returned (calls, errors, percentiles), breakdown options, pagination, and constraints. It does not explicitly mention authentication or alternatives, but for a read-only analytics tool, it is fairly complete and would enable correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all parameters, but the description adds significant meaning, especially for the 'by' parameter: it explains the semantics of caller (only for shared tools) and end_user (folding caller tenant) beyond the schema's simple field descriptions. It also clarifies the cursor's role in pagination, adding value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns calls, errors, and duration percentiles for the tenant, with breakdown options by tool, caller, or end_user. It is specific about the metrics and the breakdown capability, making its purpose unambiguous 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides internal guidance on when to use breakdown versus summary, but it does not explicitly state when to choose this tool over alternatives like host.tool_logs or host.runs.list. No exclusions or alternative tool references are given, so an agent must infer selection from the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.whoamiAInspect

Return the calling tenant's identity, including key_age_s and key_rotated_at for auditing credential hygiene.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Required only when this connection carries no Authorization: Bearer header -- when both are present, the header wins.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the returned fields and implies a read-only operation via 'Return', but says nothing about authorization requirements, error behavior, or any side effects. The auth nuance (header vs tenant_key precedence) lives only in the schema, not the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states the action, the resource, and the notable return fields with rationale. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description helpfully names two key return fields, and the schema covers the auth fallback parameter fully. It is nearly complete for a simple read-only identity tool, though it could mention whether the call requires the Authorization header.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one optional parameter, so the baseline is 3. The description adds no additional meaning about tenant_key beyond what the schema already explains in detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return the calling tenant's identity') and even names the salient return fields (key_age_s, key_rotated_at). It is clearly distinguishable from sibling credential tools like host.key_rotate or host.secret_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for auditing credential hygiene' implies the usage context, but there is no explicit when-to-use, when-not-to-use, or naming of alternatives such as host.key_rotate. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

signupAInspect

Create a tenant and receive a bearer key and namespace. Unauthenticated. Recommended: pass handoff: true to receive a short-lived, single-use handoff_token instead of the raw key -- redeem it once with host.redeem to get the key, so a transcript of this call and the redeem call, if it leaks, carries a dead credential. The raw-key path (handoff omitted) stays fully supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesdisplay name
handoffNoRecommended: true to receive a handoff_token (redeem via host.redeem) instead of the raw key. Default false (raw key, unchanged).

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral load and delivers: unauthenticated access, what is returned (key + namespace), the short-lived/single-use nature of the handoff_token, the one-time redemption requirement via host.redeem, and the security rationale (a leaked transcript carries a dead credential). It also confirms the raw-key path remains unchanged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and auth state in the first two sentences, then the recommendation. The security-rationale clause is slightly long but earns its place by justifying the recommendation rather than being filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or annotations exist, yet the description names the return values (key, namespace) and the full handoff flow. It is complete enough to call correctly, though 'namespace' is left undefined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents both 'name' and 'handoff' (including the default and redeem hint), so the description's parameter content is largely redundant. 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a tenant') plus the concrete outputs ('bearer key and namespace'), and its unauthenticated onboarding role is distinguishable from operational siblings like host.redeem or host.whoami. An agent immediately knows what this tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative path (handoff vs. raw key), states the recommended option, and routes the agent to the correct follow-up tool (host.redeem, redeem once). It stops short of stating outright when this tool is required (e.g. as the first step to obtain credentials), but the guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Addedhost.share.caller_limit
    • Addedhost.share.caller_limit_remove
    • Changedhost.usage5 fields changed
      • addedInput schema / properties / by
        Added value: +{
        +  "description": "\"tool\", \"caller\", or \"end_user\" -- omit for the plain per-tenant summary.",
        +  "type": "string"
        +}
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Resume a breakdown after this page's last key.",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Max breakdown rows per page (1-1000, default 1000).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / tool
        Added value: +{
        +  "description": "Scope the breakdown to one local tool name. Required when by is \"caller\".",
        +  "type": "string"
        +}
      • changedInput schema / properties / window / description
        Previous value: -"Time window to summarize, e.g. \"24h\"; default 24h."New value: +"Time window to summarize, e.g. \"24h\"/\"1d\"/\"7d\"/\"30d\"; default 24h (\"1d\" when `by` is given)."
  2. 3 tool updates
    • Addedhost.progress
    • Addedhost.runs.part
    • Changedhost.runs.wait1 field changed
      • addedInput schema / properties / until
        Added value: +{
        +  "description": "{counter: <name>, gte: <n>} -- return as soon as that counter reaches n, even while the run is still running.",
        +  "type": "object"
        +}
  3. 9 tool updates
    • Addedhost.enduser.assertion_secret_rotate
    • Addedhost.enduser.whoami
    • Changedhost.state.delete1 field changed
      • addedInput schema / properties / end_user
        Added value: +{
        +  "description": "\"self\" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedhost.state.delete_rows1 field changed
      • addedInput schema / properties / end_user
        Added value: +{
        +  "description": "\"self\" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedhost.state.get1 field changed
      • addedInput schema / properties / end_user
        Added value: +{
        +  "description": "\"self\" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedhost.state.insert1 field changed
      • addedInput schema / properties / end_user
        Added value: +{
        +  "description": "\"self\" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedhost.state.list1 field changed
      • addedInput schema / properties / end_user
        Added value: +{
        +  "description": "\"self\" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedhost.state.query1 field changed
      • addedInput schema / properties / end_user
        Added value: +{
        +  "description": "\"self\" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedhost.state.set1 field changed
      • addedInput schema / properties / end_user
        Added value: +{
        +  "description": "\"self\" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  4. 3 tool updates
    • Addedhost.docs.index_config
    • Addedhost.docs.reindex
    • Addedhost.docs.search
  5. 3 tool updates
    • Addedhost.table.describe
    • Addedhost.table.model_set
    • Addedhost.table.models
  6. 3 tool updates
    • Addedhost.oauth.issuer_remove
    • Addedhost.oauth.issuer_set
    • Addedhost.oauth.issuers
  7. 6 tool updates
    • Addedhost.docs.delete
    • Addedhost.docs.get
    • Addedhost.docs.list
    • Addedhost.docs.purge
    • Addedhost.docs.put
    • Addedhost.docs.status
  8. 3 tool updates
    • Changedhost.trigger.replay3 fields changed
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "kind=\"webhook\" only: the trigger id (paired with row_id).",
        +  "type": "string"
        +}
      • addedInput schema / properties / row_id
        Added value: +{
        +  "description": "kind=\"webhook\" only: the inbox_<name> row id to replay (paired with id).",
        +  "type": "integer"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "run_id"
        -]New value: +[]
    • Changedhost.trigger.set5 fields changed
      • changedInput schema / properties / args / description
        Previous value: -"Arguments passed to the tool on each firing/delivery (kind=\"schedule\"/\"event\" only -- a message trigger's whole argument is the message envelope)."New value: +"Arguments passed to the tool on each firing/delivery (kind=\"schedule\"/\"event\" only -- a message trigger's whole argument is the message envelope and a webhook trigger's whole argument is the stored inbox row)."
      • changedInput schema / properties / kind / description
        Previous value: -"\"schedule\" (default), \"event\" or \"message\"."New value: +"\"schedule\" (default), \"event\", \"message\" or \"webhook\"."
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "kind=\"webhook\": letters/digits/underscore -- becomes the inbox_<name> state table each accepted delivery is stored in.",
        +  "type": "string"
        +}
      • changedInput schema / properties / verify / description
        Previous value: -"kind=\"event\": {scheme: \"hmac-sha256\"|\"hmac-sha1\"|\"token\"|\"none\", header, secret (a host.secret_set name), prefix?, timestamp_header?, tolerance_s?, allow_unverified? (required true for scheme \"none\")}."New value: +"kind=\"event\": {scheme: \"hmac-sha256\"|\"hmac-sha1\"|\"token\"|\"none\", header, secret (a host.secret_set name), prefix?, timestamp_header?, tolerance_s?, allow_unverified? (required true for scheme \"none\")}. kind=\"webhook\": a plain string, one of \"hmac\" (default; checks X-Mcphost-Signature: sha256=<hex>), \"none\", or \"stripe\" (checks Stripe-Signature the way Stripe itself signs, using the same generated secret)."
      • removedInput schema / properties / verify / type
        Removed value: -"object"
    • Changedhost.trigger.test2 fields changed
      • changedInput schema / properties / body / description
        Previous value: -"kind=\"event\": the payload to verify and run with -- any JSON value. kind=\"message\": the synthetic envelope's body text."New value: +"kind=\"event\"/\"webhook\": the payload to verify and run with -- any JSON value. kind=\"message\": the synthetic envelope's body text."
      • changedInput schema / properties / id / description
        Previous value: -"The event or message trigger id."New value: +"The event, message or webhook trigger id."
  9. 10 tool updates
    • Addedhost.channel.close
    • Addedhost.channel.freeze
    • Changedhost.channel.open2 fields changed
      • addedInput schema / properties / group
        Added value: +{
        +  "description": "A group you own (host.group.create); open its one channel instead.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "name"
        -]New value: +[]
    • Addedhost.channel.read
    • Addedhost.channel.unfreeze
    • Changedhost.tool_call1 field changed
      • addedInput schema / properties / version
        Added value: +{
        +  "description": "Pin the call to this version instead of whichever is current; see host.tool_history. An unknown version is an argument error.",
        +  "type": "integer"
        +}
    • Addedhost.tool_diff
    • Addedhost.tool_history
    • Addedhost.tool_rollback
    • Changedhost.trigger.set1 field changed
      • addedInput schema / properties / channel_id
        Added value: +{
        +  "description": "kind=\"message\": scope this trigger to one group channel's posts (host.channel.open's channel_id) instead of ordinary host.msg.send/reply deliveries.",
        +  "type": "string"
        +}
  10. 4 tool updates
    • Addedhost.changelog
    • Addedhost.channel.open
    • Addedhost.channel.post
    • Addedhost.export
  11. 1 tool update
    • Addedhost.self_offboard
  12. 8 tool updates
    • Addedhost.agent.contact_accept
    • Addedhost.agent.contact_deny
    • Addedhost.agent.contact_request
    • Addedhost.agent.contacts
    • Addedhost.agent.contacts_import
    • Addedhost.agent.mute
    • Addedhost.agent.unmute
    • Changedhost.msg.send1 field changed
      • addedInput schema / properties / urgent
        Added value: +{
        +  "description": "Mark this send urgent (default false): allowed only to accepted contacts or open recipients (refused the same as any other send otherwise), under its own urgent_per_day quota per sender/recipient pair, and bypasses a muted recipient's unread_only inbox filter (never a block or a closed contact_policy).",
        +  "type": "boolean"
        +}
  13. 4 tool updates
    • Addedhost.msg.wait
    • Changedhost.trigger.replay1 field changed
      • changedInput schema / properties / run_id / description
        Previous value: -"The event-triggered run id to replay."New value: +"The event- or message-triggered run id to replay."
    • Changedhost.trigger.set3 fields changed
      • changedInput schema / properties / args / description
        Previous value: -"Arguments passed to the tool on each firing/delivery."New value: +"Arguments passed to the tool on each firing/delivery (kind=\"schedule\"/\"event\" only -- a message trigger's whole argument is the message envelope)."
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "kind=\"message\": only fire for messages from this address (@handle or t_... namespace); omit to fire for any sender.",
        +  "type": "string"
        +}
      • changedInput schema / properties / kind / description
        Previous value: -"\"schedule\" (default) or \"event\"."New value: +"\"schedule\" (default), \"event\" or \"message\"."
    • Changedhost.trigger.test5 fields changed
      • changedInput schema / properties / body / description
        Previous value: -"The payload to verify and run with -- any JSON value."New value: +"kind=\"event\": the payload to verify and run with -- any JSON value. kind=\"message\": the synthetic envelope's body text."
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "kind=\"message\": the synthetic envelope's data payload."
        +}
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "kind=\"message\": the synthetic envelope's from address; default \"@test\".",
        +  "type": "string"
        +}
      • changedInput schema / properties / headers / description
        Previous value: -"Header name -> string value, e.g. {\"X-Hub-Signature-256\": \"sha256=...\"}."New value: +"kind=\"event\": header name -> string value, e.g. {\"X-Hub-Signature-256\": \"sha256=...\"}."
      • changedInput schema / properties / id / description
        Previous value: -"The event trigger id."New value: +"The event or message trigger id."
  14. 7 tool updates
    • Addedhost.msg.ack
    • Addedhost.msg.block
    • Addedhost.msg.inbox
    • Addedhost.msg.reply
    • Addedhost.msg.send
    • Addedhost.msg.thread
    • Addedhost.msg.unblock
  15. 4 tool updates
    • Addedhost.agent.lookup
    • Addedhost.agent.profile_set
    • Addedhost.agent.search
    • Addedhost.agent.whoami
  16. 6 tool updates
    • Addedhost.table.append
    • Addedhost.table.create
    • Addedhost.table.drop
    • Addedhost.table.list
    • Addedhost.table.query
    • Addedhost.table.schema
  17. 3 tool updates
    • Addedhost.key_rotate
    • Addedhost.redeem
    • Changedsignup1 field changed
      • addedInput schema / properties / handoff
        Added value: +{
        +  "description": "Recommended: true to receive a handoff_token (redeem via host.redeem) instead of the raw key. Default false (raw key, unchanged).",
        +  "type": "boolean"
        +}
  18. 3 tool updates
    • Addedhost.trigger.replay
    • Changedhost.trigger.set8 fields changed
      • changedInput schema / properties / args / description
        Previous value: -"Arguments passed to the tool on each firing."New value: +"Arguments passed to the tool on each firing/delivery."
      • addedInput schema / properties / dedupe_header
        Added value: +{
        +  "description": "kind=\"event\": a header (e.g. X-GitHub-Delivery) whose repeated value within 24h answers 202 with the original run id instead of running again.",
        +  "type": "string"
        +}
      • changedInput schema / properties / kind / description
        Previous value: -"Trigger kind; only \"schedule\" works today."New value: +"\"schedule\" (default) or \"event\"."
      • changedInput schema / properties / schedule / description
        Previous value: -"5-field cron expression (minute hour day-of-month month day-of-week), UTC. Supports *, lists, ranges and steps."New value: +"kind=\"schedule\": 5-field cron expression (minute hour day-of-month month day-of-week), UTC. Supports *, lists, ranges and steps."
      • changedInput schema / properties / tool / description
        Previous value: -"The published tool this schedule runs."New value: +"The published tool this trigger runs."
      • changedInput schema / properties / tz / description
        Previous value: -"P1: only \"UTC\" (or omitted) works today."New value: +"kind=\"schedule\" P1: only \"UTC\" (or omitted) works today."
      • addedInput schema / properties / verify
        Added value: +{
        +  "description": "kind=\"event\": {scheme: \"hmac-sha256\"|\"hmac-sha1\"|\"token\"|\"none\", header, secret (a host.secret_set name), prefix?, timestamp_header?, tolerance_s?, allow_unverified? (required true for scheme \"none\")}.",
        +  "type": "object"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "tool",
        -  "schedule"
        -]New value: +[
        +  "tool"
        +]
    • Addedhost.trigger.test
  19. 40 tool updates
    • Changedbilling.checkout1 field changed
      • addedInput schema / properties / plan / description
        Added value: +"Which plan to check out; default: pro."
    • Changedhost.bridge_test2 fields changed
      • addedInput schema / properties / args / description
        Added value: +"Arguments to render into the spec, same shape as a real call."
      • addedInput schema / properties / spec / description
        Added value: +"An http-kind spec, not yet published, e.g. {\"url\": \"https://api.example.com/items/{{id}}\", \"method\": \"GET\"}."
    • Addedhost.catalog.get
    • Addedhost.catalog.search
    • Addedhost.group.add
    • Addedhost.group.create
    • Addedhost.group.list
    • Addedhost.group.remove
    • Changedhost.quickstart1 field changed
      • addedInput schema / properties / kind / description
        Added value: +"Which registered kind to return a worked example for, e.g. echo, http, python."
    • Addedhost.runs.cancel
    • Addedhost.runs.get
    • Addedhost.runs.list
    • Addedhost.runs.purge
    • Addedhost.runs.wait
    • Changedhost.secret_set2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Secret name, referenced from a spec as secret.<name>."
      • addedInput schema / properties / value / description
        Added value: +"The secret value; stored AES-256-GCM encrypted, never returned."
    • Changedhost.state.delete1 field changed
      • addedInput schema / properties / key / description
        Added value: +"Key to delete from this tenant's key-value state namespace."
    • Changedhost.state.delete_rows2 fields changed
      • addedInput schema / properties / table / description
        Added value: +"Name of the declared table to delete rows from."
      • addedInput schema / properties / where / description
        Added value: +"Optional filter, same grammar as host.state.query; omit to delete every row."
    • Changedhost.state.get1 field changed
      • addedInput schema / properties / key / description
        Added value: +"Key to read from this tenant's key-value state namespace."
    • Changedhost.state.insert2 fields changed
      • addedInput schema / properties / rows / description
        Added value: +"One row (an object) or several (an array of objects), each validated against the table's schema."
      • addedInput schema / properties / table / description
        Added value: +"Name of the declared table to insert into."
    • Changedhost.state.list2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max keys to return; default 100."
      • addedInput schema / properties / prefix / description
        Added value: +"Only list keys starting with this prefix; default: all keys."
    • Changedhost.state.query4 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max rows to return; optional."
      • addedInput schema / properties / order_by / description
        Added value: +"Optional \"field\" or \"field desc\" to sort by."
      • addedInput schema / properties / table / description
        Added value: +"Name of the declared table to read from."
      • addedInput schema / properties / where / description
        Added value: +"Optional filter, e.g. \"age > 21\"; ops are != < <= > >=, clauses joined by ' and '."
    • Changedhost.state.set2 fields changed
      • addedInput schema / properties / key / description
        Added value: +"Key to write in this tenant's key-value state namespace."
      • addedInput schema / properties / value / description
        Added value: +"Any JSON value to store under key."
    • Changedhost.state.table_create3 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Table name to declare, or replace the schema of."
      • addedInput schema / properties / primary_key / description
        Added value: +"Column name (must be in schema) whose matching value replaces an existing row on insert; optional."
      • addedInput schema / properties / schema / description
        Added value: +"Column name to type map, each type one of text|integer|real|boolean|json, e.g. {\"id\": \"integer\"}."
    • Changedhost.state.table_drop1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the declared table to drop, with every row it holds."
    • Changedhost.tool_call3 fields changed
      • addedInput schema / properties / args / description
        Added value: +"Arguments to pass, validated against the tool's own args_schema."
      • addedInput schema / properties / async
        Added value: +{
        +  "description": "Run as a job instead of inline: returns {run_id, status} within ~50ms under the plan's job_max_s deadline; default false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / name / description
        Added value: +"Local name of the tool to invoke."
    • Changedhost.tool_logs2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max lines to return, most recent first; default 20."
      • addedInput schema / properties / name / description
        Added value: +"Local name of the tool whose log lines to return."
    • Changedhost.tool_publish3 fields changed
      • addedInput schema / properties / kind / description
        Added value: +"Which registered kind to publish under, e.g. echo, http, python."
      • addedInput schema / properties / name / description
        Added value: +"Local name for the new tool; must match ^[a-z][a-z0-9_]{1,40}$."
      • addedInput schema / properties / spec / description
        Added value: +"The kind-specific spec object; see host.quickstart(kind) for a filled-in example."
    • Changedhost.tool_remove1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Local name of the tool to remove."
    • Changedhost.tool_run2 fields changed
      • addedInput schema / properties / args / description
        Added value: +"Arguments to pass, same shape as a real call."
      • addedInput schema / properties / name / description
        Added value: +"Local name of the already-published python tool to debug-run."
    • Addedhost.tool_share
    • Changedhost.tool_test2 fields changed
      • addedInput schema / properties / args / description
        Added value: +"Arguments to pass, same shape as a real call."
      • addedInput schema / properties / name / description
        Added value: +"Local name of the already-published tool to dry-run."
    • Addedhost.tool_unshare
    • Addedhost.trigger.fire
    • Addedhost.trigger.get
    • Addedhost.trigger.list
    • Addedhost.trigger.pause
    • Addedhost.trigger.remove
    • Addedhost.trigger.resume
    • Addedhost.trigger.set
    • Changedhost.usage1 field changed
      • addedInput schema / properties / window / description
        Added value: +"Time window to summarize, e.g. \"24h\"; default 24h."

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    This server bridges a stdio MCP server to HTTP, allowing MCP clients that communicate over HTTP to use the server's tools. It includes a per-tool allow/deny filter for security.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes any stdio-based MCP server to the internet via HTTP/SSE transport, enabling remote agents to access MCP tools over a network.
    6 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Framework for building and running MCP servers as HTTP services. Define tools as pure Python functions, wire up with two lines, run with one command.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources