DevTune MCP
Server Details
Connect Claude, Cursor, and other MCP-compatible coding agents to DevTune AI search visibility data with the Streamable HTTP Model Context Protocol server.
DevTune exposes a Model Context Protocol (MCP) server so that AI agents can query your AI search visibility data directly. This lets agents like Codex, Claude, Cursor, and other MCP-compatible tools access your metrics and data directly.
- Status
- Healthy
- Uptime
- 99.6% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 95 tools
With 95 tools, many read surfaces overlap heavily: Agent Picks alone has summary, test, cells, history, schedule, starter test, runs, run trace, and run inspector tools that an agent could easily confuse. Citation and visibility reporting also has near-duplicates, including an explicit back-compat alias (devtune_get_citation_analysis for devtune_get_top_citation_pages) and multiple accuracy claim/contradiction list-and-get pairs. Descriptions are detailed, but the boundaries between several tools remain blurry enough to cause misselection.
Every tool uses the same devtune_ prefix followed by a snake_case verb_noun pattern (get_, list_, create_, update_, delete_, start_, review_, decide_, claim_, etc.). There are no mixed camelCase/snake_case or wildly different verb styles. Numeric and compound nouns like get_404_demand and get_ai_referrals still fit the convention.
95 tools is far beyond the reasonable 3-15 range and exceeds the 50+ threshold for extreme mismatch. The surface is not just broad but internally redundant, with many separate read endpoints for closely related reporting views. This makes the set difficult to navigate and likely to overwhelm an agent.
Read-side coverage of the AI visibility, citation, audit, traffic, outcomes, Agent Picks, and action domains is extensive. However, lifecycle coverage is uneven: many resources lack update/delete paths (actions, library items, positioning statements, prompts, competitors), and there is no prompt or competitor management CRUD. The surface is rich but leaves notable gaps for an agent attempting full domain workflows.
Available Tools
95 toolsdevtune_acknowledge_retrieval_restrictionAIdempotentInspect
Acknowledge an intentional retrieval restriction for only the exact URLs displayed in an audit finding. Requires explicit customer confirmation and actions.write. Preserves the finding, evidence and score. Never infer customer intent.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| findingId | Yes | ||
| auditRunId | Yes | ||
| confirmedIntent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as idempotent and non-destructive, and the description adds valuable beyond-annotation context: it requires actions.write, preserves the finding/evidence/score, and forbids inferring customer intent. This gives the agent a clear operational and safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load the purpose, then state prerequisites and behavior. There is no filler, redundancy, or unhelpful repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers confirmation, permissions, scope, and non-destructive behavior. It does not explicitly spell out the relationship between auditRunId and findingId or return behavior, but those gaps are minor given the self-explanatory names and idempotent annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates for the most nuanced parameters: urls must be exactly the URLs shown in the audit finding, and confirmedIntent must reflect explicit customer confirmation rather than inference. auditRunId and findingId are left to their self-explanatory names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('acknowledge'), a clear resource ('retrieval restriction'), and a precise scope ('only the exact URLs displayed in an audit finding'). This makes its purpose distinct from siblings like reconsider_retrieval_restriction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to use the tool: with explicit customer confirmation, for exact displayed URLs, and with actions.write permission. It also gives a 'never infer customer intent' guardrail, though it does not explicitly name alternative tools or contrast with reconsider_retrieval_restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_attach_outcome_urlAInspect
Attach a published URL to a completed action. Obtain human approval first. Measurement starts at the action completion date (the declared went-live date), independently of crawling or page-tracking allowance. publishedUrls replaces the published-URL list; retain existing entries. Existing measurement dates cannot be overwritten. Requires actions.write.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| actionId | Yes | ||
| changeEventId | No | ||
| publishedUrls | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that measurement is tied to the action completion date, that publishedUrls replaces the existing list (with a warning to retain entries), and that existing measurement dates cannot be overwritten. It also notes the required permission (actions.write). These are significant behavioral details that an agent needs to know before calling this mutation tool. It does not mention reversibility or idempotency, but the coverage is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and front-loaded with the core action. Each sentence adds essential information: the action itself, the human approval prerequisite, the measurement timing nuance, the replacement behavior for publishedUrls, the immutability of existing dates, and the permission requirement. There is no fluff or redundancy; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with four parameters, no output schema, and no annotations, the description covers key contextual aspects: prerequisites (human approval), behavioral details (measurement timing, list replacement, immutability), and permissions. It does not describe return values or error conditions, but without an output schema these may not be critical. The description is adequate for an agent to invoke the tool correctly, though it could mention what happens if the action is not completed or if the URL already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It specifically explains the semantics of publishedUrls (it replaces the list and existing entries must be retained), which is valuable. However, it does not explain the semantics of actionId, url, or changeEventId beyond the obvious from names and context. Since the schema has no descriptions, the description could have elaborated on these parameters, especially changeEventId, but it covers the most complex one. It adds partial value but not full compensation for the zero coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Attach a published URL to a completed action'), clearly stating what the tool does. It distinguishes itself from the many 'get_', 'list_', and 'update_' siblings by focusing on the unique action of attaching a URL to a completed action. No other sibling covers this operation, so purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: it instructs to 'Obtain human approval first' and clarifies that measurement starts at the completion date, which are important prerequisites and behavior notes. However, it does not explicitly mention when to use this tool versus alternatives (though no direct alternatives exist), nor does it state when not to use it. The guidance is helpful but not exhaustive regarding selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_claim_content_changeBInspect
Claim a detected change as a completed measured action. Obtain human approval first. Re-claim restores the original action and measurement without overwriting their content. Returns a conflict when the page has another measurement completed within 14 days of the change, or a concurrent measurement update requires a retry. Requires actions.write.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| description | Yes | ||
| changeEventId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavioral traits. It reveals the mutation nature ('claim', 'restores'), explains the re-claim side effect (preserves original content), lists conflict cases, and states the required permission (actions.write). This adds significant context beyond the schema, though it stops short of detailing the success response or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no filler. The primary purpose is front-loaded, and the most consequential behavioral nuances (re-claim, conflicts, permission) are compactly conveyed. Minor density around the conflict sentence does not hurt clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and three undocumented parameters, the description omits essential information: meaning of each parameter, what a successful response looks like, and how the 'claim' materially alters state beyond marking. It covers prerequisites and failure modes but is far from complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides no explanation of the three parameters (title, description, changeEventId). An agent cannot determine what each field represents or how they relate to the change being claimed, leaving a critical gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Claim a detected change') and defines it as marking a change as a completed measured action. It distinguishes the tool's purpose from that of siblings like devtune_unclaim_content_change by describing the claim and re-claim behavior explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a prerequisite ('Obtain human approval first') and describes conditions under which a conflict arises (14-day rule, concurrent update), implying when the tool is appropriate. However, it does not explicitly contrast with alternatives such as unclaim or other action tools, leaving some selection guidance to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_create_prompt_actionAInspect
Create or reuse an action from a tracked prompt. Only set generateBrief when the customer requests metered brief generation (reserves 2 credits). Saves the action even when brief generation fails. Does not publish content.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| promptId | Yes | ||
| targetUrl | No | Existing page to improve. Omit to create new content. Locked pages cannot be targeted. | |
| description | Yes | ||
| generateBrief | No | Defaults to false. Also queue a brief using content credits. | |
| acknowledgedHighStakes | No | Set true only after the customer explicitly acknowledges changing a high-stakes target page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses two key traits: saves the action even when brief generation fails, and does not publish content. It also mentions credit reservation for generateBrief, adding cost implications. This is substantial value beyond the schema, though it does not cover all potential edge cases (e.g., idempotency of reuse).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: the first states the core purpose, the second gives a critical parameter guideline, and the third discloses behavior. It is front-loaded with the primary action and contains zero fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create-action tool with 6 parameters and no output schema, the description covers the purpose, key parameter usage, and critical failure/success behavior. It lacks details on the response format or what 'reuse' entails, but given the simplicity and absence of an output schema, it is adequately complete. The description does not overpromise or leave the agent guessing on essential call decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description adds meaningful context for generateBrief by clarifying the credit cost and the condition under which it should be set, complementing the schema's default and queue description. The other parameters (promptId, title, description) are self-explanatory strings, and targetUrl already has a schema description. The description effectively compensates for the partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb-resource pair: 'Create or reuse an action from a tracked prompt.' It identifies the input source (tracked prompt) and distinguishes from sibling tools like devtune_get_actions or devtune_get_prompt_actions by implying a write operation. The additional behavioral notes (saves even on failure, does not publish) further clarify its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit conditional guidance: 'Only set generateBrief when the customer requests metered brief generation (reserves 2 credits).' It also clarifies that saving occurs even if brief generation fails and that content is not published, implying publishing is a separate step. However, it does not name alternative tools or state when not to use this tool, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_create_webhookAInspect
Create a project webhook for supported events at a public HTTPS endpoint. Requires webhooks.write. Returns its signing secret once; store it securely. No automatic retries.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| events | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the webhooks.write scope requirement, the one-time-only return of the signing secret ('store it securely'), and the absence of automatic retries. These are exactly the traits an agent needs before calling a non-idempotent mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler; the core action leads and the security/retry caveats follow. Slightly terse on request-shape details but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter create tool with no output schema, the description covers the return value (signing secret, once) and key constraints. It leaves out duplicate-URL behavior and error/validation semantics, which are minor gaps here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it only partially does: 'public HTTPS endpoint' adds a real constraint on url beyond format:uri, but it omits the 2048-char limit, and 'supported events' is redundant with the enum already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a project webhook') plus scope constraints (public HTTPS endpoint, supported events), which is enough to distinguish it from delete_webhook, list_webhooks, and rotate_webhook_secret. It does not, however, explicitly name or contrast any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool creates but gives no when-to-use guidance, no exclusions, and no pointers to the sibling webhook tools (rotate_webhook_secret, delete_webhook, list_webhooks). The 'Requires webhooks.write' line is a prerequisite, not usage selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_decide_dex_handoffBInspect
Confirm or cancel one pending specialist-agent handoff in a Dex conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | ||
| threadId | Yes | ||
| handoffId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Confirm or cancel' implies a state-changing mutation, but the description does not disclose what confirming does (does it dispatch a specialist, consume the handoff?), what canceling reverts, whether the operation is idempotent, or what happens if the handoff is not actually pending. This is a consequential decision tool with no behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no filler or repetition. It is appropriately sized, though the brevity comes at the cost of missing parameter and behavioral detail. Concise but not comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three required parameters, no output schema, and zero annotations, the description is inadequate. It does not explain the parameters, the consequences of each decision value, or any prerequisites (e.g., the handoff must exist and be pending). An agent would not know the full effect of invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly maps to the decision enum ('confirm or cancel' corresponds to the decision property) and 'one pending' hints at handoffId, but threadId is entirely unexplained, and there is no clarity on how the three parameters relate. The description adds only minimal value over the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Confirm or cancel') and a specific resource ('one pending specialist-agent handoff in a Dex conversation'). It clearly distinguishes from siblings like devtune_list_dex_handoffs (which lists rather than decides) and devtune_start_dex_conversation. An agent can tell what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in a Dex conversation' gives some contextual anchor, and 'pending' implies it is used after handoffs have been surfaced (e.g., via list_dex_handoffs). However, it provides no explicit guidance on when to use this tool versus alternatives, and no exclusions or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_decide_dex_memoryCInspect
Save or dismiss one durable memory offer from a Dex conversation. Saves verify the text against the persisted agent event.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| offerId | Yes | ||
| decision | Yes | ||
| threadId | Yes | ||
| offeredText | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions that saves verify the text against the persisted agent event, which is helpful, but it does not disclose side effects of dismissing, idempotency, reversibility, permission requirements, or what happens on repeated calls. This is a significant gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core purpose and a behavioral note. There is no fluff or repetition. It is appropriately sized for the information it conveys, though it omits important details that are penalized elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 required parameters, no output schema, and no annotations, the description is far from complete. It does not explain parameter semantics, usage context, or expected behavior beyond the basic action. An agent would struggle to invoke it correctly without external knowledge, making the definition inadequate for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It does not mention any of the five parameters (taskId, offerId, decision, threadId, offeredText) by name or explain their roles. The only hint is the verification note, which loosely relates to offeredText, but it is not explicit. The agent has no guidance on what values to provide or how they interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (save or dismiss) and a distinct resource (durable memory offer from a Dex conversation), which distinguishes it from sibling tools like devtune_decide_dex_handoff. It also adds a meaningful behavioral detail about verification on save, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, when to choose save vs dismiss, or direct the agent to other tools in edge cases. The usage context is only implied by the name and the action, which is insufficient given the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_delete_dex_threadAInspect
Delete your private Dex chat after stopping its live run. Billing and audit records are retained. Requires a user-attributed API key owned by the chat creator.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly indicates the destructive nature of the operation, notes that 'Billing and audit records are retained,' and specifies the ownership/auth prerequisite. This is strong transparency for a delete operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no filler. The primary action is front-loaded, followed by key retention and authorization details. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete tool with no output schema and no annotations, the description covers the essential context: what is deleted, when it can be deleted, what is retained, and who is allowed to delete it. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but there is only one parameter, threadId, whose UUID format is documented in the schema. The description adds meaningful context by specifying 'your private Dex chat' and the ownership requirement, even though it does not explicitly name threadId as the target.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action and resource: 'Delete your private Dex chat'. It clearly distinguishes this deletion tool from sibling tools like devtune_list_dex_threads, devtune_rename_dex_thread, and devtune_send_dex_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it should be used 'after stopping its live run' and only with 'a user-attributed API key owned by the chat creator.' It does not explicitly name alternatives or when-not-to-use conditions, but no sibling deletion tool exists, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_delete_webhookADestructiveIdempotentInspect
Deactivate a project webhook. Returns {deleted:true}, including for an already inactive subscription. Unknown or foreign IDs return not_found. Requires webhooks.write. No automatic retries.
| Name | Required | Description | Default |
|---|---|---|---|
| webhookId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds genuinely new context: the exact return payload ({deleted:true}), not_found for unknown/foreign IDs, the required webhooks.write permission, and the no-automatic-retries policy. That is meaningful behavioral detail beyond the structured hints, though it stops short of explaining whether the operation is reversible or recoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, dense sentences with the action front-loaded and no filler. Each sentence carries distinct, actionable information (return shape, edge case, error case, permission, retry policy).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, the description covers the return value, idempotent behavior, error semantics, permission requirement, and retry policy. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never explains webhookId format, source, or syntax. The only parameter insight is indirect — 'foreign IDs return not_found' hints that IDs are project-scoped — which is thin compensation for a completely undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Deactivate a project webhook'), and within the webhook sibling group (create_webhook, list_webhooks, rotate_webhook_secret) the action is unmistakable. It also usefully signals that this is a soft deactivation rather than a hard purge, which the tool name 'delete' alone would not convey.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and the required webhooks.write scope, and the edge-case note (already-inactive still returns deleted:true) helps an agent decide it is safe to call. However, no alternative is named and no explicit when-to-use/when-not condition is stated, so the agent must infer from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_generate_action_briefAInspect
Trigger brief generation for a specific action. Returns whether the brief was already ready or has been queued or is already generating in the background.
| Name | Required | Description | Default |
|---|---|---|---|
| actionId | Yes | UUID of the action to generate the brief for. | |
| briefStyle | No | Optional brief style override. Defaults to best_fit and must respect project content preferences. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It clearly reveals that the tool may trigger background processing and reports whether the brief is ready, queued, or already generating. This gives meaningful behavioral context, though it does not mention 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the trigger action and then the value of the return across three states. No additional filler or redundant restatement appears.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple trigger tool with two documented parameters and no output schema, the description is sufficient for an agent to understand the invocation's effect and the possible return state. It covers the asynchronous background aspect that is not present in the structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is a 3. The description does not add further parameter-level semantics beyond the schema's UUID and style details, which is acceptable because the schema already documents both parameters completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the specific action (brief generation for an action) and clarifies the return semantics: it returns whether the brief is ready, queued, or already generating. This sufficiently distinguishes it from siblings like devtune_get_action_brief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this tool versus devtune_get_action_brief or other action-related siblings. The status-oriented return implies usage for requesting or checking generation, but no alternative or condition is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_404_demandAInspect
Get project-scoped 404 Demand from the current materializer window, separated into credible content-intent clusters and likely scanner or technical noise, with materialization state, machine-traffic sensor coverage, and inferred project relevance. Clusters prioritize project fit before request volume; unrelated demand remains visible but is excluded from automatic action suggestions. Optional hosts list each cluster's request counts for the 20 busiest request hosts across the project's 404 Demand window; a null host counts requests whose host is unknown or outside those hosts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 meaningful behavior: materialization state, machine-traffic sensor coverage, inferred project relevance, the volume-vs-fit ranking of clusters, and that unrelated demand is shown but excluded from automatic action suggestions. It stops short of stating permission/auth or freshness guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the opening clause, and each subsequent clause adds distinct information (cluster separation, ranking rule, action-suggestion exclusion, hosts semantics). It is dense and jargon-heavy but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a zero-param read tool with no output schema and no annotations, the description supplies a solid account of what comes back and how it is organized. It could say more about the meaning of the 'materializer window' and completeness/freshness of the data, but it is largely sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero input parameters (empty schema, additionalProperties: false), so the baseline is 4. The 'optional hosts / null host' passage reads as explanation of the returned hosts breakdown rather than a missing input parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get project-scoped 404 Demand') and immediately characterizes the content (intent clusters vs scanner/technical noise). It is a well-defined data-retrieval tool, though it never names a sibling or explicitly contrasts itself with adjacent analytics tools like get_content_gaps or get_page_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use statement, and no alternatives are referenced. Usage is only implied by the scoped purpose (pull 404 demand analytics for the current window). Adequate but leaves routing between analytics siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_accuracyBRead-onlyIdempotentInspect
Read Accuracy over 30 or 90 days: how many claims AI answers made about the product were checked against its own site, and how each came out. totals counts facts (claims checked) by outcome: match, contradict (the answer disagrees with the site), site_conflict (the site disagrees with itself), not_on_site (the site does not say), stale, unjudged and dismissed; match_rate is null when nothing was judged. totals.contradict counts contradicted claim groups (distinct AI wordings); contradiction_rows counts the site sentences they contradict, as devtune_list_accuracy_contradictions lists them, and prior_contradiction_rows the same count for the previous window when it compares. unquoted_contradictions counts contradictions whose claim quotes no sentence of the site, which no contradiction row lists. prior_status says whether the previous window of the same length (prior_window) compares: when it is comparable, prior_totals holds its totals, so report the change; when it is incomplete or method_changed, prior_totals is null and no change should be stated. method_changed includes different question or sampling versions, or mixed sampling within either window; sampling_versions lists 1 for one answer per prompt/platform/week and 2 for up to three. weekly gives the trend by Monday-UTC week and platforms the per-platform split, where a claim seen on several platforms counts on each. coverage counts the answers eligible, sampled, checked, with no claims, failed and pending; when facts is zero, pending answers mean the checks have not finished, not that the answers were accurate. series_started_on is null until the first answer is sampled.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | ||
| window | No | ||
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly/idempotent/non-destructive), but the description adds real behavioral context: null semantics (match_rate null when nothing judged, prior_totals null when incomparable), the method_changed/prior_status comparison gate, and the pending-answers trap when facts is zero. This is well beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the purpose well, but the remainder is one massive run-on paragraph blending field semantics into a single blob with no separation. Given no output schema the content is relevant, but the structure makes it hard to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and high domain complexity, the description carries the return-value burden thoroughly: totals breakdown, prior-window comparison rules, weekly trend, per-platform split, coverage states, and series_started_on. Only the intent/platform filter parameters are left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning, yet it never mentions the intent parameter at all and only loosely implies window (30/90 days) and platform (per-platform split, not as a filter). Two of three parameters are effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reading Accuracy (claims checked against the product's own site) over 30 or 90 days, with aggregate totals and rates. It is distinguishable from the singular devtune_get_accuracy_claim and devtune_list_accuracy_contradictions siblings, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the tool is for aggregate accuracy reporting over a window and it names devtune_list_accuracy_contradictions as the source of individual rows. There is no explicit when-to-use-this vs. the claim/contradiction-level siblings, so the agent must infer the selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_accuracy_claimARead-onlyIdempotentInspect
Read one Accuracy claim group (groupId, the group_id from devtune_list_accuracy_claims) over the same window and filters: the claim, its outcome, the platforms and number of answers that made it, the latest answer with the site page, any other page and the evidence it was judged against, up to 20 other answers, the brand's own pages the answers cited with how many cite each, and the team's active decision. outcome and claim are null when the group made no answer in the window and filters. A group id outside the project is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | ||
| window | No | ||
| groupId | Yes | ||
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent safety, and the description adds genuinely new behavioral context: the null semantics for outcome and claim when no answer exists in the window/filters, and the refusal of a group id outside the project. No output schema exists, so this return-payload enumeration and error disclosure carry real weight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and identifier source are front-loaded, then the payload is enumerated. The middle run-on list of return fields is dense and slightly sprawling, but every clause carries information rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read tool with no output schema, the description thoroughly enumerates the response shape, covers the empty-window null case, and states the cross-project error. The only material gap is the undocumented 'intent' parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must annotate all four parameters. It explains groupId's origin and implies window/platform via 'same window and filters', but never documents the 'intent' parameter, and gives no format or default detail for the window enum. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Read one Accuracy claim group') and immediately routes to the sibling that supplies the identifier, distinguishing it from devtune_list_accuracy_claims and devtune_get_accuracy. An agent can tell what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear prerequisite and scope constraint ('the group_id from devtune_list_accuracy_claims', 'over the same window and filters'), which effectively tells the agent when and how to call it. It stops short of naming when to prefer devtune_get_accuracy or devtune_get_accuracy_contradiction instead, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_accuracy_contradictionARead-onlyIdempotentInspect
Read one Accuracy contradiction row (sentenceKey, the sentence_key from devtune_list_accuracy_contradictions or from a contradiction in devtune_list_accuracy_claims) over the same window and filters: the site sentence and its page, the row's counts, platforms and open action, and every AI wording that contradicts it, active ones first, each with its answers, platforms, latest contradicting answer excerpt and prompt, and the decision that dismissed it. wordings is empty and site_page null when the row has no wording in the window and filters. A malformed key is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | ||
| window | No | ||
| platform | No | ||
| sentenceKey | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), and the description adds substantial behavior beyond them: the full returned shape, ordering ("active ones first"), the empty/null sentinel behavior when no wording matches, and an explicit error contract ("A malformed key is refused").
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the two trailing sentences handle edge cases tersely. The middle sentence is a long run-on enumerating the return shape, but with no output schema every clause carries real information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param, zero-coverage, no-output-schema tool, the description covers return contents, ordering, null/empty semantics, key provenance and error handling. The remaining gap is the meaning of intent and platform, which neither the schema nor the description explains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it does well for sentenceKey (source tools, format implied) and gestures at window/filters via "same window and filters." However intent and platform are never explained, and the enum values for window are left to the schema, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Read one Accuracy contradiction row") and immediately scopes it against siblings by citing devtune_list_accuracy_contradictions and devtune_list_accuracy_claims as the sources of the key. An agent can distinguish this single-row reader from the list tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states where the sentenceKey comes from and that it must be read "over the same window and filters" as the list call, which is clear procedural context. It stops short of an explicit when-not or an alternative-tool exclusion, so it lands just below the top.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_action_briefAInspect
Get the stored brief for a specific action, including readiness status, whether research was cut short, settled credits used, generated timestamp, and the brief when one is ready. briefFormat 2 briefs return briefMarkdown (the brief, then an Evidence section that is context, not specification) plus the structured brief (task, outline, facts with sources, each project or external fact carrying sourceRef, the supplied project data ref or source packet URL it restates, and sections, the zero-based indexes of the outline sections that use it; briefs written before refs or sections omit them; leaveOut, rules, doneWhen) and evidence objects; a draft states only product facts on the facts list. The optional inboundLinkPlan names up to three related-page edits with source sections, excerpts, suggested anchors, a target and a pinned crawl generation. edgeStatus not_observed_in_generation is a suggestion based on that generation, not a measured missing or live link. Current locked or retiring source and target pages have their edits removed on read. Stale or unverifiable current brief inputs omit the plan while preserving the stored target brief. The single-page drafter leaves related edits outstanding for human approval and a fresh crawl. briefFormat 1 briefs return Markdown only and cannot be drafted from until regenerated. When claim checks are enabled for the project and one has run, claimCheck reports how the brief's facts (or, for a format 1 brief, its claim references) held up against the project's owned content, searched for each claim: coverage (claims checked, claims whose owned-content search failed, and claims set aside by source type) and a judgment per claim with its source (a site page with its URL, the project profile, DevTune's own analysis, an external source, or general knowledge), the pages a claim that is not supported was judged against and the quoted passage for a confirmed contradiction. It annotates the brief and never changes it.
| Name | Required | Description | Default |
|---|---|---|---|
| actionId | Yes | UUID of the action to load the brief for. |
TDQS
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 extensively: it discloses that locked/retiring pages have edits stripped on read, that stale inputs omit the plan while preserving the stored brief, that edgeStatus is a suggestion not a measurement, that format 1 briefs cannot be drafted from, and that claimCheck annotates but never changes the brief (read-only semantics).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, which is good. However, the remainder is an extremely dense run-on covering formats, edge cases, and claim checks, making it hard to parse; much is genuinely necessary because there is no output schema, but the structure could be broken into digestible units.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a single simple input, the description must carry the return-value burden, and it does: it details both brief formats, the structured brief fields, evidence objects, the inboundLinkPlan, and claimCheck contents. An agent has enough to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (actionId) with 100% schema description coverage, so the schema already documents it fully. The description adds no extra meaning about the parameter, which matches the baseline of 3 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb+resource ('Get the stored brief for a specific action') and enumerates what the response contains (readiness status, cut-short research, credits, timestamp, the brief). It is clearly distinguishable in spirit from devtune_generate_action_brief and devtune_get_action_draft, but it never names those siblings or explicitly contrasts retrieval with generation/drafting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative-selection guidance; the text dives straight into return-shape details. At best the agent can infer 'read a brief' from the purpose, but nothing tells it whether to call this versus generate_action_brief or get_action_draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_action_draftAInspect
Get an action's content draft, for accounts with content drafts. draftKind is the draft the action takes now: page (the Page Drafter writes a whole new page for a create action) or section_edits (the Section Editor writes a change list for a refresh action), with agentKey naming the agent; both are null for an action that takes no draft. briefState says whether its brief is ready (outdated: written before the current brief format, so it must be regenerated to draft), and targetPage, for section edits, is the page edited (the action's own target, else its ready brief's page on an owned domain), whether it is locked, and briefRecommendedUrl when the brief recommends a different page. models lists the models a run can use with each one's per-run credit estimate. run is the draft run in flight, or the last one that ended without a draft. versions lists the current draft and up to 10 earlier versions, newest first: each has its draftKind, title, contentMarkdown (the page, or the change list rendered as markdown), changeList for section edits (each change's heading, current text, proposed text and reason), status (current for the draft the action shows, superseded otherwise), timestamps, briefId and runId, and factCheck: its status (checked, partial or unavailable), the sentences still flagged, each with its reason (unsupported or contradicted by the customer's own site, not_in_brief: a product fact the brief's facts list does not state, with siteJudgment saying whether the site states it, contradicted_by_source: a claim about another product that an external fact on the brief's facts list contradicts, with that fact as the brief words it and the source it cites, or competitor_link: the sentence links to one of the project's configured competitors, with the link in linkUrl) and the pages it was judged against and any contradicting quote, how many were flagged before and after the agent's fix pass, and coverage: how many sentences the check reviewed as possible claims (questions and short fragments are not counted), and of those how many were settled (restated from the brief's facts list, judged against the site, or contradicted by a source on the brief's facts list), unsettled, not checked, third-party claims (about another product, company, standard or source) read but not verified (notVerified), set aside as guidance, examples, headings or opinion, or marked [Needs source], with hasGap true when any were not judged and settled. current is the current version. Drafts are never published by DevTune.
| Name | Required | Description | Default |
|---|---|---|---|
| actionId | Yes | UUID of the action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers substantial behavioral context: draftKind semantics, briefState staleness, run-in-flight behavior, and the guarantee that 'Drafts are never published by DevTune.' It omits operational traits such as permissions, error behavior, or pagination, but the behavioral disclosure is far above a bare getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the remainder is a single very dense run-on paragraph covering every nested field, which is hard to parse. The detail largely earns its place because no output schema exists, yet the lack of structure works against readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description must document the return shape, and it does so extensively (versions, factCheck states, coverage, current). For a complex nested read tool this is close to complete, though the field documentation is dense and could be organized better.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single UUID parameter, so the schema already documents actionId fully. The description adds no syntax or meaning for the input 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause gives a specific verb and resource ('Get an action's content draft'), which clearly separates it from siblings like devtune_get_action_brief or devtune_get_actions. It does not name an alternative tool explicitly, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The qualifier 'for accounts with content drafts' implies scope of applicability, and a reader can infer you call this to inspect an existing draft. However, it never states when to prefer this over get_action_brief or when a draft won't exist, and no alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_action_eventsAInspect
List who changed an action's title, owner, channels, description or published pages, newest first. Each event has a kind (renamed, owner_set, owner_cleared, channels_changed, description_changed, published_page_added or published_page_removed), from and to values (owners as user ids, channels as arrays, pages as URLs), the actor (a user with their id and name while they are still a member, an api_key with its key id, or system for DevTune) and createdAt. Lifecycle moves such as accepting, going live or archiving are not events; read them from devtune_get_actions. History starts when recording began, so older edits are not listed. Pass nextCursor back as cursor for the next page.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | nextCursor from the previous page. | |
| actionId | Yes | UUID of the action. | |
| pageSize | No | Events per page (1-100). Defaults to 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses the return shape (kind, from/to values, actor, createdAt), the actor variants (user, api_key, system), the limitation that older edits predate recording, and pagination behavior. This is substantial behavioral context beyond what any structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and scope, then progressively adds kinds, actor details, exclusions, and pagination. It is a single dense paragraph but every sentence carries information (event kinds, exclusions, history boundary, pagination), so little is wasted despite the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must explain return values and constraints — and it does: event kinds, from/to representations, actor types, createdAt, the history boundary, and pagination. An agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds usage meaning for cursor ('Pass nextCursor back as cursor for the next page'), which links the output field to the input parameter and is not stated in the schema. pageSize and actionId semantics are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (who changed an action's fields) and enumerates the exact fields tracked (title, owner, channels, description, published pages) with an explicit ordering (newest first). It also distinguishes itself from devtune_get_actions by excluding lifecycle moves, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-not with an alternative: lifecycle moves (accepting, going live, archiving) are not events and must be read from devtune_get_actions. It also warns that history only begins when recording started, setting expectations. It lacks a positive 'use this when...' framing, but the exclusion routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_actionsBInspect
Get the actions for a project. status is suggested (DevTune proposed it, nobody has decided), accepted (the team wants it done), live (the page is published and its measurement window is open) or archived (taken off the queue by the team); blocked is true on accepted work the team has marked blocked. Suggested actions expose the same nullable opportunity percentile, percentileStatus and percentileScope as REST (signal_family compares like signals; families are interleaved), Reach, Gap, Confidence, family (including citation defence), estimated state, measured facts, and locked-page steering source. A null percentile carries percentileStatus insufficient_reach when reach is null, sensor coverage is absent, or estimated reach is zero. It carries percentileStatus no_measured_gap when every product in the family is zero and reach is non-null and not estimated-zero. Numeric percentiles omit the status. percentilePoolSize counts rankable candidates in the full family before selection or pagination. A size of one means Only ranked opportunity of this type, never Top 1%. Older records omit the pool size; do not infer singleton status from percentile 100 or the returned page. Positive-product candidates are seated before zero-product candidates. Citation-defence normalization is matched_cohort_executions when the cohort rollup is published or window_executions when the matched cohort is not published yet. Both compare citations per successful prompt execution; matched-cohort loss reports one-window-only composition changes and states matched coverage of earlier citations. Suggested actions come first and follow persisted portfolioRank ascending, nulls last, and no action exposes a legacy scalar score. Context detail includes interventionExplanation, the same stored page decision as the app and REST, or null for legacy/manual rows without a shape. It includes selectedMove, buyerQuestions, source, auditFindings, nearby alternative and reason, limitations, protectedPageUrls and human_review_required approval. A recorded question can have null retained text; this does not mean no question was tracked. Refactor reorganizes an existing answer; enrich adds missing or outdated detail, both using refresh storage. Read stored_snapshot as unvalidated against current pages/questions, even for accepted, live or restored actions. Retargeting and consolidation are not selected moves: the stored evidence does not establish a new target question or justify combining pages. Limitations report only gaps relevant to the action; Creation is the stored choice, not a measurement that no existing page fits. Preserve unique facts and distinct intent; never delete pages or change protected pages. No edits, redirects or relinks have executed. Context metrics may include ownedPageMatches (at most forty) and ownedPageMatchCount (total retained checks). A no_match covers only the at-most-twelve-page shortlist; coverageIssues records unjudged inventory limits and source failures. It never proves that no page exists elsewhere. An incomplete check is not negative evidence, and checkedAt is omitted for an unstarted or undated check. Context detail includes topEvidence.redirectTargets for missing-page demand: up to three existing same-site URL and title candidates to check before redirecting, or an empty list. Candidates never change the action rank. Context detail includes bounded audit assessment dates, factor checks and prompt-coverage limits, plus structured Google eligibility dimensions when entitled live evidence is available. Every action carries assignedTo (its owner's user id, null when unassigned) and ownerName; change either with devtune_update_action. followUpOf (actionId, title, shippedAt) names the earlier action that shipped this page, null when there is none; read its result from the outcomes ledger. The intervention explanation records the original stored recommendation; current brief motion and the offered drafter take precedence when the brief chooses another approach. Question and Audit-finding lists disclose truncation through buyer_questions_truncated and audit_findings_truncated limitations. Context detail lists mergedSuggestions (label, mergedAt, confidence): reworded suggestions the duplicate check merged into the action as the same fix, hidden from the queue while the action holds its decision. Splitting one back out is done on the action's page in the app; this tool cannot split.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number. Defaults to 1. | |
| source | No | Filter Actions and Outcomes by source; both is the default | |
| status | No | Filter by action status. Omit it to get every status. | |
| channel | No | Filter by recommended channel. | |
| pageUrl | No | Filter by target page URL before counts and pagination. Matches host and path, ignoring scheme, www, query, fragment and trailing slash. | |
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| priority | No | Filter by priority level. | |
| detailLevel | No | Response detail level. summary is default. context adds bounded why-now context, available opportunity evidence, metrics, top evidence with structured Google eligibility when available, the external pages winning its prompts (competitor and third-party, in the order briefs study them), brief readiness, and follow-up links. |
TDQS
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 substantial behavioral traits: read-only intent ('No edits, redirects or relinks have executed'), ordering (portfolioRank ascending, nulls last), truncation limitations, and null-handling for percentiles. It stops short of permissions, rate limits, or pagination mechanics beyond the ordering rule.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body is an enormous wall of domain jargon about return-value semantics that dwarfs the tool's actual operation. Much of it reads like a data dictionary rather than invocation guidance, and the sheer length hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter read tool with no output schema, the description is more than complete on return semantics—status meanings, percentile/status null rules, truncation flags, and ordering are all covered. If anything it is over-complete, but nothing an agent needs to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all eight parameters. The description nonetheless adds meaning beyond the schema by explaining the four status values and the detailLevel 'context' payload contents, which helps an agent interpret enum choices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Get the actions for a project' states a clear verb and resource. However, it never differentiates this general actions endpoint from close siblings like devtune_get_agent_picks_actions or devtune_get_prompt_actions, and the purpose is buried under a sprawling data-semantics dump.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use versus alternatives guidance. The only routing hints are incidental ('change either with devtune_update_action', 'this tool cannot split'), which describe adjacent mutations rather than when to call this read tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_adoption_metricsAInspect
Get SDK/package adoption trends including npm weekly downloads and GitHub stars over time. Tracks adoption for your primary domain and competitors.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | Filter by specific metric type. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the data sources and competitive scope, but it does not mention default behavior (e.g., 30-day window), output format, or any constraints such as data availability. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action and metrics first, and the scope in the second. No filler or repetition of parameter names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two optional parameters and no output schema, the description covers purpose, metrics, and scope. It could mention the output shape or default window, but nothing critical prevents a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by mapping the metric enum to 'npm weekly downloads' and 'GitHub stars.' It does not add detail on the windowDays parameter, but the schema already explains the allowed values and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('SDK/package adoption trends') and concrete metrics ('npm weekly downloads and GitHub stars'), so an agent knows exactly what the tool returns. It also states the competitive scope, which distinguishes it from other read-only analytics tools among the many devtune_get_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'adoption trends' implies when the tool is appropriate, and the scope ('primary domain and competitors') is useful context. However, it gives no explicit when-not-to-use guidance or alternatives, even though sibling tools like devtune_get_competitive_position and devtune_get_visibility_summary could overlap in an analytics context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_actionsARead-onlyIdempotentInspect
Read 100 Agent Picks Actions with rendered titles and descriptions, their loss rationale, baseline cell pick rate (every run that picked the tool, a stated pick included; re-tests compare the same rate) and Wilson 95% range, latest paid re-test status and credit accounting, and the measured Outcomes result. Reason Actions expose the actual fetch URL/status or classifier key and every covered cell, with aggregate evidence rather than a first-cell claim. Follow next_offset until null. Incomplete coverage is explicit. Shipping alone is unmeasured; only queued or running re-tests are still_measuring; no modelled wins. Re-tests are estimated and confirmed in the app. Requires Agent Picks and visibility.read.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| actionId | No | Read one Action and its re-test result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses pagination (next_offset until null), coverage semantics (incomplete coverage explicit, aggregate evidence not first-cell), re-test state semantics (only queued/running are still_measuring; shipping alone is unmeasured; re-tests estimated and confirmed in the app), and credit accounting. That is substantial behavioral context, though it is stated as bare assertions rather than organized guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, and every clause carries domain meaning, but it is one long run-on paragraph of stacked particulars and jargon (Wilson 95% range, still_measuring, credited accounting) with no grouping, which hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full return-shape burden and does so in detail (rendered titles/descriptions, loss rationale, pick rate and Wilson range, re-test status, Outcomes), plus pagination and required scopes. It is close to complete for this complex read tool, though the offset/next_offset relationship and the single-action mode could be stated more cleanly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: actionId is documented ('Read one Action and its re-test result'), while offset is undocumented in the schema. The description partially compensates by describing the pagination contract ('Follow next_offset until null'), giving offset usable meaning, but it is borderline rather than a full coverage of both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (100 Agent Picks Actions) with a clear scope, and the dense field list (titles, descriptions, loss rationale, pick rate, re-test status, Outcomes) makes it distinguishable from siblings like get_agent_picks_cells or get_agent_picks_summary. It is clear what the tool returns, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Follow next_offset until null' gives pagination guidance, and 'Requires Agent Picks and visibility.read' states a prerequisite. However there is no when-to-use vs when-not, and no routing to the alternative Agent Picks tools an agent would weigh against this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_cellsARead-onlyIdempotentInspect
Read per-model cells for 1 to 8 distinct project-owned tests from test history. Returns coverage, the shared loss verdict, own-led status, fallback guesses and none/unclassified/other-tool run counts, plus per-tool picks, pick rates and Wilson ranges, with stated_picks, installs and the install rate and range beside each pick rate (null for built_its_own and no_provider). Each test’s install_rate_hidden_reason is no_installable_tool when none of the test’s tools has a package, config name or import pattern to install (a hosted dashboard): every install_rate is then null, not 0; report the pick rate alone and say why. Each test includes status. Non-completed tests retain coverage only: tools are unmeasured and measurement counts, rates, ranges and verdicts are null. Each test includes comparison_key for its category and recorded requests, job line and job signals. With no recorded request metadata, the key covers only category_id. Compare equal keys only and break history lines when they change. Each test includes outcome_counts_available; its outcome counts are null when completed run detail is unavailable. Unmeasured tools have measured false and null rates. Completed counts and displayed rates include fallback guesses; loss verdicts exclude them. Requires Agent Picks and visibility.read.
| Name | Required | Description | Default |
|---|---|---|---|
| test_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/idempotent/non-destructive, so the description carries the interpretive burden and does so thoroughly: it explains null semantics for non-completed tests and unmeasured tools, that install_rate is null (not 0) when install_rate_hidden_reason is no_installable_tool, that fallback guesses are included in counts but excluded from loss verdicts, that outcome counts vanish when run detail is unavailable, and that the feature and visibility.read are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded, but the remainder is a dense, run-on enumeration of output fields packed into a handful of overloaded sentences, several of which repeat 'Each test includes...' openings. Length is partly justified by the absence of an output schema, but the structure is hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations beyond safety flags, and a complex payload, the description is unusually complete on return semantics: it enumerates the returned fields, null conditions, comparison_key behavior, and measurement caveats. It stops short of telling the agent how to source test_ids, the one thing needed to actually call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is a single parameter (test_ids), so the description must compensate. It constrains the parameter meaningfully — '1 to 8 distinct project-owned tests' — implying these are project-owned test UUIDs and matching minItems/maxItems, but it never defines where an agent obtains valid test IDs, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (Read), a specific resource (per-model cells), and a scope (1-8 distinct project-owned tests from test history), which is clear enough for an agent to identify the operation. However, it does not explicitly differentiate itself from closely related siblings such as devtune_get_agent_picks_test or devtune_get_agent_picks_history, so sibling disambiguation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some operative guidance — 'Compare equal keys only and break history lines when they change', 'report the pick rate alone and say why' — and states the required Agent Picks feature and visibility.read permission. It never says when to choose this tool over the adjacent agent-picks siblings, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_historyBRead-onlyIdempotentInspect
Read 100 paid tests, newest first, or only the test test_id names, with completion coverage and the project tool’s pick rate (rate, every run that picked it, a stated pick included) and, beside it, stated_picks, installs and install_rate, from rollups, each with Wilson 95% likely ranges. install_rate_hidden_reason is no_installable_tool when none of the test’s tools has a package, config name or import pattern to install (a hosted dashboard): every install_rate is then null, not 0; report the pick rate alone and say why. directional=true marks partial matrices, cell re-runs, re-tests, starter tests and tests with fewer than three runs per cell. Keep those off full-test trends. Action and re-test baseline selectors exclude them. type is how the test was run: full, quick, custom or retest. settled_micros is what it has charged so far (1 credit = 1000000 micros), final once it ends. baseline_eligible marks completed full tests in the current category, by the test-level rule that chooses the tests loss Actions, re-test baselines and full-test trends read; coverage does not change it, and a re-test also needs every planned run of its losing cell completed. It is false without a setup. The previous qualifying full test is the next baseline_eligible test by completed_at. open_loss_actions counts the loss Actions the test created that are still suggested or accepted. action_id is the Action a re-test measures, null otherwise. Follow next_offset until null for earlier tests. Unfinished tests have no rate. Requires Agent Picks and visibility.read.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| test_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral context: the auth requirement ('Requires Agent Picks and visibility.read'), pagination behavior ('Follow next_offset until null'), and the no_installable_tool fallback where install_rate is null rather than 0. That is genuine value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single long run-on paragraph dense with jargon, Wilson ranges, directional flags, micros, and baseline rules. Much of it explains output fields rather than helping select or invoke the tool, and it is not front-loaded beyond the first clause, making it hard to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full return-value burden and does so thoroughly, explaining pick rate, installs, install_rate_hidden_reason, directional, settled_micros, baseline_eligible, open_loss_actions and action_id. Combined with the disclosed auth requirement and pagination, it is complete enough to use, though the density works against clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both params, so the description must compensate. It does so partially: 'only the test test_id names' implies test_id selects a single test, and 'Follow next_offset until null' explains the offset's pagination role. It stops short of stating what offset counts or the default page size.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a clear verb+resource: reading the history of paid tests (newest first, or a single test by test_id). It distinguishes the list vs single-test-id modes. However, it never distinguishes itself from close siblings like devtune_get_agent_picks_test or devtune_list_agent_picks_runs, so an agent still has to infer which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or when-not/exclusion, and no routing to alternatives among the many agent-picks siblings. The only 'guidance' is interpretive (keep directional tests off full-test trends), which is about reading results, not about when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_runARead-onlyIdempotentInspect
Inspect one project-owned Agent Picks run with test_id and run_id from the run list. Returns status, stage and live model activity, typed context, classified pick and an ordered page of retained observations by seq then id. Follow evidence.pagination.next_cursor until has_more is false; request and job are null with request_withheld and job_withheld distinguishing withheld snapshots from absent ones, null pick means no recorded classification, optional pick.statement_index locates the deciding sentence without exposing its quote or consistency fingerprint, other_tools is empty with other_tools_withheld marking withheld runtime names, and not_retained means no event rows are retained, including before a running run records them. Commands, error text, raw provider prompts and Storage artifacts are withheld; URLs show only their HTTP origin. Arbitrary request/job/search/file text is withheld; text_withheld marks search and file details. Packages must match the configured tool catalog and packages_withheld marks omitted names. integration.packages[].registry reports the queue-time registry snapshot for each observed package: latest_version, comparison, version-specific npm deprecated, comparison_reason, deprecation_reason, source and captured_at. Scheduled project tests and DevTune board tests capture registry metadata; new on-demand tests, free starter tests and Action re-tests do not capture it and registry comparison/deprecation remain unknown with no_snapshot. Previously retained snapshots are preserved. A comparison of differs does not mean outdated. Missing snapshots, wildcard names, unavailable or unsupported registries, malformed responses, redirects, timeouts, not_found lookups, unknown gem lookup spelling (lookup_identity_unknown), capture limits, missing observed versions and versions absent from captured metadata remain explicit unknowns; non-npm deprecation data is unsupported, and yanked does not mean deprecated. Installer output and archive downloads remain distinct evidence. Observations do not prove causes or a working integration. Requires Agent Picks and visibility.read. Cannot change or start a run.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| run_id | Yes | ||
| test_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only and idempotent behavior, but the description adds extensive behavioral disclosure: null semantics with *_withheld flags, pagination via evidence.pagination.next_cursor, retention rules for observations, withheld data classes, registry-snapshot limitations, and unknown states. This goes well beyond the safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but the remainder is a single dense block of implementation-level caveats. It would benefit from grouping, and its length is disproportionate even for a complex tool, so it reads as over-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full return-shape burden and does so comprehensively: status, stage, model activity, pick classification, pagination, withheld/null semantics, registry comparison, and explicit unknowns. Given the tool's complexity, almost 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only defines limit, cursor, run_id, and test_id. The description explains where run_id/test_id come from and how to use cursor (follow evidence.pagination.next_cursor), but it never describes limit's page-size role or bounds, leaving one parameter undocumented in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb (Inspect), resource (Agent Picks run), and scope (one project-owned run using test_id and run_id from the run list). It implicitly distinguishes this detail endpoint from the run-list and mutation siblings, though it never names the sibling tools directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent where the identifiers come from ('from the run list'), states prerequisites ('Requires Agent Picks and visibility.read'), and rules out mutation ('Cannot change or start a run'). It does not explicitly name an alternative tool for trace or list, so routing is inferential rather than fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_run_traceARead-onlyIdempotentInspect
Read one page of a project-owned Agent Picks run's console trace: redacted prompt, setup, narration, tool calls and results, file edits and errors, ordered by attempt then seq. An attempt's lines are available once that attempt finishes; a running attempt has none yet, and an attempt whose transcript could not be read has one error line, Trace unavailable for this attempt. availability is stored, pending (none yet: the run is running or finished within the last hour) or not_retained (none expected: it finished over an hour ago, as every run before traces were kept did), and attempts marks each attempt stored or not. A model_call item follows the first line of its attempt carrying its provider response id, else a tool-call id, with tokens, cost and the running total of placed calls. Calls that match no line are in unplaced with a reason (failed, no_ids, pending or unmatched), 200 at a time: the first page (cursor 0, 0) carries the first 200, and passing unplaced_pagination.after_id as after_unplaced returns the next 200; Codex reports no ids, so its calls are never placed. totals counts every proxy call. Each line carries preview, its first 65,536 characters, with preview_truncated when the stored text is longer; to read one line's whole stored text (up to 1 MiB, detail.truncated beyond), pass after_attempt, after_seq one before the line, limit 1 and full true. Pass pagination.after_attempt and after_seq back until has_more is false. limit defaults to 50, maximum 100; a page also stops after 256 KiB of lines. Requires Agent Picks and visibility.read. Cannot change a run.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| limit | No | ||
| run_id | Yes | ||
| after_seq | No | ||
| after_attempt | No | ||
| after_unplaced | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it explains availability states (stored/pending/not_retained), why a running attempt has no lines, the single 'Trace unavailable' error line, how calls become 'unplaced' with reasons, preview truncation at 65,536 chars, the 256 KiB page cap, and the Agent Picks + visibility.read requirement. Declares 'Cannot change a run', consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, which helps, but the body is one dense, run-on block that is hard to parse and repeats pagination concepts. Information density is high but structural clarity is poor for a description this long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, paginated, no-output-schema read tool, the description covers return shape (lines, unplaced, totals, model_call items), ordering, pagination termination, availability, and permissions. An agent has everything needed to call and page it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description carries the load and largely does: it defines limit (default 50, max 100), full, after_attempt/after_seq, and after_unplaced roles. Minor weakness is the confusing phrasing 'passing unplaced_pagination.after_id as after_unplaced', which introduces a name not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Read one page of a project-owned Agent Picks run's console trace', and enumerates exactly what the trace contains (prompt, setup, narration, tool calls, edits, errors). The scope is precise enough to separate it from run/summary siblings, though it never explicitly names an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong operational guidance (pagination via pagination.after_attempt/after_seq until has_more is false, 200-at-a-time unplaced reads) but never states when to reach for this tool versus devtune_get_agent_picks_run or devtune_list_agent_picks_runs. Usage is implied by the trace resource rather than contrasted against siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_scheduleARead-onlyIdempotentInspect
Read the project test cadence, next UTC run, newest skipped period with reason, action and action_href, and the current paid-test estimate per run and for the next calendar month against plan credits. Every plan can schedule. Requires Agent Picks and visibility.read. last_skipped is null when the cadence is off or the newest period was not skipped. Reasons include insufficient_credits, permission_changed, no_settings, estimate_changed and agent_not_in_plan (the Agent Picks plan of the account includes none of the saved agents; action view_plans links to billing); follow action_href to recover. test_in_flight and unavailable have null action and action_href because nothing needs fixing. Read this estimate before setting a schedule.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations by disclosing return-value semantics: last_skipped is null when cadence is off or unskipped, the full enum of skip reasons with meanings, that test_in_flight/unavailable have null action/action_href, and that action_href is the recovery path. This is unusually rich behavioral context for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and returned fields, then progressively drills into edge-case semantics. It is dense and long, but for a no-output-schema read tool almost every clause (null rules, reason enums, recovery link) earns its place; only the parenthetical reason glosses edge toward verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing return values, and it does so completely — cadence, next run, skipped period, reasons, actions, and credit estimates. Combined with annotations covering the safety profile, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4; there is nothing for the description to disambiguate, and it correctly adds no parameter-level noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (the project test cadence and paid-test estimate), then enumerates the exact fields returned: next UTC run, newest skipped period with reason, action/action_href, and per-run and monthly credit estimate. This is clearly distinguishable from the write-side sibling devtune_set_agent_picks_schedule and from other agent-picks getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to use it ('Read this estimate before setting a schedule') and states the prerequisites (Agent Picks and visibility.read), which routes the agent relative to the set-schedule sibling. It lacks an explicit 'when not to use' or named alternative beyond the scheduling pointer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_starter_testARead-onlyIdempotentInspect
Read the project's Agent Picks starter test as it runs, run by run. test is the project's latest starter test, or null when it has none (then runs and tools are empty). test.status is queued, running, completed, failed or cancelled; planned_runs counts the runs it queued and completed_runs those with status completed. A failed or cancelled test keeps its runs, so report what its completed runs picked and that the rest did not finish. Each run gives the request it was given (intent add = build it, recommend = recommend one, hosted = hosted service, and request the text), its agent and model, its status, and sandbox_attempts, the sandboxes it started. outcome is null until the run is classified, then installed (tool_key names the tool), built_its_own (the agent wrote its own), no_provider (wired in a hosted service without naming a provider), other_tool (other_tools lists the packages and hosts it added that no tool in the test names), none or unclassified. tools lists the tools the test ran with and gives the display name for each tool_key; it is null for a test queued before tests recorded their tools, so do not report which tools such a test compared. stage is sandbox, setup, agent or judging while running, otherwise null, including older runs. During agent, model_calls and model_spend_usd report proxy-recorded activity across attempts; null means no meter was recorded. model_spend_incomplete marks a lower bound, not a final bill. These are live per-run results, not rates: for install rates with their likely ranges, read devtune_get_agent_picks_summary. It shows the latest completed non-directional own test first, otherwise the latest completed directional own test, including a starter. A starter never displaces a full own result or feeds loss Actions, re-test baselines or trends.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description goes well beyond them: null semantics for test/tools/model_calls, freshness ('live per-run results, not rates'), stage lifecycle values, and the caveat that model_spend_incomplete marks a lower bound rather than a final bill. These edge-case disclosures materially change how an agent should interpret and report the data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body is a single dense ~250-word paragraph mixing request semantics, outcome enums, tool_key explainers and spend caveats with no bullets or headings. Much of the content is necessary absent an output schema, but the run-on structure hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values and does so comprehensively: every field (test, runs, outcome, tools, stage, model_calls, model_spend_usd) is defined including its null/edge-case behavior. An agent has what it needs to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there is nothing for the description to disambiguate; baseline 4 applies. No missing parameter meaning is a gap here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Read the project's Agent Picks starter test as it runs, run by run,' and distinguishes the starter-test concept from a full own test. It does not explicitly route against the closest siblings (devtune_get_agent_picks_test, devtune_get_agent_picks_run), which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names an alternative with a clear condition: 'for install rates with their likely ranges, read devtune_get_agent_picks_summary,' and adds a constraint ('a starter never displaces a full own result or feeds loss Actions, re-test baselines or trends'). No explicit when-to-prefer-this-over get_agent_picks_test/run, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_summaryARead-onlyIdempotentInspect
Read Agent Picks: which tool coding agents (Claude Code, Codex, OpenCode, Pi) installed when asked to add one in the project's category, from install-verified test runs. test is the project's latest completed non-directional own test. If none exists, show its latest completed directional own test, including a starter, Quick, Custom subset or cell re-run, with test.directional=true. Only when neither exists use the category's public test: the copy cloned into the project (kind cloned), else the latest public test. Directional tests never displace a non-directional own result and never feed loss Actions, re-test baselines or full-test trends. test.scope is public for either, so say when the numbers are the public test. Re-tests are never shown. runs counts completed runs, and every rate uses completed runs only. coverage says how many of the planned runs (matching the filters) completed, failed (ran without completing) or were not run (the test reached its budget before they started): when completed is below planned, say so with the numbers, e.g. 418 of 432 runs completed. incomplete_cells lists each environment, question, agent and model cell where fewer runs completed than were planned; a cell with completed 0 was not measured, so report it as not measured, never as a 0% rate. Each tools item's rate is its pick rate: picks (every run that picked it, including a stated pick, where the agent named it as its choice without writing it into the code) over runs summed across the test's cells, with rate_low and rate_high, the Wilson 95% likely range: report the range with the rate, and do not call two tools different when their ranges overlap. The pick rate is the headline. Beside it, stated_picks counts the stated picks, installs = picks - stated_picks the runs that wrote the tool into the code, and install_rate with install_rate_low and install_rate_high its install rate and range; never report the install rate instead of the pick rate. built_its_own and no_provider name no tool, so their installs and install rates are null. install_rate_hidden_reason is no_installable_tool when none of the test's tools has a package, config name or import pattern to install (a hosted dashboard): every install_rate is then null, not 0; report the pick rate alone and say why. outcome says what each item counts: installed (tool_key names the tool), built_its_own (the agent wrote its own instead of installing a tool) or no_provider (the agent wired in a hosted service, such as a database or mail server URL the user fills in, without naming a provider); the last two have tool_key null. Report built_its_own and no_provider separately, never as one figure, and never count either as a tool's loss to the other. is_own marks the project's own tool and is_competitor its competitors; both always list, at zero picks when no agent picked them. frameworks gives each framework's runs and top picks (framework null is an empty project); agents gives each agent and model's rates for the same tools, in the same order. environments gives each test environment (slug, name, framework) with its runs and picked tools, its rates per agent (models summed), and cells: one per question the test asked (intent add = build it, recommend = recommend one, hosted = hosted service, asked only where the category has a hosted option) and agent, each with its coverage; each group lists the tools picked there plus the project's own tool. A cell or environment where no run completed has runs 0 and no tools. Pass agent and/or intent to narrow every number to those runs; filters echoes what was applied. own_tool_key, competitor_tool_keys, enabled_environment_ids, enabled_frameworks, enabled_agents and enabled_agent_models are the project's setup; an empty list means it is not chosen yet. status no_settings means no category or job is chosen yet and no_test that no test has finished, so there are no rates to report. job is set when the project tests its own job instead of a public category: job.job is the work agents are asked to do, job.requests the requests its tests give them, job.tools the tools it compares (is_own marks the project's) with the packages, config names, import patterns and domains that name each one in a run, and job.building_blocks what decides built_its_own and no_provider; an agent drafted them and the customer confirmed them. When a test is shown, job.job, job.requests, job.tools and job.building_blocks are as that test recorded them when it was queued, so they describe the numbers even after the job is edited. A job has no public test, so its numbers are always the project's own, and category is then the job's own (slug job-, name the job line). A job test's run that added a package or hosted service no confirmed tool names counts in every rate's denominator but in no tool's picks. Pass test_id (from devtune_get_agent_picks_history) to read one completed test in the project's current category instead of the shown one; a re-test, unfinished test or another project's test is not found. open_loss_actions counts the project's loss Actions still suggested or accepted, whatever the filters.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | Only runs by this coding agent. | |
| intent | No | Only runs of this question: add (build it), recommend (recommend one) or hosted (hosted service). | |
| test_id | No | Read this completed test, from the history, instead of the shown one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, so the safety profile is covered. The description still adds real behavioral context beyond that: status no_settings/no_test states, the rule that re-tests are never shown, and that 'a re-test, unfinished test or another project's test is not found'. That error/edge-case disclosure is genuine value on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly 600 words delivered as a single unstructured paragraph. Although no output schema exists so much return-field explanation is unavoidable, the content is not grouped or front-loaded, and dense sentences repeat concepts repeatedly, making the critical usage rules hard to extract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema this description carries the full burden of describing the response and it does so exhaustively: rate/rate_low/high (Wilson), stated_picks, installs, install_rate and its hidden reason, built_its_own, no_provider, outcome, is_own, frameworks, agents, environments, cells, coverage, incomplete_cells, status, job, and open_loss_actions are all explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes further by clarifying filter effect ('Pass agent and/or intent to narrow every number to those runs; filters echoes what was applied') and the intended source and scope of test_id, adding semantics the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb, resource and scope: 'Read Agent Picks: which tool coding agents ... installed when asked to add one in the project's category, from install-verified test runs.' An agent immediately knows the domain. However, it never contrasts itself with the very similar siblings devtune_get_agent_picks_test and devtune_get_agent_picks_cells, so differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description routes to devtune_get_agent_picks_history for the test_id parameter and lays out the data-selection precedence (own non-directional > own directional > cloned public > latest public). But it gives no explicit when-to-use/when-not guidance relative to the other agent-picks siblings, leaving the choice among them mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_picks_testARead-onlyIdempotentInspect
Read the project's latest paid Agent Picks test status, estimate in credits, reserved_micros, settled_micros, refunded_micros and complete per-run table from its rollup. One credit is 1000000 micros. Failed runs and runs cancelled before they start are not charged; a run cancelled after it starts pays its recorded spend. Unused credits return when the test ends. Unknown spend on a completed run or a run cancelled after it starts charges the greater of recorded cost and the run's reservation share, capped by the remaining reservation. directional=true marks a partial matrix, a cell re-run, or fewer than three runs per cell, excluded from loss Actions, re-test baselines and full-test trends. Install rates are in devtune_get_agent_picks_summary for the latest completed non-directional own test, else the latest completed directional own test, else public results. This tool cannot start a test.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial domain behavior: credit-to-micros conversion, that failed and pre-start-cancelled runs are free, that post-start cancellations pay recorded spend, that credits return at test end, and the directional=true exclusion semantics. This is real value beyond the safety profile, though the charge formula is dense and unverified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded and names the returned fields, but the body then dumps several billing edge cases (unknown-spend formula, cancellation charging rules) that read more like documentation than selection criteria. It is overstuffed rather than lean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values, and it does name the estimate fields and per-run table plus the directional flag meaning. Given the tool's complexity, it is largely complete, though it could clarify the shape/structure of the per-run table.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema offers nothing to clarify; baseline for a no-param tool is 4. No parameter-level guidance is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (latest paid Agent Picks test status) and enumerates the returned quantities (estimate, reserved/settled/refunded micros, per-run table). It partially differentiates from siblings by routing install rates to devtune_get_agent_picks_summary and noting it cannot start a test, though other close siblings (get_agent_picks_run, get_agent_picks_history) go unmentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (read the latest paid test's rollup) and one alternative is named for install rates, plus the negative constraint 'cannot start a test'. But there is no explicit when-to-use vs the many adjacent siblings like get_agent_picks_run or list_agent_picks_runs, leaving selection partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_agent_runBInspect
Get one managed-agent run, including its draft output only after the run is complete. Superseded runs retain their output for reference; supersededByRunId names the replacing run. Retired action drafts appear under supersededActions.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Managed-agent run UUID. |
TDQS
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 meaningful behavior: draft output only appears after the run completes, superseded runs retain output, and supersededByRunId/supersededActions relationships are explained. It doesn't mention auth or rate limits, but the lifecycle disclosure is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each adding distinct content (purpose, completion condition, supersession semantics) with no filler. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param read tool with no output schema, the description covers the notable lifecycle edge cases but omits where a runId comes from and what the full response shape includes, leaving an agent to infer the entry point.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single runId param is fully documented in the schema, so the baseline is 3. The description adds no further constraint or format detail about runId beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get one managed-agent run') and clarifies what it returns (draft output, only after completion). It doesn't explicitly name the sibling devtune_list_agent_runs it differs from, though 'one' vs 'list' implicitly distinguishes it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains output semantics but gives no when-to-use/alternative guidance. It never says to use devtune_list_agent_runs to find a runId, or when this is preferable over listing runs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_ai_referralsBInspect
Get complete paginated AI-referral landing pages (including engagement and page value), overview, and the complete engines breakdown with selected-provider sessions, distinct selected conversions, provider provenance, coverage gaps and native metrics for the same fixed window. Selected conversion events with no site visit, such as server-sent events, are reported as noSiteVisitOccurrences and are not coverage gaps. conversionDefinitions gives, per selected PostHog event or action that occurred in the same window (ones with no occurrences are omitted), occurrences with no site visit and occurrences tied to a site visit, with windowComplete; one with no site-visit occurrences in a complete window cannot be credited to AI. GA4 key events are omitted because they are always session-scoped. Also returns visitorShare: AI-referral sessions over all sessions from the selected analytics provider for the same window (0 to 1), whenever the provider imported every day and recorded sessions. Sessions that may be AI referrals but could not be traced (unknown source or site) are not counted as AI; unattributedSessions counts them and partial is true when there are any; priorShare appears only when both windows have a share, with priorPartial. With no provider, a day not imported or no sessions, the share is null with a reason, never 0. Sessions are not people; conversion rates are events per session. Missing provider measurements remain null.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from the previous response; cursors expire after ~48 hours. | |
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| windowDays | No | Fixed rolling window in days: 7, 30, or 90. Defaults to 30. |
TDQS
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 substantial behavior: coverage-gap semantics, that noSiteVisitOccurrences are not gaps, that GA4 key events are omitted, that visitorShare is null (never 0) with a reason, partial/priorPartial flags, and that sessions are not people. It omits any auth or permission context, but the semantic edge cases are unusually well documented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded, but the remainder is an enormous run-on packed with undefined jargon (windowComplete, unattributedSessions, priorShare) in a single dense paragraph. It is over-specified and hard to parse rather than tight, so conciseness suffers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex analytics tool with no output schema and no annotations, the description goes a long way toward explaining the returned shape and null/edge-case handling. What remains missing is pagination/auth framing, but the return-value semantics are otherwise well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so cursor, pageSize and windowDays are already fully documented in the schema. The description adds only the 'same fixed window' concept, which is marginal 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (Get) and resource (AI-referral landing pages, overview, engines breakdown) with the fields it returns. It is clearly about AI-referral analytics, but it never names or contrasts with siblings like devtune_get_traffic_summary or devtune_get_page_metrics, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. The dense field-level explanation implies this is the AI-referral reporting tool, but an agent gets no routing help against the many traffic/visibility siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_audit_extractionAInspect
Read DevTune's extracted content for one section finding on demand. Supply the domain, page path, contentHash, inputHash and locator from audit findings. Returns exact section source, nearby Markdown, source URL and separate extraction/assessment timestamps, or unavailable/stale. This is stored crawl output; it does not reproduce an AI platform renderer or verify unseen images.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| locator | Yes | ||
| pagePath | Yes | ||
| inputHash | Yes | ||
| contentHash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the behavioral burden. It does: clarifies stored crawl output, that it does not reproduce a renderer, does not verify unseen images, and can return unavailable/stale. It doesn't mention mutation/side effects, but 'Read' plus stored data implies a safe lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences cover purpose, required inputs, return values, edge cases, and limitations with no redundant filler. Easy to parse and highly actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool with no output schema or annotations, the description covers inputs, outputs, staleness, and key limitations. It doesn't detail failure response formats or prerequisites for audit findings, but the essentials are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% descriptions, so the description must compensate. It names all five required parameters and tells the caller where they come from ('from audit findings'). It doesn't define each hash or the locator pattern, but the names and schema patterns are identifiable and the provenance guidance is a meaningful addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise read operation on a single artifact ('extracted content for one section finding'), names the five identifying inputs, and enumerates the exact return payload. This clearly sets it apart from broader get/list/update siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the caller to supply the five fields from audit findings and sets expectations for unavailable/stale results. Could name sibling tools for routing, but the provenance instruction is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_audit_findingsAInspect
Get paginated audit findings and independently paginated section assessments from the published Audit rollup. Section findings include exact excerpts, remedies, versions and coverage states; they do not change numerical scores.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| includeDismissed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does well: it discloses pagination (including independent pagination for section assessments), the source object, the categories of data included, and explicitly states that these findings do not alter numerical scores. It does not cover auth requirements or failure modes, but for a getter this is a strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, with no filler. The scope and the critical non-scoring behavior are stated compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The high-level purpose is clear, but with no output schema and no annotations the description should also convey return shape, pagination parameter behavior, and what includeDismissed means. It partially describes returned contents, but an agent still lacks enough detail to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% because only pageSize has a description, and the description does not compensate by explaining offset or includeDismissed. It repeats the notion of pagination but adds no semantics for the undocumented parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Get paginated audit findings and independently paginated section assessments from the published Audit rollup.' The detail about exact excerpts, remedies, versions, and coverage states disambiguates it from the sibling devtune_get_audit_summary and other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context (published Audit rollup, findings vs. numerical scores) that implies when to use it, but it never explicitly states when-not-to or names an alternative like devtune_get_audit_summary. The 'do not change numerical scores' note is an indirect exclusion rather than an explicit routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_audit_summaryAInspect
Get Audit summaries and independently bounded trends. trend.date is UTC for citations and answer fetches; clicksDate and priorClicksDate are Pacific GSC dates ending at the source boundary. Read current/prior coverage from searchConsole. When isCurrent is false, report partial last-published evidence with asOfDate and its original dates; do not call it current. GSC values are ranking evidence only for measured or verified_zero periods; report partial covered ranges and never pad GSC through UTC today.
| Name | Required | Description | Default |
|---|---|---|---|
| windowDays | No | Fixed rolling window in days: 7, 30, or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It clearly explains date boundaries, UTC vs. Pacific, partial evidence, and the rule not to call partial data current, nor pad GSC values. This is a rich behavioral contract for the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not overly long; it packs essential caveats into a few sentences. It front-loads the core purpose and then adds important accuracy constraints. No fluff, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single optional parameter and no output schema, the description explains key context: date formats, timezone boundaries, partial coverage, verification states, and GSC limits. An agent has enough information to call it correctly and avoid misrepresenting data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter, windowDays, which is well documented in the schema with enum values. The description does not add new meaning about the parameter beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns audit summaries and trends, with specific field semantics. It distinguishes it from related tools like get_audit_findings by focusing on summary-level trends. However, it does not explicitly name a sibling tool as an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through coverage and date handling rules, but does not explicitly state when to use this tool versus alternatives. It gives guidance on interpretation (e.g., when isCurrent false), but the when-to-use vs. when-not-to-use is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_citation_analysisAInspect
Backward-compatible alias for top citation pages in AI search results. Prefer devtune_get_top_citation_pages for new workflows. Returns the same coverage state: an unavailable window has not been rolled up yet, so an empty list is not a measured zero.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from the previous response. | |
| search | No | Optional prefix search within citation URLs and domains. | |
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
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 meaningful context: the tool is a backward-compatible alias, and it explains the coverage-state semantics (empty list is not a measured zero). However, it doesn't disclose pagination behavior, rate limits, or what 'citation analysis' specifically returns beyond top pages. The alias relationship is useful but the behavioral detail is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact at three sentences and front-loads the most important fact (backward-compatible alias) before the usage directive. The coverage-state sentence is slightly dense but earns its place by explaining a non-obvious semantic. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 100% schema coverage and no output schema, the description is mostly adequate. It explains the alias relationship and the coverage-state caveat, which are the non-obvious parts. However, it doesn't describe the return shape or how the alias differs behaviorally from the preferred tool, and with no annotations, an agent might not know whether this is a read-only operation (though the name suggests it is).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (cursor, search, pageSize, windowDays). The description adds no parameter-specific meaning beyond the schema, but the baseline of 3 is appropriate because the schema does the heavy lifting. The description's mention of 'coverage state' relates to windowDays but doesn't add syntax or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a backward-compatible alias for top citation pages in AI search results, with a specific verb ('get') and resource ('citation analysis' / top citation pages). It distinguishes itself from the preferred sibling devtune_get_top_citation_pages, though it doesn't fully explain what 'citation analysis' means beyond that alias relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to prefer devtune_get_top_citation_pages for new workflows, which is a clear usage directive. It also explains the coverage-state semantics (unavailable window not rolled up yet), which helps an agent interpret results. However, it doesn't state when to use this alias over the preferred tool (e.g., legacy workflows only) or mention alternatives like devtune_get_top_citation_domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_citation_statsAInspect
Get aggregate citation statistics for a project, including total citations, unique pages, unique domains, average position, top-three count, and citation class totals. Returns a coverage state: an unavailable window has not been rolled up yet and carries no stats, which is not the same as a measured zero.
| Name | Required | Description | Default |
|---|---|---|---|
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds a valuable nuance about the coverage state, clarifying that an unavailable window has no stats rather than a measured zero. However, it does not mention side effects, permissions, or other behavioral traits, though for a get operation these may be assumed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no unnecessary words. The primary purpose is front-loaded in the first sentence, and the second sentence adds a meaningful behavioral nuance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and no output schema, the description is fairly complete. It covers the return content and a key behavioral detail. It does not explicitly mention the default window or that it operates on the current project, but these are either in the schema or implicit. Overall, adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter 'windowDays' with its enum values and default. The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'aggregate citation statistics' with a specific list of metrics (total citations, unique pages, unique domains, average position, top-three count, citation class totals). It is specific and informative, but it does not explicitly differentiate from sibling tools like devtune_get_citation_analysis, which may overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as devtune_get_citation_analysis or devtune_get_top_citation_domains. The description only explains what the tool does, not when to choose it over siblings, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_code_mode_executionAInspect
Read operation receipts for one code-mode execution made by this same credential and project. Shows completed, rejected and uncertain operations without code, arguments or result data. A running receipt may survive a controller failure; never infer that its write did not happen. Reuse the original executionId and code in execute to retrieve its recorded response without repeating changes. Requires project.read and MCP code mode.
| Name | Required | Description | Default |
|---|---|---|---|
| executionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: it discloses auth requirements ('Requires project.read and MCP code mode'), what is included and excluded (completed/rejected/uncertain operations, no code/arguments/results), and a critical safety semantic ('a running receipt may survive a controller failure; never infer that its write did not happen'). That uncertainty/idempotency warning is exactly the kind of behavioral context an agent needs for a mutation-adjacent read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly four sentences, front-loaded with purpose followed by output contents, safety warning, and workflow/prerequisite notes. Every sentence contributes, though the sentence about reusing code in execute is slightly tangential to a pure read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 1-parameter read tool with no annotations and no output schema, the description supplies purpose, returned data scope, prerequisite permissions, and the crucial uncertainty caveat. It could say more about the receipt's structure, but the essential context an agent needs to invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single executionId parameter, so the description must compensate. It adds meaning by calling it 'the original executionId' and tying it to one credential/project's execution and to re-invoking execute, but it does not clarify format or matching behavior beyond what the schema's uuid type already implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Read'), a precise resource ('operation receipts'), and an explicit scope ('for one code-mode execution made by this same credential and project'). No sibling among the 60+ tools covers code-mode execution receipts, so the purpose is unambiguous and separable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real usage context: reuse the original executionId and code in execute to retrieve a recorded response 'without repeating changes,' which tells the agent when this tool is the right choice. It stops short of stating exclusions or naming a directly competing tool, so it is clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_competitive_positionAInspect
Get competitive positioning data showing primary, competitor, and other citations. The default aggregates only currently active project platforms. shareOfVoice compares primary with competitor citations; primaryShareOfAllCitations also includes other citations. totals cover every platform in the window; timeSeries leaves out platforms checked less often than daily (platformCadences with inDailySeries false, such as weekly Claude or Grok) unless they are the only platforms requested, in which case it has one point per run. platformCadences is null when cadence could not be read.
| Name | Required | Description | Default |
|---|---|---|---|
| topicId | No | Filter by topic UUID. | |
| grouping | No | Time grouping. Defaults to daily. | |
| platform | No | Filter by AI platform. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. | |
| includeHistoricalPlatforms | No | Include a requested inactive platform’s historical data. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden, and it does disclose real quirks: the default aggregates only active project platforms, totals cover every platform in the window, timeSeries silently omits sub-daily-cadence platforms (e.g. weekly Claude/Grok) unless they are the only ones requested, and platformCadences can be null. It stops short of permissions or error behavior, but the output/aggregation gotchas are genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and every subsequent clause carries information rather than filler. The second half is dense and jargon-heavy (shareOfVoice, primaryShareOfAllCitations, platformCadences), but it is compact for the amount of return-shape detail conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully explains what each returned series/metric includes and when platforms are omitted from timeSeries. Combined with the fully-documented parameter schema, an agent has enough to call and interpret the tool, though which parameters select which metric is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented and the baseline is 3. The description adds little parameter-specific detail beyond hinting that inactive platforms are excluded by default (relevant to includeHistoricalPlatforms), without clarifying windowDays/grouping interactions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get competitive positioning data') plus the data scope (primary, competitor, other citations), so the agent knows what it returns. However, it never differentiates itself from the closely-named sibling devtune_get_positioning or from citation tools like get_citation_stats, leaving sibling disambiguation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the metrics mean but never says when to call this tool versus alternatives such as get_positioning or get_citation_analysis. There is no explicit when/when-not guidance; the closest thing is a default-behavior note about active platforms, which is behavioral rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_content_changesAInspect
List detected content changes, their manual claim tokens and measured-action IDs. existingMeasurementId links a page measurement completed within 14 days of the change without implying the change is claimed. Fixed reporting windows; 14-day comparisons. Path filters apply to list totals; summary covers the full window.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| cursor | No | Opaque cursor from the previous response; cursors expire after ~48 hours. | |
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| windowDays | No | Fixed rolling window in days: 7, 30, 90, or 365. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It reveals important semantics: existingMeasurementId does not imply a claim, and path filters affect list totals while summary covers the full window. These are non-obvious behaviors that an agent needs to interpret results correctly. However, it does not mention error handling, rate limits, or whether the operation is read-only (though 'List' implies read-only). The provided details are valuable and go beyond typical descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the core purpose, then adds essential behavioral details. The structure is logical: what the tool returns, the meaning of existingMeasurementId, and scoping behavior. It is concise yet information-dense, though it could be slightly more structured with bullets, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description should ideally describe the response format, error conditions, or authentication requirements. It does explain the key output elements (claim tokens, IDs) and window behavior, but it does not mention pagination behavior beyond cursor (which is in schema), error handling, or any side effects. For a low-complexity list tool, this is moderately complete but leaves some gaps an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 75% of parameters (cursor, pageSize, windowDays), leaving 'path' undocumented. The description compensates by explaining path filter behavior ('Path filters apply to list totals; summary covers the full window') and window semantics ('Fixed reporting windows; 14-day comparisons'). This adds meaning beyond the schema's enum and default descriptions, particularly for path and the interpretation of windowDays.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'detected content changes', and specifies the returned items (manual claim tokens and measured-action IDs). This makes the purpose unmistakable. It does not explicitly name a sibling alternative, but the content type (content changes with claim tokens) is distinct from other get_* tools like get_content_gaps or get_actions, so an agent can infer differentiation without explicit naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives operational constraints (fixed reporting windows, 14-day comparisons, path filter behavior) but does not explicitly state when to use this tool over alternatives or when not to use it. There is no mention of prerequisites or context like 'use when you need to audit content changes for a page'. The guidance is implied from the purpose but not explicit, so it earns a mid-range score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_content_gapsAInspect
List measured topic, source, and brand content gaps from fixed 30/90-day rollups. Sources and brands the primary brand owns are excluded, as are topics the primary brand holds at least half the citations on, because those are presence rather than a gap. Every count is a citation split into primary and competitor; the rollups hold no mention facts. Coverage reports the covered-day count and the asOfDate the window ends on, so read the counts against availableDays rather than the requested window. Pipeline scores, generated summaries, prompt counts, and evidence are not part of this measurement contract.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1-100). Defaults to 25. | |
| offset | No | Zero-based result offset. Defaults to 0. | |
| search | No | Case-insensitive search on the display label. | |
| gapType | No | Filter by rollup key type. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries full burden. It discloses the fixed window rollups, the exclusion logic, that counts are citations not mentions, and that coverage is measured against availableDays not the requested window. This prevents incorrect interpretation of results and is highly transparent about the data's limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but organized: it starts with the main purpose, then exclusions, then data semantics, then contract scope. Every sentence adds critical information for correct usage. It is somewhat long but every part is necessary given the tool's complexity, so it earns a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is inherently complex with subtle data semantics (rollups, exclusions, citation vs mention). The description covers all the essential details an agent needs to correctly interpret results. No output schema exists, but the description explains what the data represents (citations, coverage days, asOfDate), making it complete for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so schema already documents all parameters. The description adds context about gapType meaning but doesn't go into detail about each parameter beyond what schema provides. It does clarify that windowDays only accepts 30/90 and defaults, which is in schema. The description's contribution is minimal beyond the schema, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool measures specific content gap types (topic, source, brand) from fixed 30/90-day rollups. It distinguishes itself by specifying what is excluded and that it reports citations split by primary/competitor. This clearly differentiates from siblings like devtune_get_citation_analysis and devtune_get_citation_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states what is excluded (owned sources/brands, topics with majority citations) and what is not part of the contract (pipeline scores, summaries). This guides an agent to know when to use this tool vs others in the same domain, though it doesn't name alternatives directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_dex_eventsCInspect
Read an ordered page of persisted Dex reply and lifecycle events for one project-scoped conversation thread.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| pageSize | No | ||
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the operation is a read ('Read'), that events are 'persisted', and that it returns an 'ordered page'. This discloses it is a non-mutating, paginated read. However, it does not mention error behaviors, ordering specifics, or what happens for invalid thread IDs. Basic transparency is present but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the action and resource. There is no fluff or redundant wording. It earns its place but could have been expanded with more behavioral detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters and no annotations or output schema, the description is too thin. It does not specify what constitutes a 'Dex reply' or 'lifecycle event', how pagination works (cursor vs offset), or what the response shape is. An agent would need to infer too much about ordering, filtering, and usage. The description is insufficient for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'ordered page' and 'conversation thread', which hints at pageSize and threadId, but it does not explain the 'after' parameter (presumably a cursor) or explicitly map parameters to their roles. The description adds minimal value over the schema's type constraints, leaving the agent to guess parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read), the resource (persisted Dex reply and lifecycle events), and the scope (one project-scoped conversation thread). It is specific enough to distinguish from the many sibling get_* tools, though it doesn't explicitly name an alternative. The verb+resource combination is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus other tools like list_dex_threads or get_agent_run. The description only explains what it does, not when it should be chosen. It implies usage for reading events for a thread but lacks any explicit exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_direct_liftAInspect
Get complete-population GA4 Direct traffic and resolver-owned AI-correlated lift classifications from fixed-window rollups, with bounded page details. Direct lift is correlated evidence, not attributed traffic, and is never added to measured referral totals.
| Name | Required | Description | Default |
|---|---|---|---|
| pageLimit | No | Maximum pages returned with their classification windows (1-25). Defaults to 10; aggregate totals are not capped. | |
| windowDays | No | Fixed rolling window in days: 7, 30, or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the data comes from 'fixed-window rollups', is 'complete-population', includes 'bounded page details', and emphasizes the non-additive nature of lift. This provides meaningful context about how the tool behaves without relying on structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. The main purpose is front-loaded, and the second sentence adds an essential nuance about the nature of the lift metric. Every phrase earns its place without any filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the domain-specific concepts of 'Direct lift' and clarifies its relationship to measured referrals, which is crucial for correct usage. However, since there is no output schema, it does not describe the return structure beyond 'bounded page details', which is a minor gap given the overall clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (pageLimit, windowDays) already have descriptive text in the schema. The description adds no extra meaning to the parameters beyond what the schema provides, only indirectly referencing 'bounded page details' and 'fixed-window rollups'. This matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'get' and names the exact resource: 'complete-population GA4 Direct traffic and resolver-owned AI-correlated lift classifications'. It clearly distinguishes this from siblings by explaining it is 'correlated evidence, not attributed traffic' and 'never added to measured referral totals', which sets it apart from tools like get_ai_referrals or get_traffic_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear when-not by stating the output is 'never added to measured referral totals', implying it should not be used for referral attribution. It also clarifies the semantic of 'lift' as correlated evidence, which guides selection. However, it does not name any specific sibling tools or give explicit conditions for when to use this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_google_eligibilityCInspect
Get Google eligibility dimensions, confirmed transitions, and sitemap submission evidence from fixed-window facts.
| Name | Required | Description | Default |
|---|---|---|---|
| windowDays | No | Fixed rolling window in days: 7, 30, or 90. Defaults to 30. | |
| evidenceLimit | No | Maximum page, transition, and sitemap evidence rows returned per list (1-25). Defaults to 10; aggregate totals are not capped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description bears full responsibility for disclosing behavior. It only states the source and categories of retrieved data; there is no information about side effects, read-only expectation, computation involved, rate limits, or output fidelity. For a read-style tool this is minimal and leaves behavioral assumptions to the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the verb and clarified resource. It is not redundant and earns its words. It loses a point because the three data categories are packed together without any formatting that could make them scan more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must carry return-format expectations. It lists the three data categories being returned, which provides a basic notion of output content. However, it leaves terms like 'confirmed transitions' and 'sitemap submission evidence' undefined, and does not specify the structure or aggregation, so completeness is just adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage of the two parameters with descriptions, defaults, constraints, and enums. The description's phrase 'fixed-window facts' minimally reinforces the windowDays parameter but adds no meaningful insight beyond the schema. Baseline 3 is appropriate when schema covers 100% of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and identifies three concrete data resources: Google eligibility dimensions, confirmed transitions, and sitemap submission evidence. It also names a source scope, fixed-window facts, which distinguishes it from sibling analytics tools. However, it does not explicitly contrast it with a sibling or scope out what it does not return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over the many other devtune_get_* siblings. The description gives no selection criteria, prerequisites, or examples of contextual use. An agent is left to infer its purpose from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_intelligence_forecastBInspect
Forecast short-term primary citations and presence-rate direction using recent project visibility trends. Presence-rate values are ratios from 0 to 1 and are null when no response has usable citation data.
| Name | Required | Description | Default |
|---|---|---|---|
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. | |
| horizonDays | No | Forecast horizon in days: 7, 14, 30, 60, or 90. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that presence-rate values are ratios from 0 to 1 and can be null when data is unusable, which is useful output context. However, it does not state whether this is a read-only operation, whether it requires specific permissions, or any rate limits or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by a crucial data caveat. It is efficient and wastes little space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and two optional parameters, the description is adequate but not complete. It explains the forecast output format (ratios, nulls) but omits usage context, read/write nature, and how the window and horizon parameters affect results. An agent can call it, but with some uncertainty about the semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter meaning beyond what the schema provides – it doesn't explain how windowDays and horizonDays interact or the implications of different values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (forecast) and resources (short-term primary citations and presence-rate direction) using recent project visibility trends. It distinguishes itself from siblings like devtune_get_citation_analysis or devtune_get_visibility_summary by being predictive rather than descriptive. However, it doesn't explicitly contrast itself against those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The phrase 'short-term' is the only temporal hint, but no conditions or exclusions are provided. An agent must infer that this is for forecasting, but when to choose it over other intelligence or citation tools is unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_knowledge_profileBInspect
Read the project Knowledge Profile and its pending, approved, and dismissed proposals.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | Opaque cursor from the previous response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description must disclose behavior. It says 'Read' which implies read-only, but does not mention side effects (e.g., whether it marks proposals as viewed), nor any privacy or scoping details (e.g., whether it requires a project ID or works on the current project). No output format is described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the main action and resource. It is not overly verbose, though it could list the categories more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no output schema and annotations are absent, the description leaves gaps: pagination (limit/cursor) is not fully explained, and the response structure is unknown. However, the tool is fairly simple, so a 3 is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (cursor is described, limit is not). The description does not explain 'limit' or 'cursor' further, but the schema already covers cursor. For 'limit', the agent has to infer it is pagination size. The description adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'Knowledge Profile', and explicitly mentions the three categories of proposals (pending, approved, dismissed). This is specific and distinguishes it from sibling tools like devtune_review_knowledge_proposal and devtune_update_knowledge_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus its siblings. However, the context of 'read' and the mention of proposals implies it is for viewing state before making decisions, but this is not stated. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_outcomes_ledgerAInspect
Get measured actions with authoritative improved, mixed, no_clear_change, declined, still_measuring and unmeasured results, the evidence behind each result (counts, active days, exposure and the chance of a shift that large), and a conclusive-measurement improvement rate. Reporting windows filter actions; comparisons use fixed 14-day before/after windows. Each item includes overlappingActions per page and comparison window, listing other completed actions with actionId, title and completedAt. With interventionId, top-level overlappingActions covers that measurement’s 7, 14, 30 and 90 day comparisons, even outside the selected ledger cohort. Each comparison has state available with an actions array, or unavailable with actions null if the supplementary check failed; measurements still load. Shared page movement cannot be attributed to this action alone. Also returns analytics-attributed conversions for fixed 30 and 90 day windows. If the measurement detail read fails, top-level overlappingActions contains one unavailable entry with actions=null and no page/window metadata. Redirect-shipped missing-page actions include evidence.redirect404 with requestedPath, hosts, before/after 404 request counts and fixed-window bounds, status-coverage day counts, source and generation. Its state uses 404 rows observed before each capture: stopped (observed before, none after), still_happening (observed in both), or unmeasured (incomplete status coverage, unknown request hosts, open window or no baseline 404s). A later counter increase nulls that count with reason counter_changed and preserves a known state. Both windows require coverage on every UTC date for every requested host; the browser snippet cannot measure 404s. This separate metric never changes the overall result. A saved suggested destination identifies a redirect; a saved requested URL requires an observed 3xx response and no 2xx responses across the requested hosts after the window closes. Other actions omit the field.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from the previous response; cursors expire after ~48 hours. | |
| source | No | Filter Actions and Outcomes by source; both is the default | |
| status | No | ||
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| windowDays | No | Fixed rolling window in days: 7, 30, 90, or 365. Defaults to 30. | |
| interventionId | No | Include 7, 14, 30 and 90 day impact windows (citations, presence and answer fetches) for this completion-based measurement. |
TDQS
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 extensively: fixed 14-day before/after comparison windows, overlappingActions scope with and without interventionId, available/unavailable comparison states, the 'shared page movement cannot be attributed to this action alone' caveat, and the redirect404 state machine including counter_changed nulling and coverage requirements. This is unusually rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single ~450-word wall of text with no paragraph breaks, front-loading the purpose but then burying it under redirect404 minutiae, state enumerations, and edge-case handling. Much of the redirect-404 detail is implementation trivia rather than selection/invocation guidance, so many sentences do not earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values, and it does so thoroughly (evidence fields, overlappingActions, comparison states, analytics-attributed conversions, redirect404 evidence). It is nearly complete for a complex read tool, missing only usage/routing context relative to siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents cursor, source, pageSize, and status. The description adds genuine meaning for interventionId ('covers that measurement's 7, 14, 30 and 90 day comparisons, even outside the selected ledger cohort') and residual window behavior, but most parameters are fully covered by the schema, keeping this near the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource: 'Get measured actions' with their authoritative result categories, evidence, and a conclusive-measurement improvement rate. It is distinctive from generic reads like devtune_get_actions or devtune_get_what_works, though it never names or contrasts those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no when-not-to-use statement, and no reference to the many sibling tools that also surface action/outcome data (devtune_get_actions, devtune_get_what_works, devtune_get_direct_lift). Window/filter behavior is described, but nothing tells the agent when this ledger is the right call over an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_page_guard_railsCInspect
Get paginated page guard-rail classifications from the same bounded rollup used by DevTune.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| pageSize | No | Results per page (1-100). Defaults to 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does reveal the pagination trait and a 'bounded' data source, but omits return format, what 'bounded' concretely means, rate limits, and any consistency guarantees. For an unannotated read tool this is thin coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no filler, and the key trait 'paginated' is front-loaded. It is concise rather than under-specified, though it could have used its brevity to carry more useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only getter this is minimally adequate, but the description never clarifies what 'guard-rail classifications' are or what the 'bounded rollup' refers to. With no output schema and no annotations, an agent gets little beyond the fact that results are paginated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (offset is entirely undocumented, while pageSize has defaults). The description does not compensate: 'paginated' implies the offset/pageSize pair but adds no meaning beyond the schema, leaving the offset parameter's semantics unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('page guard-rail classifications') and correctly discloses pagination. However, among roughly fifty devtune_get_* siblings, it offers no differentiation — 'from the same bounded rollup used by DevTune' is vague since DevTune is the product itself, making the qualifier circular rather than distinguishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to select this tool versus the many sibling getters (get_page_metrics, get_content_changes, etc.). The phrase 'same bounded rollup used by DevTune' hints at a shared data source but names no alternative and gives no exclusion conditions, leaving the choice entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_page_metricsAInspect
Get unified page-level search, citation, referral, citability, and guard-rail metrics from Audit rollups. searchConsole carries current and prior project totals, availability, covered ranges, and Pacific source dates ending at D-3. Page coverage belongs to the published Audit snapshot and may lag the project snapshot. Report isCurrent false as partial last-published evidence with asOfDate and its own source dates. Page GSC columns are a content-page subset and are ranking evidence only when availability is measured or verified_zero. Report partial coverage with its covered ranges; compare periods only when both are verified.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from the previous response. | |
| sortKey | No | ||
| category | No | ||
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| windowDays | No | Fixed rolling window in days: 7, 30, or 90. Defaults to 30. | |
| sortDirection | No |
TDQS
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 that data may be partial, that isCurrent may be false, and that coverage ranges should be reported. It explains the semantic meaning of the returned data, such as asOfDate and source dates. This is transparent about the data's nature, though it doesn't cover pagination or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph, not front-loaded with the most critical info (though it starts with the core purpose). It packs many details about data semantics and conditions, which is valuable but makes the text long and somewhat difficult to parse quickly. It could benefit from structured bullet points, but every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, no output schema, no annotations), the description thoroughly explains data freshness, coverage, and validity conditions, giving the agent a clear picture of what the response represents. It hints at response fields (isCurrent, asOfDate, GSC columns). However, it lacks any guidance on pagination or sorting via cursor and sortKey, and it doesn't describe the full response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has descriptions only for pageSize and windowDays (50% coverage). The tool description adds no information about any parameter, including cursor, sortKey, category, and sortDirection, which are undocumented. With 50% coverage, the description should compensate but does not, leaving parameter semantics incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves unified page-level metrics (search, citation, referral, citability, guard-rail) from Audit rollups. This is specific and distinguishes it from other metric tools in the sibling list by focusing on page-level and Audit rollup origin, though it does not explicitly name a contrasting sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed guidance on data freshness (D-3 Pacific source dates), coverage caveats (published Audit snapshot may lag), and when page GSC columns are valid (only when availability is measured or verified_zero). It instructs to report partial coverage and compare periods only when verified. This gives clear usage context, though it doesn't explicitly point to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_page_trackingAInspect
Read saved published URLs, page-tracking capacity and crawl availability for a completed action. Read-only. Tracking capacity does not block outcome measurement. plan_limit means the plan allowance is full; the remedy is to upgrade, and the subscription plan determines the crawl allowance. Never ask the customer to resubmit a saved URL. Omit actionId for project-wide capacity and allowance status. allowanceStatus gives the daily status: at_limit or beyond_plan, and the AI-cited pages the allowance leaves untracked; its counts are null when not measured. Requires outcomes.read.
| Name | Required | Description | Default |
|---|---|---|---|
| actionId | No |
TDQS
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 well: it declares 'Read-only', states 'Requires outcomes.read', clarifies that tracking capacity does not block outcome measurement, and explains that allowanceStatus counts are null when not measured. It does not cover pagination or the shape of the returned URL list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the middle sentences are dense and mix concerns (plan_limit meaning, upgrade remedy, plan determining crawl allowance) in one clause-heavy line. With no output schema the field-level detail is defensible, yet the passage could be tighter and better structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description supplies the key missing context: read-only safety, required scope, allowanceStatus values (at_limit/beyond_plan) and their null behavior, and remediation. The return shape of the saved-URL list itself is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single actionId parameter has 0% schema description coverage, but the description compensates: it ties actionId to 'a completed action' and explicitly says to omit it for project-wide capacity and allowance status. That is meaningful semantics beyond the bare uuid type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and precise resources: saved published URLs, page-tracking capacity, and crawl availability for a completed action. An agent can distinguish it from get_page_metrics or get_page_guard_rails by the tracking/allowance focus, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditional usage: 'Omit actionId for project-wide capacity and allowance status' tells the agent when to scope to a project vs a single action, and 'Never ask the customer to resubmit a saved URL' plus the plan_limit upgrade remedy define how to act on the result. It stops short of explicitly contrasting with alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_positioningARead-onlyIdempotentInspect
Read positioning match counts and share over 30 or 90 days. Totals cover the current competitor set, identified by current_set_id, which is null when no set is recorded. Each daily trend point includes competitor_set_id and is_current_set to identify the set measured and whether it is current. A zero competitor_set_id means no set was recorded. Keep points from different sets separate, even on the same day, so competitor changes show as breaks rather than jumps. Shares are null below ten named-product assignments. Several and nobody counts are excluded from the denominator. Each statement carries prior_status for the previous window of the same length (prior_window): when it is comparable, prior holds that window's totals and share_of_statement, so report the change; when it is competitor_changed or incomplete, prior is null and no change should be stated.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | ||
| window | No | ||
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (read-only, idempotent, non-destructive), and the description adds substantial context beyond that: current_set_id null/zero semantics, per-point competitor_set_id and is_current_set, the rule to keep different sets separate, null shares below ten assignments, denominator exclusions, and prior_status/prior_window comparability logic. This is rich disclosure an agent could not derive from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the remaining sentences carry real information about return semantics rather than filler. It is dense and slightly run-on, but every sentence earns its place given the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the heavy lifting on return values: set identity, trend-point fields, null-share thresholds, and prior-window comparison rules are all covered. Input parameters, however, remain unexplained, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters. The description indirectly explains the window (30/90 days) but says nothing about the 'intent' or 'platform' parameters, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (positioning match counts and share) with an explicit scope (30 or 90 days). It is clear what the tool returns, though it never distinguishes itself from adjacent siblings like devtune_get_competitive_position or devtune_list_positioning_statements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternative tools for positioning or competitive data. The description focuses entirely on interpreting results, not on selecting this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_project_usageAInspect
Read whether the project is paused and its usage: active prompts, credits spent this credit period, AI Traffic events this UTC month, and tracked pages against the page limit. Each figure carries its own period. A paused project starts no probes, agents, crawls, audits or data syncs, drops new AI Traffic, and gives credentials read access only, so writes are refused until it is resumed in the app. Its prompts and project slot do not count against the account while paused. Credits include credits held by running work until it settles. trackedPages is null until the first page-tracking status is computed. deletion gives projectDeletesAt and accountDeletesAt: when this paused project, or its lapsed team account with all its projects, will be deleted for inactivity; both are null when nothing is scheduled. Resuming the project or resubscribing cancels the deletion. Available to every credential.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden extremely well: it explains that a paused project starts no probes, agents, crawls, audits or data syncs, drops new AI Traffic, grants read-only credentials, and refuses writes until resumed. It also covers credit settlement timing, null semantics for trackedPages and deletion timestamps, deletion cancellation via resume/resubscribe, and universal credential availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary purpose is front-loaded, followed by dense field-level semantics and paused-project behavior. At eight sentences it is long, but nearly every sentence adds behavioral nuance that compensates for the absent output schema, so it remains structurally justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description must carry all context and does: status, per-figure periods, paused side effects, credit accounting, null semantics, deletion scheduling and cancellation, and auth availability. Nothing essential for correct invocation or interpretation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4. There are no parameter semantics to add, and the schema coverage figure is vacuous for a zero-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and a clearly scoped resource ('whether the project is paused and its usage'), then enumerates the exact figures returned (active prompts, credits, AI Traffic events, tracked pages). This project-level usage/pause resource is distinct from the many per-metric siblings in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers no explicit when-to-use guidance, no named alternatives among siblings such as devtune_get_page_metrics or devtune_get_traffic_summary, and no exclusions. Usage is implied by the purpose and field list, which is the minimum-viable level for this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_prompt_actionsAInspect
List existing and suggested actions whose stored evidence includes a prompt. Returns action status and brief readiness.
| Name | Required | Description | Default |
|---|---|---|---|
| promptId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It does say this is a listing operation and mentions the returned information, which suggests a read-only action. It does not address pagination, ordering, empty results, authorization, or whether 'existing and suggested' are returned as separate categories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The main operation is front-loaded, and the return-value sentence adds useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool, the description covers the core purpose and a brief return summary. However, there is no output schema and no annotation context, so the vague 'brief readiness' and the lack of any mention of alternatives or parameter details leave minor but real gaps for an agent deciding whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented promptId parameter. The tool name and the phrase 'includes a prompt' make the parameter's role reasonably clear, but the description never explicitly states that promptId selects the prompt whose actions will be listed, leaving some inference to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a precise resource ('existing and suggested actions whose stored evidence includes a prompt'), and the return content ('action status and brief readiness'). This filter by prompt evidence distinguishes it from siblings like devtune_get_actions, so an agent can tell what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this when you have a promptId and need actions whose evidence involves that prompt. However, there is no explicit guidance about when NOT to use it or how it compares with alternatives such as devtune_get_actions or devtune_get_action_brief.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_prompt_set_analysisARead-onlyIdempotentInspect
Read project-scoped analysis state, assessments, proposals and credit estimate/balance. Free read; never starts analysis, settles credits or applies proposals. Supply the returned run.id on subsequent pages. Requires visibility.read. Interactive review is available in-app; Slack execution is unsupported.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | ||
| offset | No | ||
| pageSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds significant context: it never starts analysis, settles credits, or applies proposals (reinforcing side-effect-free), requires visibility.read (auth), details pagination via supplying the returned run.id, and notes Slack execution is unsupported. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no repetition. It front-loads the core purpose, then adds behavioral constraints and prerequisites. Every sentence contributes distinct information, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 3 optional parameters and no output schema, the description covers purpose, side effects, auth requirements, pagination, and environment limitations. An agent has enough information to call it correctly, including how to navigate subsequent pages via run.id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all parameters. It only mentions run.id for pagination and does not explain offset or pageSize at all. Since these are optional and self-explanatory as pagination controls, the lack of explicit guidance is a notable gap given the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads project-scoped analysis state, assessments, proposals, and credit estimate/balance. It specifies the verb 'Read' and the resource, and explicitly distinguishes it from actions like starting analysis or applying proposals, separating it from sibling tools such as devtune_start_prompt_set_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is a free read, never starts analysis, settles credits, or applies proposals, implying when to use it for read-only needs. It also mentions requiring visibility.read and that Slack execution is unsupported. However, it does not name specific alternative tools, only implies them, so it lacks explicit when-not alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_recent_answer_fetchesBInspect
Get up to 20 latest answer-fetch hourly records in the selected UTC window. Each item is one rollup record, not an individual event or a whole-window total. hour_bucket is the start of an hour. verified_event_count confirms the peer address; failed_event_count contradicts the claimed operator; unknown_no_address_count means the sensor supplied no address; unknown_no_contract_count means the operator publishes no supported identity-checking contract; unknown_check_unavailable_count means a published check could not complete. The before-verification remainder is event_count minus those five counts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum hourly records, 1-20. Defaults to 20. | |
| windowDays | No | Fixed rolling window in days: 7, 30, or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It extensively defines the meaning of output fields (e.g., verified_event_count, unknown_no_address_count), which adds real semantic transparency. However, it omits operational behavior such as read-only nature, required permissions, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then defines each count. While dense and lengthy, every sentence defines a field that is otherwise undocumented (no output schema), so the length is justified. Structure is clear despite being a single paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description does the heavy lifting by explaining the return record structure and each count's meaning. It is largely complete for interpretation, though it could clarify the overall response format or empty-state behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters (limit and windowDays). The description adds no parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), resource ('answer-fetch hourly records'), and scope ('up to 20 latest ... in the selected UTC window'). It also clarifies the unit of return ('one rollup record, not an individual event or a whole-window total'), but does not explicitly differentiate itself from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description explains what the records contain, but never states conditions, exclusions, or sibling tools to prefer. Usage is only implied by the tool name and scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_search_rollupsAInspect
Get materialized fixed-window Search Console, legacy GA4, or selected-provider analytics aggregate totals. Missing or stale freshness pointers serve the last published rollup with its own source dates. Retained evidence is partial with isCurrent false and status unmeasured; report asOfDate and say the numbers are not current. Never-published projects return unavailable coverage with null totals. GSC source dates end at Pacific today minus three days. Report that returned finality boundary. Read with per-contributor coverage metadata. Current totals require every eligible contributor to prove full-window coverage. Stale published totals remain visible without a verified current comparison. Use measurement.availability and explanation to distinguish partial evidence, unavailable verification, verified zero, and complete totals. GSC storedEvidence reports row-presence dates, including legacy and disconnected history; it does not verify continuous coverage. Always report the returned source window. The analytics source also returns paginated daily session aggregates; limit and offset apply only to those rows. Return pagination.generation on every continuation; data changes or UTC midnight require restarting at offset 0.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| source | Yes | Aggregate source: Search Console, legacy GA4, or the selected analytics provider. | |
| generation | No | ||
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains fallback to last published rollup, stale data semantics, never-published null totals, GSC date boundary, coverage metadata, and pagination rules. It even details output nuances like measurement.availability and pagination.generation. This is far beyond average, though some phrasing (e.g., 'Retained evidence is partial with isCurrent false and status unmeasured') is cryptic and could be clearer, preventing a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph with no section breaks, bullets, or front-loading of the most critical information. It repeats concepts (e.g., 'Always report the returned source window' and 'Report that returned finality boundary' are nearly redundant). While every sentence carries information, the lack of structure makes it harder for an agent to parse quickly. It would benefit from segmentation by topic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description does an impressive job covering edge cases (stale, never-published, partial coverage), pagination continuation, date boundaries, and the meaning of availability indicators. It even warns about GSC storedEvidence not verifying continuous coverage. However, it leaves some concepts vague (e.g., 'per-contributor coverage metadata' and the generation parameter's purpose) and does not define what 'unavailable coverage' precisely implies beyond null totals. Still, for a complex tool it is remarkably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so the description must compensate. It clarifies that limit and offset apply only to analytics paginated rows, which is a key semantic the schema does not convey. It also maps the source enum to human-readable names. However, it does not explain the generation parameter at all, and windowDays is left entirely to the schema (which already has a clear description). The description adds some value but leaves notable gaps, justifying a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Get') and a precise resource ('materialized fixed-window Search Console, legacy GA4, or selected-provider analytics aggregate totals'). It clearly distinguishes this tool from the many sibling get_* tools by naming the exact data domain and its scoped window. Even without reading the schema, an agent knows what data this returns and for which sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives substantial context about when the tool is applicable: it handles stale or missing freshness pointers, never-published projects, and covers all three sources. However, it never explicitly states 'use this when you need aggregate totals' versus alternatives, and it doesn't name any sibling to rule out. The guidance is implicit in the resource description and edge-case behavior, not an explicit when-to-use directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_timeline_eventsCInspect
Get project timeline events as context for interpreting Visibility trends. Sources are external, team, deterministic, or detected. Detected facts use citation_share_change and return stable aggregate evidence { platform, domain, direction, currentShare, baselineShare, absoluteChange, relativeChange, observationStart, observationEnd, projectCount, projectFraction } inside detectedEvidence; relativeChange is null when the domain has no baseline citations. Project detected evidence uses the same platform, domain, direction, shares and observation dates, plus { scope: "project", domainRole, brandName, incidentId, baselineStart, baselineEnd, cohortPromptCount, activePromptCount, status, resolvedAt }, without projectCount or projectFraction. domainRole is own, competitor or other; brandName is null for other. Project incidents must meet their detector configuration absolute-share floor, currently 0.01 (one percentage point). Shares are fractions. Status is active or resolved; resolvedAt is null while active. High-confidence active incidents and movement-ended history surface automatically, unless an overlapping pending or active citation exclusion hides them. External facts use platform_model_change, platform_outage, data_collection_gap, search_algorithm_update, or devtune_methodology_change with evidence { title, description, sourceUrl }. Prompt additions, removals, and restores return summary counts and an optional shared topic, never prompt names. Tracked-URL changes use kind tracked_urls_changed, one per day, with evidence { changeCount, brands, brandCount, requestedBy }: the number of tracked URL, brand or classification-rule changes that day and up to five affected brand names. Tracking changes apply to citations collected from that day on; earlier citations keep the labels they were recorded with. Measured-action facts use source measured_action and kinds change_detected, change_claimed, measurement_opened and outcome_measured. Their measuredAction evidence includes actionId and actionTitle when attributed. Agent Picks events require agent_picks and include structured agentPicks rationale for localized titles, with reason and cells for repeated reasons. It also includes nullable interventionId and url, changeEventId for changes and results, measurementOpenedAt for openings and results, and windowClosedAt and result for results only. Results are improved, mixed, no_clear_change, declined, still_measuring or unmeasured; an outcome_measured event requires the canonical measured_at timestamp from Results. These facts ignore topic filters and have no platform keys. No causal link to metric movements is implied.
| Name | Required | Description | Default |
|---|---|---|---|
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
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 does disclose some useful operational traits, like that agent picks facts ignore topic filters and that external facts have no platform keys, but it omits basic behaviors such as pagination, ordering, or authorization requirements. Much of the text is spent on output payload shapes that duplicate what the description never proves is an output schema, since none is declared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is an enormous wall of schema details with no front-loaded summary beyond one clause. Sentences run to 100+ words, and the payload field lists bury the single most actionable constraint (windowDays is not even mentioned).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so some return-shape explanation is warranted, but the description goes far beyond what is needed and still omits essential call behaviors like pagination and ordering. It is complete about payload fields but not complete about how to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single windowDays parameter and its 30/90 enum. The description adds no additional parameter guidance, which matches the baseline 3 when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence says it retrieves project timeline events as context for Visibility trends, which is a specific verb+resource. However, the vast majority of the description dives into exhaustive payload schemas rather than clarifying the tool's scope, and it does not differentiate itself from sibling timeline-adjacent tools like devtune_get_action_events or devtune_get_dex_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description frames usage loosely as 'context for interpreting Visibility trends' but gives no explicit when-to-use, when-not-to-use, or alternative tool routing. An agent looking at the ~80 siblings has no guidance on why it would pick this over get_action_events or get_visibility_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_top_citation_domainsAInspect
Get top citation domains in AI search results. Returns cursor-paginated domain rows ordered by citation count. Pass sourceVertical to scope the list to one vertical, for example the community platforms AI cites. Returns a coverage state: an unavailable window has not been rolled up yet, so an empty list is not a measured zero.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from the previous response. | |
| search | No | Optional prefix search within citation URLs and domains. | |
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. | |
| sourceVertical | No | Optional source vertical scope. "community" covers Reddit, Hacker News, GitHub, Stack Overflow, Stack Exchange and Dev.to, including their subdomains. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It discloses cursor-based pagination, ordering by citation count, and crucially explains the coverage state (unavailable window not rolled up, empty list not a measured zero). This is valuable interpretive context beyond the basic read operation. It does not detail the exact response fields, but the provided semantics are sufficient for safe use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The purpose is front-loaded, and the coverage-state caveat is placed at the end as an important interpretation note. Every sentence earns its place and the structure is clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should fully explain the response shape. It mentions cursor-paginated domain rows and a coverage state, but does not specify the fields within each row or the exact structure of the coverage state. This leaves some ambiguity about how to consume the output. Given the tool's moderate complexity (5 optional params), a bit more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minor value by giving an example of sourceVertical ('community' covers specific platforms), but this is already implied in the schema's enum description. No new meaning is added for cursor, pageSize, or windowDays beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get top citation domains in AI search results.' It clarifies that it returns domain rows, not pages, distinguishing it from sibling devtune_get_top_citation_pages. The ordering by citation count is also explicit, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context on how to use parameters (e.g., pass sourceVertical to scope) but does not explicitly state when to use this tool versus alternatives like devtune_get_top_citation_pages or devtune_get_citation_analysis. No exclusions or alternative routing are mentioned, so the agent must infer usage from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_top_citation_pagesAInspect
Get top citation pages in AI search results. Returns cursor-paginated page rows ordered by citation count. Pass sourceVertical to scope the list to one vertical, for example the community platforms AI cites. Returns a coverage state: an unavailable window has not been rolled up yet, so an empty list is not a measured zero.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from the previous response. | |
| search | No | Optional prefix search within citation URLs and domains. | |
| pageSize | No | Results per page (1-100). Defaults to 25. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. | |
| sourceVertical | No | Optional source vertical scope. "community" covers Reddit, Hacker News, GitHub, Stack Overflow, Stack Exchange and Dev.to, including their subdomains. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses cursor-paginated rows, ordering by citation count, and the important nuance that an empty list may reflect an unavailable window rather than a measured zero. This goes beyond a basic description and prevents a common misunderstanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, pagination/ordering, sourceVertical usage, and coverage state. No fluff, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with 5 optional parameters and no output schema, it explains pagination, filtering, window selection, and a key semantic nuance (coverage state). It doesn't describe the exact structure of returned page rows, but for a cursor-paginated list that is often sufficient; the main purpose and behavior are well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all parameters (100% coverage), so the baseline is 3. The description adds meaningful semantics for sourceVertical (explains it scopes to a vertical with an example) and clarifies the cursor-pagination model. It doesn't add much for other parameters, but the added context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get top citation pages in AI search results.' It clearly distinguishes this from sibling tools like devtune_get_top_citation_domains by specifying 'pages', and further describes pagination and ordering criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides specific usage guidance for sourceVertical with an example ('for example the community platforms AI cites') and explains the coverage state to prevent misinterpretation of empty results. However, it does not explicitly mention alternative tools or conditions for when not to use it, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_traffic_platformsAInspect
Get LLM traffic grouped by AI platform, traffic type and bot class over a fixed rolling window, so a platform's training crawls and answer fetches are separate rows. verifiedEvents confirms the peer address; failedEvents contradicts the claimed operator; unknownNoAddressEvents means the sensor supplied no address; unknownNoContractEvents means the operator publishes no supported identity-checking contract; unknownCheckUnavailableEvents means a published check could not complete. The before-verification remainder is totalEvents minus those five counts.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Filter by specific domain. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discharges most of it: it defines the row semantics and precisely unpacks five event counters, including the arithmetic relationship (totalEvents minus the five counts = before-verification remainder). It does not cover permissions, rate limits, or ordering, but for a read-only analytics tool the metric semantics are the behavior that matters and they are disclosed well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, followed by dense but necessary counter definitions. Every sentence adds distinct meaning and there is no filler. The counter glossary is long but justified given there is no output schema to carry those semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only source of return semantics, and it does explain the row grouping and every counter plus the derived remainder. It still omits the possible values of platform/traffic type/bot class and any sorting or pagination behavior, which a fully complete definition would include.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (domain, windowDays) are already documented with their enum and default in the schema. The description's phrase 'over a fixed rolling window' restates windowDays without adding enumeration values, format, or edge cases. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (LLM traffic) plus the grouping dimensions (AI platform, traffic type, bot class) and the fixed rolling window. An agent can tell it produces grouped bot-classified rows. However it never distinguishes itself from closely-named siblings like devtune_get_traffic_summary or devtune_get_ai_referrals, so routing is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an implicit hint about why grouping matters (training crawls and answer fetches as separate rows), but no explicit when-to-use, when-not-to-use, or which sibling to pick instead. With ~40 sibling analytics tools, the absence of any routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_traffic_summaryAInspect
Get current website traffic totals, LLM bot and AI-referral subsets, and configuration-backed accepted-measurement Active state for snippet, edge middleware, Cloudflare, Search Console, GA4, and PostHog sensors. Sensor state is project-wide even when domain filters the traffic totals. edgeSensorSdk lists the @devtune/ai-traffic versions the edge middleware reported in the last 14 days (null means 0.8.0 or earlier) and whether an upgrade is available; it is null when the reports could not be read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does real work: it discloses null semantics for edgeSensorSdk ('null means 0.8.0 or earlier', 'null when the reports could not be read'), the 14-day reporting window, and upgrade availability. It still omits read-only confirmation, auth/permission needs, and rate limits, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in sentence one, and the two follow-on sentences are dense but each earns its place by pinning down scope and null behavior. It is long and jargon-heavy, but with no output schema this detail is load-bearing rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-sensor summary with no output schema and no annotations, the description supplies the key return semantics (traffic totals, bot/referral subsets, per-sensor Active state, edgeSensorSdk version semantics). It stops short of enumerating the full response shape, but covers enough to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the schema to document and the baseline is 4. The one wrinkle is that the description references a 'domain filters the traffic totals' condition even though no domain parameter exists, which could momentarily mislead an agent into hunting for a filter argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('website traffic' totals/subsets plus sensor state), and enumerates exactly what is included (LLM bot, AI-referral subsets, accepted-measurement Active state across six sensors). It is clear on its own, but it never distinguishes itself from overlapping siblings such as devtune_get_ai_referrals or devtune_get_traffic_platforms, so an agent cannot fully rule those out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the enumerated scope (a current, project-level traffic overview), and the caveat that sensor state is project-wide even when a domain filters traffic helps interpretation. However, there is no explicit when-to-use/when-not, and no named alternative sibling to route to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_visibility_responseAInspect
Read one AI execution using an executionId from the response history or recent responses list, with structured sponsored ads labelled separately from the organic answer. Returns null if the execution is outside this project. retained=false means no nonempty public answer or ad evidence is retained; the answer may never have been captured or may have expired. Nulls do not establish that no ads were displayed. Use visibility summary for rollup-backed advertising rates.
| Name | Required | Description | Default |
|---|---|---|---|
| executionId | Yes |
TDQS
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 well: it discloses that a null return means the execution is outside the project, that retained=false means no nonempty public answer or ad evidence was captured, and that nulls do not prove no ads were shown. It stops short of stating auth requirements, rate limits, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then dense but purposeful edge-case semantics. Every clause (null scope, retained=false, nulls-not-proof-of-no-ads) carries information, though the middle section reads as a run-on sequence of caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must stand alone; it covers the action, the input source, the return shape (sponsored ads labelled separately from organic answer), and the important null/retained semantics. Only the exact response fields and permission requirements are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single executionId parameter, so the description must compensate. It adds real value by stating the provenance of the id (from the response history or recent responses list), which the schema's bare uuid format does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one AI execution') and clarifies the scope ('using an executionId from the response history or recent responses list'). It also names the sibling it is not ('Use visibility summary for rollup-backed advertising rates'), so an agent can distinguish it from the rollup and list tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent where the required input comes from (response history / recent responses list) and routes rollup use cases to a named alternative (visibility summary). Both the selection condition and the alternative are explicit, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_visibility_summaryAInspect
Get AI search visibility summary metrics for a project. The default aggregates only the project’s currently active platforms and returns measurement metadata; use only measurement.reportablePlatforms for current per-platform reporting. This excludes configured onboarding platforms that have no measurements in the window. measurement.dataStatus=no_data means the platform was not measured in the window, not that visibility was zero. Inactive historical data is excluded unless explicitly requested. Organic percentage fields use 0 to 100; citationPresence and shareOfVoice are null when no response has usable citation data. advertising reports separate forward-only ads detected, measuredResponses coverage, and primaryRate/competitorRate fractions from 0 to 1, null when unmeasured. Never combine advertising with organic Presence. platformCadences lists each platform’s cadenceDays; window figures include weekly platforms, and lastCheckedOn gives the last date a weekly platform was checked.
| Name | Required | Description | Default |
|---|---|---|---|
| topicId | No | Filter by topic UUID. | |
| platform | No | Filter by AI platform (e.g. chatgpt, perplexity, gemini). | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. | |
| includeHistoricalPlatforms | No | Include data from a requested inactive platform. Defaults to false and should only be enabled when the user explicitly asks for historical platform data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does well: it explains excluded onboarding platforms, dataStatus=no_data semantics, null rules for citationPresence/shareOfVoice, and the 0–1 vs 0–100 ranges. It does not state read-only/auth behavior, but for a summary read tool it supplies substantial context about what is excluded and how to interpret edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the remainder is a dense, run-on set of caveats that would be easier to scan as a short list. Many sentences earn their place, but the lack of structure and high density hurt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema and no annotations, the description must carry return-value semantics, and it largely does: it covers platform reporting scope, data-status meanings, organic percentage ranges, citation-presence nulls, and advertising metric separation. Some details remain implicit, but it is substantially complete for a complex read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the four parameters are already documented. The description adds little parameter-specific meaning beyond schema; it explains output interpretation more than the filters themselves, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Get AI search visibility summary metrics for a project.' It implies a summary-level view rather than per-response detail, but does not explicitly name sibling tools like devtune_get_visibility_response or devtune_get_search_rollups, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'summary metrics' and the default reporting behavior, and the description gives parameter guidance such as using includeHistoricalPlatforms only when explicitly requested. However, it never states when to choose this tool over sibling visibility or traffic tools, leaving the agent to infer the summary-vs-detail distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_get_what_worksAInspect
Get project channel evidence from canonical closed 14-day improvements. Samples count improvements, not all attempts; before/after evidence is not causal attribution.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum recommendations to return. Defaults to 5. | |
| windowDays | No | Rolling window in days: 30 or 90. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly discloses that results are a sample, not all attempts, and that the before/after evidence is not causal attribution. This is valuable transparency about the nature of the data and its limitations, going beyond what a schema 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero redundancy. The main purpose is front-loaded, and the caveat follows succinctly. Every word earns its place, making it highly efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple two-parameter query tool. It explains the purpose and key limitations but does not describe the return format or how the results are structured. Since there is no output schema, a brief mention of the output would improve completeness, but for a tool with this simplicity, it is minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters (limit and windowDays) with clear descriptions and defaults. The description adds no additional parameter semantics, but since schema coverage is 100%, it does not need to. The baseline of 3 is appropriate because the schema already provides the necessary meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (get) and the resource (project channel evidence from canonical closed 14-day improvements), which is specific and unambiguous. It does not explicitly differentiate from sibling tools, but the focus on 'improvements' and 'what works' distinguishes it enough. The caveat about sampling adds clarity but the purpose is clear without it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or conditions that would help an agent decide between this and the many other get_* tools in the sibling list. The description simply states what it does without any 'use this when...' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_accuracy_claimsARead-onlyIdempotentInspect
List one Accuracy claim list over the same window and filters as devtune_get_accuracy, most answers first: contradict (AI answers disagree with the site), site_conflict (the site disagrees with itself), not_on_site (the site does not say) or dismissed (contradictions and site conflicts the team dismissed). For contradictions grouped by the site sentence they conflict with, use devtune_list_accuracy_contradictions; a contradict or dismissed item's sentence_key names its row there. Each item is one claim group with the latest answer excerpt that had the outcome, the site page and any other page involved, and the team's active decision; answered is true when the team said whether a not-on-site claim is true or false. A locked page is one the customer has marked off-limits, so never suggest changing it. dismissed_count and answered_count count the window's dismissed and answered claims; dismissed_contradiction_count and dismissed_site_conflict_count split dismissed_count by kind. Pass next_cursor verbatim as cursor for the next page and keep the other arguments unchanged; it is null on the last page. An empty list means no claim had that outcome in the window.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| intent | No | ||
| window | No | ||
| outcome | Yes | ||
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly/idempotent/non-destructive), and the description adds substantial behavior beyond them: pagination discipline ('Pass next_cursor verbatim as cursor ... keep the other arguments unchanged; it is null on the last page'), empty-result semantics, the locked-page constraint, and the per-item payload structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded, and the dense sentences each carry distinct facts (outcome definitions, item shape, counts, pagination). It is long and some sentences chain several clauses, but little is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden and does: it describes the item structure (claim group, latest answer excerpt, site page, other page, active decision), the answered flag, locked-page meaning, the four count fields, cursor behavior, and the empty-list case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 6 params, but the description supplies meaning for outcome (defines each of the four values), cursor (verbatim reuse, null on last page), and window/filters (inherited from devtune_get_accuracy). limit, intent, and platform are never explained, so the compensation is real but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List ... Accuracy claim list') plus scope ('same window and filters as devtune_get_accuracy, most answers first'), and explicitly distinguishes itself from devtune_list_accuracy_contradictions and devtune_get_accuracy. An agent can route to it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (devtune_list_accuracy_contradictions) and the exact condition that selects it ('For contradictions grouped by the site sentence they conflict with'), and ties scope to devtune_get_accuracy. This is explicit when-to-use/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_accuracy_contradictionsARead-onlyIdempotentInspect
List Accuracy's contradictions once per site sentence they conflict with, over the same window and filters as devtune_get_accuracy, most answers first: what the tab's contradictions table shows. Each row is one sentence on the brand's own site (site_page, with whether it is locked now) that AI answers contradict in wording_count different wordings (claim groups, listed in group_ids), with answers (an answer stating two wordings counts under each), platforms, last seen, dismissed_wording_count for wordings the team dismissed, an example wording with its latest contradicting answer, and the open action correcting it. other_page is a set-aside page, such as a dated blog post, that says what the AI said. A row whose wordings were all dismissed is not listed. A locked page is one the customer has marked off-limits, so never suggest changing it. Pass next_cursor verbatim as cursor for the next page and keep the other arguments unchanged; it is null on the last page. A contradiction whose check quoted no sentence from the site has no row; devtune_get_accuracy counts those in unquoted_contradictions. An empty list therefore means no contradiction names a site sentence in the window, not that nothing was contradicted: check unquoted_contradictions there before saying so.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| intent | No | ||
| window | No | ||
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description adds genuinely non-obvious behavior: rows whose wordings were all dismissed are omitted, locked pages are customer-marked off-limits and must never be changed, unquoted contradictions are excluded and counted elsewhere, and cursor/reset rules for pagination. This is real context beyond the structured hints, though it doesn't touch permissions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, which is good, but the middle is a dense run-on enumerating every returned row field (site_page, wording_count, group_ids, platforms, last seen, dismissed_wording_count, example wording, open action, other_page) that is hard to parse and mixes return-shape documentation with usage guidance. Several clauses earn their place (dismissed rows, empty-list semantics, cursor), but the whole is longer than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully documents the returned row structure, the dismissed/locked/unquoted exclusions, and pagination termination ('null on the last page'), which is close to complete for a complex listing tool. The undocumented limit parameter and the enum values for window are the remaining holes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across five parameters, so the description must carry the load. It explains cursor ('pass next_cursor verbatim') and implies window/filters via the devtune_get_accuracy parallel, but it never clarifies the 30/90 window enum or the meaning of limit, intent, and platform, leaving real gaps against a 0%-documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('List Accuracy's contradictions once per site sentence they conflict with') and immediately scopes it to the same window/filters as devtune_get_accuracy, which distinguishes it from the sibling devtune_get_accuracy_contradiction and the parent accuracy tool. 'What the tab's contradictions table shows' anchors the agent to a concrete artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: same window/filters as devtune_get_accuracy, pass next_cursor verbatim as cursor and leave other arguments unchanged, and it explains that an empty list means no contradiction names a site sentence rather than nothing being contradicted — redirecting the agent to unquoted_contradictions in devtune_get_accuracy. It stops short of explicitly naming when to prefer this over devtune_get_accuracy_contradiction or the claim-level siblings, so it is strong but not fully explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_accuracy_decisionsBRead-onlyIdempotentInspect
List the Accuracy Reviewed list: the decisions the team made on claims, newest first, with the claim, the kind of finding, the choice, who decided and when, whether it is still active or was undone, and its action: action_role is where the decision stands on its action now: created when the action is built from it, attached when it is added to an action built from another claim, and null when it has none (undoing the decision an action was built from rebuilds it from the next claim, whose role becomes created). For a site conflict, chosen_url is the page the team kept and changed_url the page to change. For a not-on-site claim, choice true means the team marked it true and created an "Add to your site" action, true_no_action that they marked it true without an action (no_action_reason nothing_to_add), and false that they marked it false. Pass next_cursor verbatim as cursor for the next page; it is null on the last page. An empty list means no claim has been reviewed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds substantial behavioral context beyond that: pagination ('Pass next_cursor verbatim as cursor... null on the last page'), empty-list meaning, and the action_role lifecycle including the side effect that undoing a decision rebuilds its action from the next claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core purpose, but the body is a single dense run-on covering action_role, site conflicts, not-on-site choices, pagination and empty state. Much of the field semantics is justified because there is no output schema, yet the paragraph could be broken up for far easier parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 0% param coverage, the description carries the burden and largely meets it by explaining the returned fields, the action_role state machine, conflict URL semantics, choice values, and pagination. Gaps remain: no limit guidance and no differentiation from the other accuracy list/get tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It does well for 'cursor' ('Pass next_cursor verbatim as cursor for the next page; it is null on the last page') but says nothing about 'limit', whose default 25 and max 100 live only in the machine-readable schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb and resource ('List the Accuracy Reviewed list: the decisions the team made on claims, newest first') and even enumerates the fields returned, so the tool's function is unmistakable. However, it never distinguishes itself from near-name siblings like devtune_list_accuracy_claims or devtune_get_accuracy, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the list contains but gives no when-to-use context and never names an alternative such as devtune_list_accuracy_claims or devtune_get_accuracy_claim. Usage is at best implied by the wording, leaving the agent to guess which accuracy tool to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_agent_picks_runsARead-onlyIdempotentInspect
List the project's own Agent Picks runs, newest first by created_at then id. Optional test_id narrows to an owned test. Includes starter and paid history, never cloned public results or source artifacts. Pass pagination.next_cursor verbatim as cursor until has_more is false. Requires Agent Picks and visibility.read. Operational records only; use the summary for rates. stage is sandbox, setup, agent or judging while running, otherwise null, including older runs. During agent, model_calls and model_spend_usd report proxy-recorded activity across attempts; null means no meter was recorded. model_spend_incomplete marks a lower bound, not a final bill. Cannot start or change a run.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| test_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only/idempotent/non-destructive; the description adds meaningful behavior beyond that: auth requirements, the full stage lifecycle semantics and null-for-older-runs caveat, what model_calls/model_spend_usd actually measure (proxy-recorded, null = no meter), and the lower-bound meaning of model_spend_incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first two sentences, and every subsequent sentence adds a distinct behavioral fact rather than filler. It is dense to the point of being run-on for the field semantics, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 0% schema coverage, the description compensates by explaining key return fields (stage, model_calls, model_spend_usd, model_spend_incomplete, has_more/next_cursor) and the pagination contract. The only notable gap is the limit parameter's meaning and bounds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It clarifies test_id ('narrows to an owned test') and cursor (verbatim pagination.next_cursor) plus the has_more loop, but says nothing about the limit parameter or its 1-100 range/default, leaving one of three params fully undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List), resource (Agent Picks runs) and ordering (newest first by created_at then id), and scopes the corpus ('the project's own', never cloned public results or source artifacts). An agent can distinguish this from get_agent_picks_run (singular) and get_agent_picks_history without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent elsewhere ('Operational records only; use the summary for rates'), states required permissions ('Requires Agent Picks and visibility.read'), gives the pagination loop contract ('Pass pagination.next_cursor verbatim as cursor until has_more is false'), and sets a boundary ('Cannot start or change a run').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_agent_runsBInspect
List project managed-agent runs with status, timing, settled credit consumption, token usage, and agent identity. superseded means nightly maintenance retired every unreviewed draft after a newer draft existed; supersededByRunId identifies the replacing run. Partially retired runs stay draft_ready.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor from the previous response. | |
| agentKey | No | Filter to one roster or custom agent key. | |
| pageSize | No | Results per page (1-100). Defaults to 25. |
TDQS
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 does usefully define the semantics of non-obvious status values ('superseded', 'supersededByRunId', 'draft_ready'), which is genuine added context, but it omits scope questions (per-project only?), auth needs, and pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then two tightly packed sentences covering return fields and status semantics. Every sentence carries information, though the status explanation is dense enough to read as a run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the job of describing return contents and does so competently, including an otherwise opaque status meaning. Pagination defaults are left to the schema, which is acceptable, but usage framing remains thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (cursor, agentKey, pageSize) are fully documented in the schema at 100% coverage, so the baseline is 3. The description adds no syntax, format, or filtering semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') plus resource ('project managed-agent runs') and enumerates the fields returned (status, timing, credits, tokens, agent identity). It is clear what the tool does, though it never explicitly distinguishes itself from siblings like devtune_get_agent_run (single run) or devtune_list_agent_picks_runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the single-run getter or the agent-picks run lister. The status semantics hint at context but do not tell an agent when this listing 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.
devtune_list_agentsAInspect
List the code-owned and custom managed agents available to a project using display-only definition fields. Includes the one-time account trial credit allowance and scheduling restriction when trialing. Each agent carries an evidence verdict naming any source it cannot read yet, so a caller can see what a run would be missing before paying for one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does so well: it states the operation is display-only, surfaces trial-related constraints, and reveals the returned evidence-verdict field. It does not explicitly say there are no side effects or cover auth/rate limits, but the display-only framing is a strong implicit safety signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then adding the two distinct behavioral details (trial constraints and evidence verdicts). No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema listing tool, the description covers the action, the scope, the information returned per agent, and the caller's motivation (see what a run would miss before paying). Nothing material is missing for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so there is no schema to supplement. The description instead clarifies what the parameterless call returns (agent list plus trial credit, scheduling restriction, and evidence verdicts), which is the only semantic support an agent needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('List') and a concrete resource ('code-owned and custom managed agents available to a project'), and clarifies it uses display-only definition fields. This makes it easy to distinguish from siblings like devtune_list_agent_runs (runs, not agents) and devtune_run_agent (execution, not listing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this is useful: before paying for a run, to inspect trial credit, scheduling restrictions, and evidence of inaccessible sources. It doesn't explicitly name alternatives or state when not to use it, but the intended pre-run inspection use case is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_dex_handoffsAInspect
List pending specialist-agent handoffs for one project-scoped Dex conversation thread.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' suggests a read-only operation, but this is not explicitly stated, and there is no disclosure of side effects, return format, or any constraints beyond 'project-scoped.' The term 'pending' is undefined, leaving ambiguity about what constitutes pending.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise and front-loaded with the key action and scope. No filler or redundant wording; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is largely sufficient. It states the purpose and scope. However, it could be improved by clarifying what 'pending' means and what the response contains (e.g., a list of handoff objects). Given the tool's low complexity, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions the thread scope ('project-scoped Dex conversation thread'), which gives context for threadId, but it does not explain the parameter's format, constraints, or how to obtain it. The description adds minimal meaning beyond the parameter name itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'pending specialist-agent handoffs' and scopes it to 'one project-scoped Dex conversation thread.' This distinguishes it from sibling list tools like devtune_list_agent_runs or devtune_list_library, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you need to see pending handoffs for a specific thread, but it does not explicitly contrast with alternatives like devtune_decide_dex_handoff (which likely creates handoffs) or devtune_get_dex_events (which might include handoff events). No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_dex_threadsAInspect
List the bounded recent Dex conversation history for the project, including current task, settled credits, and truncation state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds useful behavioral context by noting the history is 'bounded' and includes 'truncation state,' which informs the agent about potential limits and pagination. However, it does not explicitly state that the operation is read-only or mention any side effects, authentication, or rate limits. It is not contradictory but leaves some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that gets straight to the point. Every phrase adds value: 'bounded recent' sets the scope, 'for the project' identifies the context, and the listed fields tell the agent what to expect. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no parameters and no output schema, the description covers the essential information: what it returns and its scope. It could be slightly richer by explicitly stating it is a read-only operation or what 'bounded' means in practice (e.g., number of threads), but it is otherwise sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and the schema reflects that, so no parameter documentation is needed. The baseline for 0 params is 4, and the description adds no parameter-specific meaning (there are none to add). It correctly implies no inputs are required for the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list') and a clear resource ('bounded recent Dex conversation history'), and it names the included fields (current task, settled credits, truncation state). This clearly distinguishes it from sibling tools like devtune_get_dex_events, which focus on events rather than conversation history, though it does not explicitly name a sibling to avoid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It simply describes what it does without indicating scenarios (e.g., 'use this to inspect the current task or check truncation') or excluding cases where another tool would be more appropriate. The agent is left to infer usage 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.
devtune_list_libraryCInspect
List project Library items. Current versions are returned by default.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | Opaque cursor from the previous response. | |
| includeSuperseded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does add one useful behavior—'Current versions are returned by default'—but it omits other relevant behavior such as pagination behavior, ordering, whether superseded items are included by default, and any permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the core purpose and adds a meaningful default-behavior note, making every word count.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three optional parameters and no output schema, the description is thin. It does not explain pagination flow, what fields are returned, how to handle the cursor, or how listing differs from searching the library. An agent would need to infer too much from parameter names and sibling names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, with only 'cursor' described in the schema. The description partially compensates by implying that includeSuperseded defaults to false ('Current versions are returned by default'), but it does not explain the 'limit' parameter or its maximum, nor does it clarify pagination semantics beyond the cursor's schema note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List project Library items.' It clearly identifies the object and action, and the note about current versions adds useful scope. However, it does not explicitly distinguish itself from sibling tools like devtune_search_library or devtune_read_library_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as devtune_search_library. The description only states what the tool does, not the conditions under which it should be preferred over other library-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_positioning_answersARead-onlyIdempotentInspect
List the AI answers behind one positioning match cell: the statement (statementId) and who it credits (assignee: a brand id, or another_product, several or nobody), over the same window, filters and current competitor set as devtune_get_positioning, so the count matches that cell. Newest first; pass nextCursor verbatim for the next page and keep the other arguments unchanged. Each answer names its prompt, platform, date and verdict confidence; promptDeleted means the prompt has since been removed. Verdicts carry no quote, so read the answer itself for the wording.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| intent | No | ||
| window | No | ||
| assignee | Yes | ||
| platform | No | ||
| statementId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it a safe, idempotent read, yet the description adds substantial context beyond them: newest-first ordering, strict cursor-forwarding rules, the per-answer fields (prompt, platform, date, verdict confidence), the meaning of 'promptDeleted', and the notable caveat that verdicts carry no quote so the answer text must be read for wording.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then pagination, then return-shape caveats. It is one dense block and slightly long, but nearly every clause adds operational value (cursor rules, promptDeleted, no-quote caveat) rather than restating schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns, and it does: each answer's prompt, platform, date and verdict confidence, plus the promptDeleted flag and the absence of quotes. Combined with pagination and cross-tool consistency notes, an agent has enough to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden and does so well for the two required params: statementId (the statement) and assignee (a brand id, or the enum values another_product/several/nobody). It also glosses cursor and window ('same window ... as devtune_get_positioning'). However, 'intent', 'platform' and 'limit' are only hinted at via 'filters' and are never explained explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the AI answers behind one positioning match cell') and immediately identifies the coordinates that define the cell (statementId + assignee). It explicitly anchors itself to sibling devtune_get_positioning, so an agent can distinguish this drill-down tool from the aggregate it depends on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition of use: to see the answers behind a cell from devtune_get_positioning, reusing that call's window, filters and competitor set so counts agree. It also prescribes pagination protocol ('pass nextCursor verbatim ... keep the other arguments unchanged'). It stops short of naming an explicit when-not or alternative sibling, so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_positioning_statementsBRead-onlyIdempotentInspect
List active and archived positioning statements and their relevant intents.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that archived records are included alongside active ones, which is genuinely useful behavioral scope, but says nothing about pagination, ordering, or whether results are scoped to a project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource, the two statuses covered, and the related intents with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description does carry the return-shape burden, and naming the returned entities (statements + intents) partially discharges it. However, for a parameterless listing tool it never clarifies result scope (all projects? user-scoped?), ordering, or volume, which an agent needs to interpret the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies an unfiltered listing with no arguments to document, and it introduces no phantom parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (positioning statements) and adds scope detail: active and archived, plus their relevant intents. It reads as a distinct list-style capability alongside sibling get_positioning, though the boundary between the two is never made explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no mention of the sibling devtune_get_positioning or devtune_list_positioning_answers, both of which an agent must choose between. Usage is only implied by the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_visibility_response_historyARead-onlyIdempotentInspect
Page every still-present execution, including pending, running, failed and rate-limited records, in a fixed 30/90-day started-at window. Default 50, maximum 100 per page. Keep filters unchanged with nextCursor. Read each execution with devtune_get_visibility_response for retained public answer evidence. This live operational listing is not a visibility denominator or a snapshot; retention and statuses can change during traversal. Enterprise platforms require existing entitlement.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| status | No | ||
| pageSize | No | ||
| platform | No | ||
| promptId | No | ||
| windowDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description goes further by disclosing that this is a live operational listing whose retention and statuses can change mid-traversal, that results are a fixed-window page rather than a snapshot, and that enterprise platforms require existing entitlement. These are behavioral traits an agent cannot derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and pagination rules are front-loaded in the first two sentences, and each sentence carries distinct information. It is denser than ideal for a list tool, and the 'not a visibility denominator or a snapshot' clause leans on negative definition, but nothing is outright redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, no-output-schema list tool with zero schema prose, the description supplies pagination semantics, filter behavior, window constraints, a follow-up tool for row detail, and an entitlement caveat. The main omissions are explaining platform/promptId individually and noting what a first call without a cursor looks like, so it is nearly but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does for most parameters: pageSize default 50/max 100, cursor usage via 'nextCursor', windowDays as a fixed 30/90-day started-at window, and the status values. 'Keep filters unchanged' implies platform/promptId/status behave as stable filters, but those two parameters are never explained individually, leaving a gap in an otherwise strong compensation effort.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Page every still-present execution') and narrows scope with concrete details: pending/running/failed/rate-limited records in a 30/90-day started-at window. It also clarifies what the tool is NOT ('not a visibility denominator or a snapshot'), which distinguishes it from summary-style siblings. However, it never names or contrasts the near-identical sibling devtune_list_visibility_responses, leaving the agent to guess between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational guidance: 'Keep filters unchanged with nextCursor' for pagination and 'Read each execution with devtune_get_visibility_response' as the follow-up for answer evidence, plus an entitlement prerequisite for enterprise platforms. What is missing is any explicit routing between this tool and devtune_list_visibility_responses, so the when-to-use-this-vs-that case is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_visibility_responsesAInspect
List the latest 20 successful AI executions in this project, optionally filtered by prompt or platform. Pass an executionId to devtune_get_visibility_response to inspect retained answer and ad evidence. This is an operational listing, not a measurement sample; use visibility summary for rates.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | ||
| promptId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It discloses the 20-item limit, the 'successful' filter, project scoping, and the operational vs. measurement distinction. It does not explicitly state whether the call is read-only or describe pagination, but for a listing tool the key behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the core operation, the follow-up path, and the crucial distinction from measurement tools. The most important information is front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only two optional simple parameters and no output schema, the description covers the essential context: what is listed, filter options, the 20-item limit, and how to proceed with a returned executionId. It does not describe the exact output fields, but the pointer to executionId gives enough operational grounding for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds that platform and promptId are optional filters and explains their role ('optionally filtered by prompt or platform'). However, it doesn't precisely map 'prompt' to the promptId parameter or clarify whether filters combine, leaving some semantic ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action: 'List the latest 20 successful AI executions in this project', naming the resource, scope, count, and success filter. It also distinguishes itself from related tools by explicitly contrasting with devtune_get_visibility_response and visibility summary, so an agent can tell it apart from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: pass an executionId to devtune_get_visibility_response for deeper inspection, and use visibility summary for rates. The line 'This is an operational listing, not a measurement sample' clearly states when this tool is appropriate and when it is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_list_webhooksARead-onlyIdempotentInspect
List active webhook subscriptions for this project. Signing secrets are never returned. Requires webhooks.read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing that signing secrets are never returned, which is a security-relevant behavioral guarantee an agent would otherwise have to guess.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler; the purpose is front-loaded and the auth requirement and security guarantee follow in order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and no parameters or output schema to document, the description is nearly complete for a simple list tool. It could optionally sketch the shape of a returned webhook record, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case: there is nothing for the description to disambiguate. No parameter confusion is possible.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List'), resource ('webhook subscriptions'), and scope ('active', 'for this project'), which cleanly separates it from create_webhook, delete_webhook, and rotate_webhook_secret. It does not name a sibling explicitly, so it falls just short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite 'Requires webhooks.read' is stated clearly, and the 'active' qualifier implies scope, but there is no explicit when-to-use guidance or direction to an alternative such as listing all vs. active webhooks. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_read_library_itemAInspect
Read one Library item, including its content, provenance, version state, and grounding availability.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It states it 'reads' and lists what is included, implying a safe read operation, but it does not mention any prerequisites, error behavior, or side effects. For a read tool, the description is adequate but not rich in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero filler. It efficiently conveys the action and the key aspects of the returned data, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema or annotations, the description is largely complete. It explains what the tool returns and implies the required input. The only minor gap is not stating behavior for missing items, but this is not critical for a read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, itemId, which is a UUID. The description does not mention this parameter, and schema description coverage is 0%, yet the parameter's purpose is self-evident as an identifier. The description adds no extra meaning, but the low complexity and intuitive nature of 'itemId' make this acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'Library item', and enumerates the content returned (content, provenance, version state, grounding availability). This distinguishes it from list/search tools implicitly through the singular 'one' and 'read' action, but it does not name a specific sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have an itemId and need full details on a single library item, but it does not explicitly state when to use this instead of list/search or mention any exclusions. The context is inferable from 'read one' but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_reconsider_retrieval_restrictionAIdempotentInspect
Reconsider an intentional retrieval restriction for only the exact URLs displayed in an audit finding. Requires explicit customer confirmation and actions.write. Preserves the finding, evidence and score. Never infer customer intent.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| findingId | Yes | ||
| auditRunId | Yes | ||
| confirmedIntent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds important behavioral context: it requires explicit confirmation and the actions.write permission, preserves the finding/evidence/score, and prohibits inferring customer intent. This meaningfully helps the agent understand safety and side effects without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three compact sentences with zero filler. The core action is front-loaded, followed by permission/confirmation requirements, then a preservation guarantee and a policy constraint. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the four required parameters, the annotations, and the absence of an output schema, the description covers the essential prerequisites: exact URL scope, customer confirmation, required permission, and preservation of audit artifacts. It does not describe the exact outcome or return value of 'reconsider', but the action and constraints are sufficiently specified for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 0% description coverage, so the description must carry parameter meaning. It clarifies that 'urls' must be the exact URLs from the audit finding and that 'confirmedIntent' corresponds to explicit customer confirmation. The remaining parameters (auditRunId, findingId) are reasonably self-explanatory from their names and the phrase 'audit finding', though they are not explicitly mapped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Reconsider') and a specific resource ('an intentional retrieval restriction') with a clear scope ('only the exact URLs displayed in an audit finding'). This distinguishes it from the sibling 'acknowledge_retrieval_restriction' tool and makes the tool's purpose immediately actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: only for exact URLs in an audit finding, only with explicit customer confirmation, and never by inferring intent. It does not explicitly name sibling alternatives or state when-not-to-use cases, but the guidance is strong enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_rename_dex_threadCInspect
Rename one project-scoped Dex conversation thread.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It identifies 'rename' as a mutation but does not mention side effects, permission requirements, reversibility, or what the tool returns. An agent has no idea what happens after the rename or whether it is destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words. It is front-loaded with the action and resource. However, the brevity sacrifices essential detail, so while structure is clean, it is not fully adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with two required parameters, no annotations, and no output schema, the description is severely incomplete. It does not explain parameter semantics, expected behavior, error conditions, or return value, leaving an agent to rely entirely on the schema and guess at side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention either parameter (threadId, title). The agent must inspect the schema to understand that threadId identifies the thread and title is the new name, and the maxLength constraint is not surfaced anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'rename' and a clear resource 'project-scoped Dex conversation thread', which distinguishes it from sibling operations like delete or list. It is concise and unambiguous about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as devtune_delete_dex_thread or devtune_list_dex_threads. No context is provided about prerequisites, typical scenarios, or conditions that would make rename the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_review_knowledge_proposalBInspect
Approve, dismiss, or restore a Knowledge Profile proposal. Approval is the only transition that changes the profile.
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | ||
| proposalId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden almost entirely. It does disclose a meaningful side effect: 'Approval is the only transition that changes the profile.' However, it omits auth requirements, reversibility, state constraints, or consequences of dismiss/restore beyond not changing the profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action and resource. The second sentence adds critical behavioral differentiation without bloat. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two params and no output schemalexplicit statement about what happens on dismiss/restore or what the response contains, but the core invocation is understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema gives enum values for decision, and the description adds the important semantic that only approve changes the profile. However, proposalId receives no additional explanation, though its meaning is inferable from the tool purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description has a specific verb phrase, 'Approve, dismiss, or restore a Knowledge Profile proposal,' which clearly identifies the action and target. It does not explicitly distinguish itself from sibling tools like devtune_update_knowledge_profile, but the resource (proposal vs profile) makes the intent fairly clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus approving through another workflow or updating the profile directly. The usage context is only implied by the action verbs; there are no explicit when-to-use or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_review_prompt_set_proposalADestructiveInspect
Apply, undo, dismiss or restore one analyzer proposal after explicit human approval of that operation. Read the proposal first and show the human the proposed change. Never infer approval from a read or analysis request. Preserves quotas and stale/conflict checks. Requires actions.write and a user-attributed credential with devtune.manage. Interactive review remains in-app; Slack execution is unsupported.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | ||
| proposalId | Yes | ||
| humanApproved | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses permission requirements (actions.write, devtune.manage credential), quota preservation, stale/conflict checks, and a platform limitation. It also explains the non-obvious rule that a read/analysis request must never be taken as approval. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The most important information (operations + human approval gate) is front-loaded, and every subsequent sentence adds distinct value: permissions, stale/conflict behavior, platform restriction. Nothing is redundant or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, the description covers the approval workflow, required credentials, side-effect protections, and unsupported invocation context. An agent has enough to decide when and how to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden. It maps the operation enum by listing the four values, identifies proposalId as 'one analyzer proposal', and conveys that humanApproved must be an explicit true approval. It does not elaborate the precise effect of each operation, but the names plus the approval context make the semantics clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with four specific operations ('Apply, undo, dismiss or restore') on a concrete resource ('one analyzer proposal'), immediately distinguishing this from the sibling devtune_review_knowledge_proposal by resource type and from read-only analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the required precondition ('after explicit human approval'), instructs the agent to read the proposal first and show the change, and warns against inferring approval from reads/analysis. It also names an environment exclusion (Slack unsupported). It does not explicitly name sibling alternatives, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_rotate_webhook_secretADestructiveInspect
Rotate an active project webhook signing secret, invalidating the previous secret immediately. Requires webhooks.write. Returns the replacement once; store it securely and update your receiver. Inactive or unknown subscriptions return not_found. No automatic retries.
| Name | Required | Description | Default |
|---|---|---|---|
| webhookId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: annotations only declare destructiveHint=true and non-idempotent, while the description discloses that the old secret is invalidated immediately, the replacement is returned exactly once, the caller must store it and update its receiver, inactive/unknown IDs yield not_found, and there are no automatic retries. These are critical operational facts an agent cannot get from the schema or hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly written sentences, front-loaded with the action and its destructive effect, followed by the permission requirement, the one-time return, and error behavior. No filler and every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema and only one parameter, the description covers everything an agent needs: what is destroyed, the permission required, the one-time nature of the return value, storage guidance, and failure semantics. Nothing material is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter (webhookId, uuid) is not described at 0% schema coverage, but its meaning is self-evident from context ('an active project webhook signing secret' identifies which webhook is being targeted). The description adds no format, constraint, or lookup guidance beyond what the parameter name implies, so this is the minimum-acceptable baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rotate an active project webhook signing secret') with an explicit scope qualifier ('active project') and effect ('invalidating the previous secret immediately'). It is clearly distinguishable from webhook siblings like create_webhook, delete_webhook, and list_webhooks without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete context for use: the subscription must be active, and the caller needs webhooks.write. It also tells the agent what happens in the negative case ('Inactive or unknown subscriptions return not_found'). It stops short of naming an alternative tool or a when-not-to-use case, so it is clear on context but not fully explicit on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_run_agentAInspect
Trigger a metered manual managed-agent run through DevTune’s evidence- and credit-checked dispatch path. Refuses with agent_evidence_unavailable, before any credits are spent, when the project has nothing this agent can read, and with target_page_refused when targetPage names no page the agent can work on.
| Name | Required | Description | Default |
|---|---|---|---|
| modelId | No | Optional available model-catalog identifier. | |
| agentKey | Yes | Roster or custom agent key to run. | |
| targetPage | No | Optional page the run works on, for agents that brief one page (citability-editor): an absolute URL, or a path such as /pricing on a tracked domain. The run briefs that page and no other. | |
| instructions | No | Optional focus for this run. | |
| requestIdempotencyKey | Yes | Required caller-generated UUID for idempotent retries. |
TDQS
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 metered/credit-checked, that refusals happen before any credits are spent, and names two concrete refusal codes with their triggering conditions. It omits whether the call is synchronous or returns a run handle, and any permission or rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core action plus its cost model are front-loaded ahead of the failure modes. The second sentence is long and packs two distinct refusal cases together, slightly reducing scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a metered mutation tool with no annotations and no output schema, the description covers cost, pre-flight checks and named refusals, which is what an agent most needs before calling it. It stops short of describing the success result (run id, async behavior) and required entitlements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so agentKey, modelId, instructions, targetPage and requestIdempotencyKey are already documented. The description only adds semantic color for targetPage (the run 'briefs that page and no other' and can trigger target_page_refused), which is a marginal increment over the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Trigger a metered manual managed-agent run'), which implicitly separates it from the read-side siblings devtune_get_agent_run and devtune_list_agent_runs. However, it never names an alternative tool, so the differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the manual-trigger path and describes the failure conditions (no readable evidence, unusable targetPage), which edges toward when-not-to-use guidance. But it never says when to prefer this over the sibling run-related tools or what prerequisites (credits, agent selection via devtune_list_agents) must be in place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_search_libraryCInspect
Hybrid-search the project Library. Current versions are returned by default.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| cursor | No | Opaque cursor from the previous response. | |
| includeSuperseded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does mention that 'current versions are returned by default,' which hints at the includeSuperseded parameter behavior. However, it does not explicitly state whether the operation is read-only, nor does it describe side effects, pagination behavior, or sorting. The single behavioral note adds some value but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, which is positive. However, it is under-specified: two short sentences omit essential parameter details and usage context. While each sentence earns its place, the brevity compromises completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 4 parameters, no output schema, and no annotations, this description is incomplete. It does not explain how to construct a query, how pagination works, what the response looks like, or the effect of limit/cursor. An agent would need to infer too much.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only cursor has a description). The description barely compensates: it alludes to includeSuperseded via 'current versions are returned by default' but does not explain query (search term) or limit (result cap). With three of four parameters undocumented in both schema and description, the tool is under-specified for effective invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('hybrid-search') and resource ('project Library'), which clearly indicates the tool's purpose. It distinguishes from siblings like list_library and read_library_item by implying a search functionality, though it does not explicitly name alternatives. Overall, it is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when to use list_library instead, nor does it specify any exclusions (e.g., 'to browse all items, use list_library'). The context is implied but the user is left to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_send_dex_messageBInspect
Send an idempotent message to a Dex thread, steering its active task or resuming a metered task after expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| threadId | Yes | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose the idempotency trait and the effect on the thread's task state, which is valuable beyond the schema. However, it omits other behaviors such as error handling, side effects on non-metered threads, or authentication requirements, leaving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficiently packed sentence that front-loads the core action and purpose. It avoids redundancy, though it uses jargon ('Dex', 'metered task') that might require domain knowledge. Overall, it earns its place without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is too brief. It does not mention prerequisites (e.g., thread existence), what happens on failure, or the expected response. Given 0% schema coverage and the need to guide an agent, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only implicitly references 'message' and idempotency, but it does not explain the semantics of 'threadId' or 'messageId' (e.g., that messageId is the idempotency key). An agent has insufficient guidance to construct correct inputs from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('send an idempotent message') and the resource ('Dex thread'), with a specific purpose ('steering its active task or resuming a metered task after expiry'). This is distinct from the sibling 'devtune_start_dex_conversation' which initiates a new conversation, and the verb+resource construction is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for existing threads by describing 'steering' and 'resuming' actions, but it does not explicitly name alternatives or state when not to use it. Compared to siblings like 'start_dex_conversation', the usage context is implied rather than explicit, so it falls short of a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_set_agent_picks_scheduleAIdempotentInspect
Set off, daily, weekly or monthly. For a recurring cadence, pass the fingerprint from the current schedule estimate. The fingerprint is checked at save time; runs reserve a fresh quote at or below the confirmed high amount. A higher quote skips until re-confirmed. Disabled accounts write nothing. When enabled, periods more than one cadence interval overdue advance without catch-up tests. Daily runs at midnight UTC, weekly on Monday, monthly on the first. Each run is a paid test reserving the high estimate; insufficient credits skip the period and email the owner. Never auto-charges. Off stops future tests; cancel an active test in the app. Requires actions.write and Agent Picks. The OAuth member, or the member who created the API key, needs project management rights.
| Name | Required | Description | Default |
|---|---|---|---|
| cadence | Yes | ||
| fingerprint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnly/destructive/idempotent annotations, the description carries heavy behavioral detail: the fingerprint is validated at save time, runs reserve a quote at or below the confirmed high amount, higher quotes skip until re-confirmed, disabled accounts write nothing, overdue periods advance without catch-up, insufficient credits skip the period and email the owner, and it never auto-charges. It also states required permissions (actions.write, Agent Picks, project management rights) — materially beyond the annotations and fully consistent with them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The actionable part (cadence first, then the fingerprint precondition) is front-loaded and no sentence is pure filler. However, many distinct rules — credit skips, overdue advance, permissions — are packed into an unstructured run-on block that would read better as separated clauses or bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with no output schema, the description covers preconditions, side effects, cost behavior, permissions and the off-state, which is most of what an agent needs. It does not say what the call returns or how to verify the saved schedule, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: it explains where the fingerprint comes from ('the current schedule estimate') and that it is checked at save time, and it gives concrete timing semantics for each cadence value (midnight UTC, Monday, first of month). It never defines the fingerprint format (64-hex) or why a stale fingerprint fails beyond 'checked at save time', leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening ('Set off, daily, weekly or monthly') plus the fingerprint instructions make it clear this configures the recurring cadence for Agent Picks tests, a specific verb+resource. It never explicitly contrasts itself with the read-side sibling devtune_get_agent_picks_schedule or devtune_update_agent_picks_settings, so the agent must infer the boundary from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'For a recurring cadence, pass the fingerprint from the current schedule estimate' effectively routes the agent through the get-schedule tool first, and 'Off stops future tests; cancel an active test in the app' names what this tool does not do. It lacks an explicit when-to-use-vs-siblings statement (e.g. versus update_agent_picks_settings), 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.
devtune_start_action_draftAInspect
Start a content-draft run for an action, for accounts with content drafts: the Page Drafter for a create action, the Section Editor for a refresh action. The same checks as Generate draft in the app apply, and a refusal carries its reason: not_content_action, read_only (live or archived), brief_not_ready, brief_outdated (the brief predates the current format; regenerate it), no_target_page, page_locked, draft_kind_changed (the action now takes the other kind than the draftKind passed), forbidden (needs the manage permission) or unavailable (content drafts are off). The caller must be a member of the project. Retrying with the same requestIdempotencyKey returns the same run as it stands, even if the action has since changed, with status failed if that run failed; reusing it for a different request, including another modelId (omitted means the account default), is a conflict. The run uses agent credits; read the estimate from devtune_get_action_draft first. Returns the run id; follow it with devtune_get_action_draft, whose run is this one while it is in flight and whose current version is the draft once it finishes. An account with content drafts can also read the run metadata with devtune_get_agent_run, whose draftOutput stays null for content drafts; an account that drafts only Agent Picks Actions cannot read that run. Retrieve the actual draft with devtune_get_action_draft using actions.read under its existing action-specific checks. A draft is never published: a person reviews it.
| Name | Required | Description | Default |
|---|---|---|---|
| modelId | No | Optional model id from devtune_get_action_draft models; the default model when absent. | |
| actionId | Yes | UUID of the action. | |
| draftKind | No | The draft you expect from devtune_get_action_draft; the start refuses with draft_kind_changed if the action now takes the other kind. | |
| requestIdempotencyKey | Yes | Required caller-generated UUID for idempotent retries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it enumerates every refusal reason with its cause, explains idempotency semantics (same key returns the same run; reuse for a different request/modelId is a conflict), states that runs consume agent credits, and notes the draft is never published and requires human review.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and outcome are front-loaded and little is wasted, but the refusal enumeration is delivered as a single dense inline run-on rather than structured, making the middle harder to scan than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, side-effecting, credit-consuming tool with no output schema, the description covers the return value (the run id), run lifecycle, permissions, idempotency, and downstream retrieval steps. Nothing an agent needs to invoke correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the schema defines all four params. The description still adds real meaning beyond it: modelId omitted means the account default, requestIdempotencyKey idempotency/conflict behavior, and how draftKind interacts with the draft_kind_changed refusal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource ('Start a content-draft run for an action') and immediately distinguishes the two draft flavors (Page Drafter for create, Section Editor for refresh). It is clearly separable from siblings like devtune_get_action_draft and devtune_generate_action_brief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing is provided: read the credit estimate from devtune_get_action_draft first, follow up with devtune_get_action_draft, and optionally read run metadata via devtune_get_agent_run. Prerequisites (project membership, manage permission for the 'forbidden' case) and exclusions (accounts that only draft Agent Picks Actions) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_start_dex_conversationCInspect
Start an idempotent, metered Dex conversation for the project using the same web-channel contract as the in-app dock.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It does mention 'idempotent' (safe to retry) and 'metered' (likely cost/rate implications), which are valuable traits. However, it does not disclose side effects such as whether a new thread is created, what the response contains, or any prerequisites like authentication or existing thread context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the key action and qualities. It is concise and avoids redundancy. However, it could be slightly restructured to include usage guidance without becoming verbose, so it loses a point for not maximizing the space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that starts a conversation, the description is incomplete: it does not explain what a 'Dex conversation' is, what the 'web-channel contract' entails, what the expected output is (e.g., a thread ID), or how to handle the required messageId (e.g., for idempotency). With no output schema and no annotations, the agent is left with insufficient context to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% – the schema provides no descriptions for 'message' or 'messageId'. The description does not mention either parameter or explain their purpose or format. Since the description must compensate for the schema's lack of detail and it fails to do so, this is a significant gap for an agent trying to construct a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Start') and resource ('Dex conversation'), and adds useful qualifiers ('idempotent, metered'). However, it doesn't explicitly differentiate this from the sibling devtune_send_dex_message or other conversation-related tools, so while the purpose is clear, the boundary to alternatives is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal context about when to use this tool ('same web-channel contract as the in-app dock') but offers no explicit guidance on when to choose it over devtune_send_dex_message, devtune_list_dex_threads, or other siblings. No exclusions or conditions are mentioned, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_start_prompt_set_analysisADestructiveInspect
Obtain explicit human approval of the credit estimate before starting or retrying analysis and pass that exact value as approvedEstimatedCredits. A changed estimate returns a conflict requiring renewed approval. Reserves estimated credits and settles actual usage; an active run is reused. Produces proposals without applying them. Requires actions.write and a user-attributed credential with devtune.manage. humanApproved attests to approval obtained from the human, not a decision the agent can make.
| Name | Required | Description | Default |
|---|---|---|---|
| humanApproved | Yes | ||
| approvedEstimatedCredits | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, destructive=true, idempotent=false), the description discloses meaningful behavior: it reserves estimated credits and settles actual usage, reuses active runs, produces proposals without applying them, and requires specific permissions. It also clarifies that humanApproved must attest to genuine human approval, which is critical semantic context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficiently structured, leading with the primary mission and then layering constraints, side effects, and permission requirements. Every sentence adds unique value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description provides enough context for correct invocation: prerequisites, parameter semantics, side effects, error condition, and post-condition. The agent knows what triggers a conflict, what happens to credits, and what the tool does not do (apply proposals).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully carries parameter meaning. It explains that approvedEstimatedCredits must be the exact pre-approved estimate and that a changed estimate causes a conflict requiring renewed approval. It also defines humanApproved as evidence of human approval, not an agent decision.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: start or retry prompt set analysis after obtaining human approval of the credit estimate. It also distinguishes this from the read-only sibling get_prompt_set_analysis by emphasizing the action of starting/retrying an analysis run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use it: before starting or retrying analysis, and it notes that an active run is reused. It does not explicitly name alternatives or when not to use it, but the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_unclaim_content_changeAInspect
Unclaim an unchanged manual claim using its current claimToken from devtune_get_content_changes. Obtain human approval first. Archives the action and removes its measurement from totals; preserves history. Rejects edited, linked or legacy claims. Requires actions.write.
| Name | Required | Description | Default |
|---|---|---|---|
| claimToken | Yes | ||
| changeEventId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden of behavioral disclosure. It covers key side effects: archives the action, removes its measurement from totals, preserves history, rejects edited/linked/legacy claims, and mandates the 'actions.write' permission. It does not clarify what happens on failure or whether the unclaim is idempotent, but the provided details are substantial and non-contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four compact sentences: the core operation, the prerequisite for approval, the state-change consequences, rejection criteria, and the required permission. There is no filler or repetition of schema/annotation fields; every sentence earns its place and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mutation with no annotations and no output schema, so the description should provide enough operating context. It covers approval, side effects, rejection criteria, and permissions, but it leaves two notable gaps: the meaning of changeEventId (also visible in parameter_semantics) and what the tool returns or how success/failure is signaled. Given the overall simplicity of a two-parameter action, this is a reasonable but incomplete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It explains claimToken at a high level (must be the current token derived from devtune_get_content_changes), but changeEventId is not described at all. With only two parameters, leaving half of them semantically undocumented is a significant gap for an agent trying to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Unclaim') and resource ('an unchanged manual claim'), and clarifies the provenance of the token with 'using its current claimToken from devtune_get_content_changes.' It is clearly distinct from sibling tools like claim_content_change, and the scope ('unchanged manual claim') prevents confusion with list or retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong usage context: requires a human approval first, obtains the claim token from get_content_changes, and rejects edited, linked, or legacy claims. It effectively tells an agent when to use the tool and when not to, though it does not explicitly name the sibling alternative for re-claiming content (e.g., devtune_claim_content_change), which would make the guidance fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_update_actionAIdempotentInspect
Rename an action, set its owner, change its channels, or edit its description. Works on accepted and live actions; restore an archived action first. DevTune's suggestions, including dismissed and snoozed ones, keep their details and have no owner, so accept one first. assignedTo is a member's user id or sign-in email; pass null to unassign. channels is the full set of channels that own the work, at least one; it replaces the current set, and order does not matter. description only changes on an accepted action the team created: DevTune's actions keep the description their evidence wrote, and a live action's description is fixed until the action is reopened. Owner ids and names are on devtune_get_actions. Returns the action with description, channels, assignedTo and ownerName. Does not notify the owner or mark the brief out of date.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), it discloses real behavioral traits: channels 'replaces the current set,' description changes are restricted by action type, and 'Does not notify the owner or mark the brief out of date,' which is a valuable side-effect disclosure. This is far richer than the annotation triad.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the action verbs and every sentence earns its place (prerequisites, param rules, side effects). It is a dense single block, so readability is slightly taxed, but there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, it states the return shape ('Returns the action with description, channels, assignedTo and ownerName') and lists side-effect behavior. For a mutation tool with non-trivial constraints, all the information an agent needs to invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema exposes zero properties, the description documents the effective parameters in detail: assignedTo is a user id or sign-in email and accepts null to unassign; channels is the full owning set, at least one, replaces the prior set, order irrelevant. It adds substantial meaning that the empty schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the exact operations performed: 'Rename an action, set its owner, change its channels, or edit its description.' This is a specific verb+resource statement that an agent can distinguish from read siblings like devtune_get_actions without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out prerequisites and exclusions explicitly: 'Works on accepted and live actions; restore an archived action first,' and explains that DevTune suggestions have no owner and must be accepted first. It further scopes which actions allow a description edit, so when-to-use and when-not are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_update_agent_picks_settingsAIdempotentInspect
Save the ordered agent/model choices for this project's paid Agent Picks tests. Two models of one agent are separate entries. Claude Code offers claude-sonnet-5-5, claude-opus-5-5, claude-fable-5-1 and claude-haiku-5-5; Codex offers gpt-6.1-sol, gpt-6-astra and gpt-6-luna; Pi and OpenCode offer any of those seven. Pi and OpenCode need an Agent Picks Pro or Enterprise plan: on another plan, adding either is refused with reason agent_not_in_plan, and paid tests leave out the ones saved before a downgrade. Requires an existing setup, Agent Picks access and actions.write. Does not start a test or change the starter test's fixed models. Returns enabled_agents and enabled_agent_models.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled_agent_models | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write/not-destructive/idempotent; the description adds far more: permission scope (actions.write), plan-gating with a specific error reason, the downgrade semantics where previously saved out-of-plan entries are silently excluded from paid tests, and the return fields. The idempotentHint=true annotation is consistent with 'save the ordered choices' set semantics, and the description's ordering/multi-entry rule reinforces it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in sentence one and every subsequent sentence conveys an operative rule rather than filler. It runs long, largely because nine model IDs are spelled out, which is defensible but makes the definition dense enough that a tighter grouping would read faster.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description still names the return payload (enabled_agents and enabled_agent_models). Combined with prerequisites, plan edge cases, downgrade behavior, error reason, and explicit non-goals, an agent has everything needed to decide whether and how to call this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the model field is an unconstrained string, so the description carries the whole burden and does: it enumerates the valid model IDs per agent (four Claude Code, three Codex, all seven for Pi/OpenCode), establishes that two models of one agent are distinct entries, and states that ordering is significant. This compensates almost completely for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Save') plus the exact resource ('ordered agent/model choices for this project's paid Agent Picks tests'), and immediately disambiguates from siblings by noting it neither starts a test nor alters the starter test's fixed models. An agent can distinguish this from devtune_start_action_draft, devtune_set_agent_picks_schedule and the various get_agent_picks_* readers without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions ('Requires an existing setup, Agent Picks access and actions.write'), explicit exclusion boundaries ('Does not start a test or change the starter test's fixed models'), and a plan-qualification rule with the failure mode named (Pi/OpenCode refused with agent_not_in_plan on non-Pro/Enterprise plans). That is when-to-use, when-not-to-use and expected rejection behavior in one block.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_update_knowledge_profileAInspect
Apply an immediate human-authored edit to one Knowledge Profile field. System and agent changes must still use proposals.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| targetField | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does reveal key behavior: the edit is immediate, human-authored, limited to one field, and system or agent changes are not permitted. It stops short of disclosing whether the existing value is overwritten, whether the change is reversible, or what the response looks like, but the most critical governance behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The main action and immediate/human constraint are front-loaded, and the second sentence earns its place by adding an essential exclusion. Every word contributes to correct tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is simple, but there are no annotations and no output schema, so the description needed to explain parameter meaning and side effects. It explains the high-level routing decision well but leaves targetField semantics, value expectations, and post-edit behavior unspecified, making the overall picture incomplete for an agent that must actually invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate for the schema's silence, but it does not. It never mentions targetField or value, does not explain the three allowed field names, and gives no guidance on how value should be formatted. The phrase 'one field' is the only implicit hint and is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Apply') with a clear resource ('Knowledge Profile field') and a precise scope ('one field'). It also distinguishes itself from proposal-based updates by saying the edit is immediate and human-authored, which separates it from siblings like review_knowledge_proposal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('immediate human-authored edit') and when not to ('System and agent changes must still use proposals'). This gives the agent a clear exclusion rule and points to the proposal workflow as the alternative, even without naming the sibling tool directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_update_library_itemCInspect
Change a Library item’s agent availability or manually detach/relink a Superseded version.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | ||
| successorId | No | ||
| groundingEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the tool mutates a Library item and can manually detach/relink a Superseded version, but it does not state whether changes are reversible, what side effects occur on linked versions, whether permissions are required, or what the response contains. For a mutation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and front-loads the primary purpose. It is concise, though it could be slightly more structured by separating the two operation types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It does not explain the effect of successorId null, whether groundingEnabled is required for the availability change, or what happens to a Superseded item when relinked. An agent would need to open the schema and guess at semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only loosely maps to the parameters: 'agent availability' likely maps to groundingEnabled, and 'detach/relink a Superseded version' maps to successorId. itemId is implied as the target. The description does not explain the semantics of successorId null vs a UUID, nor the meaning of groundingEnabled, leaving the agent to infer parameter meaning from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Change') and resource ('Library item'), and names two distinct operations: changing agent availability and detaching/relinking a Superseded version. It is clear enough to distinguish from siblings like devtune_read_library_item and devtune_upload_library_item, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as devtune_update_knowledge_profile or devtune_upload_library_item. It implies usage through the operation description but does not state prerequisites, when not to use it, or which sibling covers related update scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtune_upload_library_itemBInspect
Upload a text document into the project Library, optionally replacing an existing upload as its next version.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| content | Yes | ||
| replaceItemId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only mentions 'upload' and optional replacement, but does not disclose permissions, whether old versions are preserved, idempotency, or what happens on failure. Critical behavioral context for a write operation is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no waste. The purpose is front-loaded, and the optional replacement behavior is mentioned early. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are no annotations and no output schema, the description is too sparse. It omits error handling, size limits (though schema has maxLength), auth requirements, and the exact semantics of replaceItemId. An agent would lack sufficient context to use this tool reliably, especially when deciding between upload and update.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'text document' and 'optionally replacing' but does not explain the individual parameters (title, content, replaceItemId) or their constraints. While parameter names are self-explanatory, the description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear action (upload) and resource (text document into Library), and mentions optional replacement as next version. However, it does not differentiate from the sibling devtune_update_library_item, leaving ambiguity about when to upload vs update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage: create a new library item or replace an existing one as a new version. But it does not explicitly state when to use this over alternatives like update_library_item, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
devtune_update_agent_picks_settings1 field changed- changed
Input schema / properties / enabled_agent_models / items / properties / agent / enumPrevious value: -[ - "claude_code", - "codex" -]New value: +[ + "claude_code", + "codex", + "opencode", + "pi" +]
2 tool updates
- Changed
devtune_get_agent_picks_history1 field changed- added
Input schema / properties / test_idAdded value: +{ + "format": "uuid", + "type": "string" +}
- Changed
devtune_get_agent_picks_summary1 field changed- added
Input schema / properties / test_idAdded value: +{ + "description": "Read this completed test, from the history, instead of the shown one.", + "format": "uuid", + "type": "string" +}
1 tool update
- Added
devtune_get_agent_picks_cells
1 tool update
- Added
devtune_get_agent_picks_run_trace
1 tool update
- Changed
devtune_get_actions1 field changed- added
Input schema / properties / pageUrlAdded value: +{ + "description": "Filter by target page URL before counts and pagination. Matches host and path, ignoring scheme, www, query, fragment and trailing slash.", + "format": "uri", + "maxLength": 4096, + "pattern": "^https?:\\/\\/", + "type": "string" +}
3 tool updates
- Changed
devtune_get_actions1 field changed- added
Input schema / properties / sourceAdded value: +{ + "description": "Filter Actions and Outcomes by source; both is the default", + "enum": [ + "ai_search", + "agent_picks", + "both" + ], + "type": "string" +}
- Added
devtune_get_agent_picks_actions - Changed
devtune_get_outcomes_ledger1 field changed- added
Input schema / properties / sourceAdded value: +{ + "description": "Filter Actions and Outcomes by source; both is the default", + "enum": [ + "ai_search", + "agent_picks", + "both" + ], + "type": "string" +}
1 tool update
- Added
devtune_list_visibility_response_history
6 tool updates
- Added
devtune_create_webhook - Added
devtune_delete_webhook - Added
devtune_get_agent_picks_run - Added
devtune_list_agent_picks_runs - Added
devtune_list_webhooks - Added
devtune_rotate_webhook_secret
Publisher details
- Operator
- DevTune · Publisher source
- Operator website
- https://devtune.ai · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://docs.devtune.ai/api-reference/overview · Publisher source
- Trust center
- Unknown
- Restrictions
- Paid plan required. 14 day trial available. · Publisher source
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npmMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.164 npm1MIT

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