Duvo MCP
Server Details
Governed retail, FMCG, and CPG operational tools: runs, cases, approvals, audit-ready execution.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Tool Definition Quality
Average 3.9/5 across 316 of 316 tools scored. Lowest: 2.2/5.
Despite detailed descriptions, many tool names are highly ambiguous, with multiple tools covering the same conceptual actions (e.g., acceptClarityCaptureSuggestion vs. acceptClarityTeamAssignmentSuggestion, or the many deleteClarity*Interview tools). The set is so large that distinguishing between, say, listClarityFolders, listClarityProcesses, and listClarityProcessSummaries requires reading deep into descriptions, reducing agent selection accuracy.
The naming convention is predominantly verb_noun (e.g., createClarityProcess, listAgents, deleteQueue), and is remarkably consistent across the 316 tools. There are only minor deviations, such as 'fileSuggestedClarityProcesses' (verb + adjective noun) and 'bulkUpdateCasePriority' (where 'bulk' could be seen as a prefix), but overall the pattern holds strongly.
With 316 tools, this server is extremely oversized for any single agent to manage effectively. The massive number of tools suggests poor modularization—many of these tools likely belong in separate, smaller servers focused on specific domains (e.g., Clarity, Pulse, Agent management). The cognitive load for an agent to choose from 316 options is very high, leading to frequent misselection.
The tool surface covers an extraordinarily wide range of operations across the Duvo platform: agents, runs, cases, queues, Clarity processes, skills, integrations, notifications, teams, and more. Most resource types have full CRUD and lifecycle management. Notable minor gaps exist (e.g., no tools for managing specific notification batch severities dynamically, and some interview management is missing batch operations), but for the platform's scope, coverage is impressively thorough.
Available Tools
330 toolsacceptClarityCaptureSuggestionAccept Clarity Capture SuggestionAInspect
Accept a pending Process Landscape capture suggestion and create the durable capture request (manager+).
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | ||
| suggestionId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool is not read-only, not idempotent, and not destructive. The description adds behavioral context by stating it 'creates the durable capture request' and implies the suggestion is consumed (accepted). It also discloses an authorization requirement ('manager+'). This goes beyond what annotations provide, though it could mention side effects like approval workflows.
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 of 15 words, no filler or redundancy. It front-loads the action and resource, making it quick for an agent to parse. Every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no enums), the description is adequate for basic invocation but lacks parameter semantics and any mention of return values or side effects. It does not cover what happens after acceptance (e.g., notifications, state changes). The agent may need to infer from context or previous interactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage—neither 'nodeId' nor 'suggestionId' are explained. The description hints that 'suggestionId' relates to the capture suggestion and 'nodeId' is likely the landscape node, but it does not explicitly define their roles or constraints. The description should compensate for the missing schema descriptions but falls short.
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 ('Accept'), the resource ('pending Process Landscape capture suggestion'), and the outcome ('create the durable capture request'). It distinguishes itself from sibling tools like dismissClarityCaptureSuggestion and acceptClarityLandscapeNode by specifying the exact type of suggestion and the resulting durable request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly identifies the context—pending landscape capture suggestions—and includes a role constraint ('manager+'), but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., acceptClarityTeamAssignmentSuggestion) or exclude cases (e.g., when to dismiss instead). The usage is clear but not deeply instructional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acceptClarityLandscapeNodeAccept Clarity Landscape NodeAInspect
Accept a proposed area folder into the active process landscape, so it stops being a proposal and becomes part of the real structure (organization admin+). Only area folders can be accepted; a proposed process becomes real through assignClarityLandscapeNodeTeam instead. Re-accepting an already-active area is a no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| nodeId | Yes | The proposed area folder to accept. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that this is a state-changing mutation (accepting a proposal), not destructive (re-accepting is a no-op), and requires admin privileges. Annotations already indicate destructiveHint=false, but the description adds context about authorization and the no-op behavior, which are valuable beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-loaded with the core purpose, followed by a clear exclusion and an edge case. No unnecessary words or repetition. 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?
The description covers the essential behavior, usage boundaries, and a key edge case. With only 2 parameters, no output schema, and basic annotations, this is largely complete. It does not explain return values or error handling, but for a simple acceptance action, the description provides sufficient context for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only nodeId has a description). The tool description adds meaning by clarifying that nodeId is the proposed area folder, and the overall context explains orgId is the organization (via 'organization admin+'). However, orgId is not explicitly described in the tool description, leaving a slight gap. Still, it adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Accept', the resource 'proposed area folder', and the outcome: it stops being a proposal and becomes part of the real structure. It also distinguishes from the sibling tool 'assignClarityLandscapeNodeTeam' by specifying that only area folders are accepted via this tool, while processes go through the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (only for area folders) and when not to use it (proposed processes use assignClarityLandscapeNodeTeam instead). Also mentions the authorization requirement ('organization admin+') and the edge case that re-accepting an already-active area is a no-op, providing clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acceptClarityProcessJoinAccept Clarity Process JoinBInspect
Accept a clarity interview invite link and gain process access.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set destructiveHint to false, so this is not destructive. The description does not contradict annotations. It adds that the action grants 'process access', which is useful but vague. It does not disclose if the action is reversible, if it sends notifications, or if it replaces existing memberships. With no output schema, it carries some burden but is not severely lacking.
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: one sentence of 10 words. It front-loads the action and purpose with no filler. Every word adds value given the simple tool with one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, no output schema, and a straightforward action, the description covers the basic purpose but lacks details about what 'process access' entails, error scenarios (e.g., expired or invalid token), and the resulting state. Sibling tools suggest related workflows (getClarityProcessJoinInfo, createClarityInviteLink) that the agent might need before using this tool, but the description does not hint at these dependencies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter, 'token', with no description. Schema description coverage is 0%, so the description should compensate. The description mentions 'invite link' but does not clarify that the 'token' parameter is the extracted token from that link, nor does it describe the token format or source. This leaves the agent with ambiguity about how to obtain the token.
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 specific verbs and resources: 'Accept a clarity interview invite link' and 'gain process access'. It clearly distinguishes the purpose from sibling tools like createClarityInviteLink or deleteClarityProcessInviteLink. However, it could be slightly more precise about what 'process access' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives such as createClarityProcessInviteLink, getClarityProcessJoinInfo, or acceptClarityLandscapeNode. It does not mention prerequisites (e.g., having a valid invite link), nor does it indicate that the user must be the intended recipient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acceptClarityTeamAssignmentSuggestionAccept Clarity Team Assignment SuggestionBInspect
Accept a pending Process Landscape team-assignment suggestion and durably assign the suggested team (manager+).
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | ||
| suggestionId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (readOnlyHint false, idempotentHint false, destructiveHint false). Description says 'durably assign' but omits side effects, authorization needs, reversibility, or whether it overwrites existing assignments.
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?
Single sentence with 17 words, front-loaded with purpose. However, it could be slightly more structured without adding significant length (e.g., listing parameters).
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 minimal annotations, the description leaves major gaps: what happens after acceptance, meaning of 'manager+', return value, and prerequisites. A mutation tool requires richer context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description does not mention either nodeId or suggestionId, failing to clarify their roles or constraints beyond the schema's empty format definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'accept' and resources 'pending Process Landscape team-assignment suggestion', clearly distinguishing from siblings like dismissClarityTeamAssignmentSuggestion or acceptClarityCaptureSuggestion.
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 the tool is for pending suggestions but does not explicitly mention when to use accept vs dismiss or other alternatives, nor does it state preconditions like 'only if suggestion exists'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
addClarityLandscapeNodePersonAdd Clarity Landscape Node PersonAInspect
Add a person involved in the process behind a process landscape node. Name only records a placeholder; supplying an email also gives that person access to the process and emails them an invitation, so only pass an email the user asked you to invite.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| role | No | ||
| No | |||
| orgId | Yes | ||
| nodeId | Yes | A process landscape node that is linked to a real process. | |
| teamId | No | ||
| teamRole | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly, non-destructive, non-idempotent. The description adds critical behavioral detail: supplying an email gives process access and sends an invitation—a side effect not covered by annotations. Does not mention idempotency or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first clearly states purpose, second adds essential behavioral nuance. No redundant or filler content. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core action and the email side effect, but lacks information on return value, failure scenarios, or guidance on optional parameter combinations. With no output schema, the agent is left guessing what the tool returns or if it succeeds.
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 14% (only nodeId has a description). The description clarifies the crucial name vs email distinction, but provides no additional meaning for role, teamId, teamRole, leaving their purpose ambiguous. Partial compensation for low 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 tool adds a person to a process landscape node, using the verb 'Add'. It distinguishes the core action from siblings like batchAdd or remove/update, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use name vs email, warning that email triggers an invitation and access grant. No mention of when to prefer batchAdd or update over this single-person add, which would improve differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
answerPulseDashboardQuestionAnswer Pulse Dashboard QuestionAInspect
Answer a pending question the Duvo Pulse agent asked and resume the paused run (creator or team editors). Use the toolCallId from the dashboard's message transcript.
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | ||
| artifactId | Yes | ||
| toolCallId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutating nature is known. The description adds behavioral transparency by stating that the run is paused and will be resumed upon answering, and it discloses the authorization boundary ('creator or team editors'). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, just two sentences, and front-loads the core purpose. It efficiently conveys the action, permission, and the source for the critical toolCallId parameter without any 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 description covers the tool's purpose and workflow well but is incomplete regarding parameter semantics. The answers object format and artifactId are essential for correct invocation, and with no output schema and no param descriptions, the description leaves these ambiguous. The permission note and toolCallId hint are helpful, but the tool is more complex than the description acknowledges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has three required parameters (artifactId, toolCallId, answers) with zero description coverage. The description only explains how to find toolCallId, leaving artifactId and the structure/meaning of the answers object entirely unspecified. With such low schema coverage, the description needed to compensate but did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Answer a pending question'), the resource ('the Duvo Pulse agent'), and the effect ('resume the paused run'). It also distinguishes the tool from siblings like sendPulseDashboardMessage and stopPulseDashboardMessage by focusing on answering agent questions, and includes the permission context ('creator or team editors').
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 is for pending questions from the Duvo Pulse agent and explains that the run will resume. It gives a concrete source for the required toolCallId ('from the dashboard's message transcript'). However, it does not explicitly state when not to use this tool or mention alternative tools, 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.
assignCaseLabelsAssign Case LabelsAInspect
Assign one or more labels to a case. Creates the labels on the queue if they don't already exist.
| Name | Required | Description | Default |
|---|---|---|---|
| labels | Yes | ||
| case_id | Yes | The case's unique identifier | |
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already indicating a non-read-only, non-destructive, non-idempotent operation, the description adds valuable context by disclosing that labels are auto-created on the queue if they don't exist. This goes beyond the annotation flags and clarifies the mutational side effect.
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, front-loaded sentences with no redundancy. It conveys the core action and a critical side effect without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity mutation tool with no output schema and helpful annotations, the description covers the primary behavior and the most important side effect. It doesn't mention behavior on existing labels or return value, but these are not critical given the annotations and schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (case_id and queue_id are described). The labels parameter lacks a description, and the tool description does not explain the key/value structure or limits. The description does reinforce the 'one or more' requirement, aligning with the schema's minItems, but adds minimal meaning 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 uses a specific verb 'assign' and identifies the resource (labels on a case). It also clarifies a key side effect (creating labels on the queue), which distinguishes it from sibling tools like unlinkCaseLabels or createQueueLabel.
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 use case (assign labels to a case) but does not explicitly state when to use this tool over alternatives. No when-not conditions or alternative tool references are provided, leaving the agent to infer from the verb and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignClarityExtraCaptureRequestAssign Clarity Extra Capture RequestAInspect
Assign (or unassign, with user_id: null) a team member to fulfil an extra-capture request. Restricted to admins and managers.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Team member to assign, or null to unassign | |
| process_id | Yes | The clarity process id | |
| request_id | Yes | The extra-capture-request id | |
| transformation_proposal_id | Yes | The transformation proposal id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description adds the auth restriction ('Restricted to admins and managers') and clarifies the unassignment behavior. No contradiction with annotations. It does not detail side effects or return behavior, but is transparent about the main operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently covers the action, unassignment option, and access restriction. No wasted words, clear and direct.
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 (4 required params, no output schema), the description covers the core operation, unassignment, and auth. It does not describe return values or side effects, but these are not critical for a straightforward assignment 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 parameters are already documented. The description repeats the null assignment behavior for user_id, which is already in the schema, adding no new semantic value. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (assign/unassign), the target (team member), and the resource (extra-capture request). It distinguishes from siblings like assignClarityLandscapeCaptureRequest by specifying 'extra-capture request'.
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 extra-capture requests and mentions unassignment with null, but does not explicitly differentiate from sibling tools or provide when-not-to-use guidance. The context is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignClarityLandscapeCaptureRequestAssign Clarity Landscape Capture RequestAInspect
Assign an open Process Landscape capture request to a team member, or unassign it by sending userId: null (manager+).
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | ||
| userId | Yes | ||
| requestId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the mutating nature (assign/unassign) and adds context beyond annotations by revealing role restrictions (manager+ for unassign) and the null userId unassignment pattern. No contradiction with annotations. It doesn't detail side effects or reversibility, but the tool is simple and the description covers key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the verb and resource, includes the unassign pattern, and has zero waste. It is concise while covering the core purpose and key usage nuance.
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 3-parameter mutation without output schema, the description covers the primary behavior and unassign pattern. However, it omits preconditions (e.g., what happens if the request is not open), error states, and the meaning of nodeId and requestId. It is minimally complete but has gaps that could confuse an agent in edge cases.
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 does not explain the meaning of nodeId or requestId. It only adds value for the userId parameter by specifying that null unassigns. This is insufficient given the low coverage; the agent must guess what nodeId and requestId refer to from context.
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 (assign/unassign) and the specific resource (Process Landscape capture request), and distinguishes from sibling assignment tools by naming the resource explicitly. It also includes the special unassign behavior with 'userId: null'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use context: assign an open capture request to a team member, or unassign by sending null. It implies the requirement that the tool is for open requests and that unassignment is manager+ only. However, it does not explicitly differentiate from similar sibling tools like assignClarityExtraCaptureRequest or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignClarityLandscapeNodeTeamAssign Clarity Landscape Node TeamAIdempotentInspect
Set the owning team of a process in the process landscape (organization admin+). On a proposed process this accepts the proposal and creates the real process for that team; on an existing process it moves the process, its captures and its brief to another team.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| intent | No | Pass "accept-proposal" when the node is expected to still be a proposed process; the call then fails if someone already accepted it, instead of silently moving a real process. | |
| nodeId | Yes | The process node whose owning team changes. | |
| teamId | Yes | The team that owns the process from now on. A process always belongs to a team, so null is rejected. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavioral traits beyond annotations: effect on proposed processes (accepts proposal and creates real process), effect on existing processes (moves process, captures, brief). Consistent with idempotentHint=true and destructiveHint=false, and adds side-effect details not captured in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with primary purpose, then nuanced scenarios. Every sentence adds value; no wasted words or redundant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 4 parameters, no output schema. Description covers permission hint (org admin+), behavioral nuance, and associated resources. Minor omission: schema indicates teamId with null is rejected, but description does not mention this. Overall very complete for the complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (3 of 4 params have descriptions). Description adds minimal extra meaning beyond the schema; it references 'proposed process' and 'existing process' which align with the intent enum, but the schema's own descriptions already convey that. No significant param insights beyond what 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?
Description specifies the verb 'set' and resource 'owning team of a process in the process landscape', clearly distinguishing between proposed and existing processes. This differentiates from siblings like acceptClarityLandscapeNode or assignClarityProcessLabels by focusing on the team assignment action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use: for assigning a team, with explicit scenarios for proposed processes (accept proposal) and existing processes (move). Though it does not explicitly mention alternatives or when not to use, the two scenarios provide strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignClarityProcessLabelsAssign Clarity Process LabelsCInspect
Assign process tags to a process.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| labels | No | ||
| labelIds | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only mutation (readOnlyHint: false) and no destructive behavior. The description adds 'assign' as a write action, but does not disclose whether assignments are appended or replaced, or whether labels can be created inline. It provides minimal additional behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, making it concise and front-loaded. However, it is under-specified and omits important details about parameters and behavior, so it is not effectively structured for an agent to use.
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 zero schema description coverage, the description must explain the full operation. It does not mention that there are two ways to assign labels (inline creation vs. existing IDs), nor what happens to existing labels on the process. The description is incomplete for a tool with 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 parameters. It only mentions 'process tags', which vaguely maps to labels, but provides no detail on the 'id' parameter (the process identifier), nor the difference between 'labels' (creating new inline) and 'labelIds' (referencing existing). The description fails to compensate for the schema's lack of explanatory text.
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 ('assign') and resource ('process tags' / 'process'), clearly indicating it attaches labels to a process. It distinguishes itself from sibling tools like createClarityProcessLabel or unlinkClarityProcessLabels, though the term 'tags' instead of 'labels' introduces slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as createClarityProcessLabel (creating label definitions) or unlinkClarityProcessLabels (removing assignments). The description does not mention the two input modes (inline labels vs. existing label IDs) or prerequisites like having the process ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachPulseDashboardConnectionAttach Pulse Dashboard ConnectionAInspect
Attach one of your connections (data sources) to a Duvo Pulse dashboard so the agent can use its tools (creator only).
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| connection_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent, non-destructive operation. The description adds useful behavioral context: it's for making tools available and is creator-only, which implies permission requirements. 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?
Single sentence, front-loaded with the action, and includes only necessary details (purpose, restriction). 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 two-parameter tool with annotations and no output schema, the description covers the core behavior, purpose, and a key restriction. It doesn't mention edge cases like re-attaching or return values, but the low complexity doesn't demand more.
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. It gives context by defining connections as 'data sources' and mentioning 'dashboard', which helps map connection_id to a connection and artifactId to a dashboard. However, it doesn't explicitly state which parameter is which, relying on parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Attach') and clearly identifies the resource ('connections (data sources)' to a 'Duvo Pulse dashboard'), plus the purpose ('so the agent can use its tools'). It distinguishes from sibling tools like detachPulseDashboardConnection and listPulseDashboardConnections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for use: attaching a connection to enable agent tools. Mentions a restriction ('creator only') but doesn't explicitly name alternative tools for when not to use it. The sibling detachPulseDashboardConnection implies a reverse operation, but no explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachRevisionIntegrationsAttach Revision IntegrationsAInspect
Attach one or more integrations to an agent revision. To pin specific connections after attachment, use pinRevisionIntegrationConnection. IMPORTANT for the case-queue-producer and case-queue-consumer integrations: attaching the integration alone is NOT enough — the slot points at no queue and will fail at runtime until you link at least one queue with replaceRevisionIntegrationQueues. After wiring up, call getRevisionCaseQueueSetup to confirm every case-queue slot has linked_queue_count > 0 before starting work.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID | |
| integration_ids | Yes | Integration IDs (or custom integration IDs) to attach to the revision | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, but the description adds critical operational behavior: for case-queue-producer and case-queue-consumer integrations, attaching alone is insufficient and will cause runtime failure unless queues are linked. It also recommends a confirmation step with getRevisionCaseQueueSetup. This far exceeds annotation coverage and gives actionable operational warnings.
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 primary purpose and then delivers precise, high-value warnings and follow-ups. Every sentence earns its place; the 'IMPORTANT' section is justified by the severity of the runtime failure it prevents. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a complex integration semantics requiring warnings about special cases. The description fully covers the attach action, the pinning alternative, the queue-linking requirement, and a verification step. It is complete given the schema provides parameter details and no output schema is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra meaning for integration_ids by explaining that specific integration types (case-queue-producer and case-queue-consumer) have additional requirements beyond simply being in the list. This contextual parameter guidance justifies a score above baseline, though it doesn't detail every 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?
The description uses the specific verb 'Attach' with a clear resource ('one or more integrations to an agent revision'). It explicitly distinguishes itself from related sibling tools by naming pinRevisionIntegrationConnection, replaceRevisionIntegrationQueues, and getRevisionCaseQueueSetup as separate follow-up actions.
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 when-to-use guidance and names alternatives: 'To pin specific connections after attachment, use pinRevisionIntegrationConnection' and 'until you link at least one queue with replaceRevisionIntegrationQueues.' It also gives a verification step, making the usage context unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachRevisionLoginAttach Revision LoginAInspect
Attach a login to a revision so the agent can use it during Runs spawned from that revision. Personal logins can only be attached by their owner; team-shared logins require builder permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | ||
| buildId | Yes | ||
| exposedCredentialId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description adds valuable context: the effect on Runs and permission constraints for personal vs. team-shared logins. This goes beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant wording. The first sentence states the core action and purpose, the second adds a necessary permission constraint. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple attach operation with three UUID parameters and no output schema, the description covers purpose, usage, and permission context. It does not mention return values or error behavior, but given the annotations and simple nature, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the description does not explain any of the three parameters (agentId, buildId, exposedCredentialId). 'Login' is not explicitly mapped to exposedCredentialId, leaving ambiguity. The description fails to compensate for the schema's lack of explanations.
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: 'Attach a login to a revision' and explains the purpose ('so the agent can use it during Runs spawned from that revision'). This specifically distinguishes it from sibling tools like attachRevisionSecret or attachRevisionIntegrations, which target different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool—when a login needs to be attached to a revision for Runs. It also adds permission requirements (owner vs. builder). However, it does not explicitly reference alternatives or state when not to use it, though the purpose clarity largely covers this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachRevisionSecretAttach Revision SecretBInspect
Attach an env-var secret to a revision so its keys are injected into Runs spawned from that revision. Personal secrets can only be attached by their owner; team-shared secrets require builder permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | ||
| buildId | Yes | ||
| credentialId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the agent knows this is a mutating, non-idempotent operation. The description adds useful context about permission constraints (owner vs. builder permissions), which is valuable beyond annotations. However, it doesn't disclose side effects like whether attaching is reversible or what happens on conflict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the primary action, and adds permission context without 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?
With no output schema, no annotations describing behavior beyond flags, and 0% parameter coverage, the description should explain more—such as what response to expect, whether multiple secrets can be attached, or what constitutes a valid credentialId. The permission note helps but is insufficient for a mutating tool with three required UUID parameters.
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, but it does not explain the roles of agentId, buildId, or credentialId beyond implying they identify the revision and secret. It doesn't clarify that credentialId likely refers to a secret's credential, or how the three parameters relate. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool attaches an env-var secret to a revision for key injection into Runs, which is a specific verb+resource+outcome. It differentiates from siblings like attachRevisionIntegrations and attachRevisionLogin by focusing on secrets, though it doesn't explicitly name them as alternatives.
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 (when attaching secrets to revisions) and mentions permission requirements for personal vs. team-shared secrets, but it doesn't explicitly state when to use this tool versus alternatives or when not to use it. It provides some guidance but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authorizeMcpOAuthAuthorize Mcp OAuthAInspect
Start an OAuth-based connection with a remote MCP server using Dynamic Client Registration. Returns an authorization URL the user must open in a browser; once they grant consent, Duvo creates the matching connection and redirects the browser to the optional returnUrl.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name to display for the connection. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| return_url | No | Where to send the user's browser after consent completes. Accepts an absolute URL on a domain Duvo allows, or a path relative to the Duvo frontend (e.g. `/integrations/slack`). | |
| mcp_server_url | Yes | URL of the MCP server requiring OAuth. | |
| oauth_client_id | No | OAuth client ID of a client the user registered on the authorization server themselves (e.g. a NetSuite Integration record). Takes precedence over preregistered credentials and Dynamic Client Registration. Cannot be combined with custom_integration_id. On reconnect, omit to reuse the connection's stored credentials, or provide to replace (rotate) them. | |
| integration_type | No | Optional catalog integration type (e.g. `netsuite`, `asana`). When it names a known MCP OAuth catalog integration and `mcp_server_url` matches that integration's registered server, the connection is treated as a catalog connection; otherwise it requires the custom MCP servers capability. | |
| oauth_client_secret | No | Client secret for `oauth_client_id`. Omit for public clients (PKCE-only). | |
| custom_integration_id | No | Optional ID of a custom integration this connection should be associated with. | |
| reconnect_instance_id | No | When set, the OAuth flow will update the existing connection in place rather than creating a new one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the key behavioral flow: it returns an authorization URL that the user must open, and Duvo creates the connection after consent and redirects to returnUrl. This adds meaningful context beyond the sparse boolean annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), clarifying the multi-step, user-involving nature of the 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 two sentences, front-loaded with the main action and mechanism. Every phrase earns its place: initiating the flow, the DCR method, the authorization URL, the consent step, the connection creation, and the returnUrl redirect. 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?
Given the tool's complexity (9 parameters, no output schema), the description is somewhat brief, but the rich schema fills in the details (e.g., team_id, oauth_client_id, reconnect_instance_id). The description provides the essential conceptual model—OAuth with DCR and the browser-based consent flow—which is sufficient for an agent to understand the tool's role. It could potentially mention reconnection or catalog connections, but the schema covers those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description mentions returnUrl and its role in the redirect, but this largely reiterates the schema description ('Where to send the user's browser after consent completes'). It does not add new meaning or clarify any 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 clearly states the tool's purpose: 'Start an OAuth-based connection with a remote MCP server using Dynamic Client Registration.' It uses a specific verb ('start'), identifies the resource ('remote MCP server'), and mentions the key mechanism (DCR), which distinguishes it from siblings like startNativeOAuth or createConnection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: for OAuth-based connections with a remote MCP server. It explains the flow (returns authorization URL, user grants consent, Duvo creates connection) but does not explicitly mention alternatives or when not to use it. The context is clear, though exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batchAddClarityLandscapeNodePeopleBatch Add Clarity Landscape Node PeopleAInspect
Add one or more people to multiple Process Landscape nodes in a bounded batch. Email entries can create invitations; each node-person outcome reports success, conflict, or delivery failure.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| people | Yes | ||
| nodeIds | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutability (readOnlyHint=false) and non-idempotency, but the description adds valuable context: 'Email entries can create invitations' and 'each node-person outcome reports success, conflict, or delivery failure'. This discloses side effects (invitation creation) and potential failure modes beyond what annotations 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?
Two concise sentences with no wasted words. The first sentence states the primary purpose and scope; the second adds behavioral nuance and outcome reporting. Information is front-loaded and 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 no output schema, the description appropriately mentions outcome reporting (success, conflict, delivery failure). The bounded batch hint aligns with schema constraints (maxItems 20). It covers inputs and key behavioral effects. Missing details about return format or idempotency are minor given the tool's batch nature and sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden. It adds one useful insight: 'Email entries can create invitations', which clarifies the email field's behavioral implication. However, it does not explain orgId, nodeIds, or the people subfields (name, processRole, teamRole). Parameter names are self-evident but the description could add value by detailing constraints or relationships.
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 ('Add one or more people'), the target ('multiple Process Landscape nodes'), and the scope ('bounded batch'). It also mentions outcome reporting, which distinguishes it from the singular sibling tool 'addClarityLandscapeNodePerson'. The verb+resource+scope is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for batch operations across multiple nodes, but does not explicitly state when to use the singular alternative or when not to use this tool. The context of 'bounded batch' and listing multiple nodes provides clear usage context, but lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buildClarityAutomationBuild Clarity AutomationBInspect
Hand a transformation proposal for a v2 clarity process off to the workflow-builder pipeline. Builds from transformation_proposal_id when supplied, otherwise from the process's live proposal. The proposal id is the durable idempotency key, so retries return the same run and a different proposal starts a new run. Returns 202 while the LLM run completes asynchronously, or 409 when the resolved proposal is still being written.
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes | The clarity process id | |
| transformation_proposal_id | No | Transformation-proposal snapshot to build the automation from. Defaults to the process's live proposal. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the transformation_proposal_id is a 'durable idempotency key' that makes retries return the same run, implying idempotent behavior. However, the annotation explicitly sets idempotentHint=false, creating a direct contradiction. According to the rubric, this contradiction warrants a score of 1. The description does add value by disclosing async behavior and conflict responses, but the contradiction overrides.
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: three sentences, each with a clear purpose. The first sentence states the main action, the second explains idempotency and retry behavior, and the third describes return codes. No redundant or unnecessary information is present.
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 initiation of an async workflow (202) and a conflict state (409), but does not cover what happens after the async run completes or how to retrieve results. Given that there is no output schema, the description could be more complete by mentioning potential success responses or follow-up actions. It is adequate for the triggering step but leaves the lifecycle partially open.
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?
While the input schema already provides 100% coverage with descriptions, the description adds significant behavioral semantics: it explains that transformation_proposal_id defaults to the process's live proposal and that it serves as an idempotency key. This extra context helps the agent understand the parameter's role beyond the schema's format and type constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Hand a transformation proposal for a v2 clarity process off to the workflow-builder pipeline.' It specifies two modes of operation (with or without transformation_proposal_id) and distinguishes this tool from siblings by its unique action of initiating an automation build, which no other sibling tool explicitly does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains internal behavior (idempotency key, retry semantics, return codes) but does not provide any guidance on when to use this tool versus alternatives like proposeClarityLandscapeProcess or generateClarityProcessSnapshot. There is no explicit 'when to use' or 'when not to use' context, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulkCreateTeamInvitesBulk Create Team InvitesAInspect
Invite several people to a team in one call, emailing each invitation immediately. Returns per-batch counts: succeeded were invited, skipped were already on the team, already had a pending invitation, or were a duplicate of an earlier entry in the same batch, failed could not be emailed (those invitations are rolled back). The accept link is always built from the server-configured app origin.
| Name | Required | Description | Default |
|---|---|---|---|
| members | Yes | People to invite, at most 50 per request. An email already on the team, or already holding a pending invitation, is skipped rather than failing the batch. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| frontendUrl | No | Deprecated. Accepted for backward compatibility and IGNORED: the accept link is always built from the server-configured app origin, so a caller cannot point invitation emails at another host. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral details beyond annotations: immediate emailing, per-batch counts (succeeded/skipped/failed), rollback of failed invitations, and the server-configured accept-link origin. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying essential information: action and emailing, result categorization with rollback, and the accept-link caveat. 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?
Even without an output schema, the description covers the return shape (succeeded/skipped/failed counts), edge cases (skips, duplicate detection), and side effects (immediate email, rollback). Combined with the schema's thorough parameter descriptions, this is fully sufficient 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?
With 100% schema coverage, the schema already documents parameter types and constraints. The description adds useful context about batch result semantics (skip reasons, rollback) and reinforces that frontendUrl is ignored, enhancing understanding beyond 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 ('invite'), resource ('several people to a team'), and scope ('in one call'), clearly distinguishing the bulk tool from siblings like createTeamInvite (single invite) and createTeamInviteLink (link-based).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the intended use case—batch invitations—by emphasizing 'several people in one call' and describing per-batch results. However, it does not explicitly name alternatives or state when not to use this tool, like for a single invitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulkReprocessCasesBulk Reprocess CasesAInspect
Re-process multiple cases on a chosen agent. Any active runs on the selected cases are interrupted first; the cases are then reset to pending and assigned to the chosen agent for the next dispatcher tick. The chosen agent must already be connected to the queue as a case-queue-consumer (with the trigger enabled or disabled).
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Free-text search selecting the cases when all_matching is true. | |
| filters | No | Filters selecting the cases when all_matching is true. | |
| agent_id | No | The agent that should run on the selected cases. Must be a consumer of this queue. | |
| case_ids | No | Explicit case IDs to act on (1-100). Provide this or set all_matching. | |
| queue_id | Yes | The queue's unique identifier | |
| all_matching | No | When true, act on every case matching the provided filters/search instead of an explicit id list. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: active runs are interrupted, cases are reset to pending and reassigned. This goes beyond the basic annotations (readOnlyHint=false, destructiveHint=false) by explaining the mutation's nature and side effects. It does not mention rate limits or error conditions, but the core behavior is well-covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the purpose, followed by key behavioral details and a prerequisite. Every sentence is essential and free of fluff. It is highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, nested filters, two selection modes, no output schema), the description covers the core behavior and a prerequisite but omits mention of the two operational modes, batch limits (case_ids max 100), or error handling. It is sufficient for simple use cases but lacks completeness for a fully autonomous agent to use without schema inspection.
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?
Input schema coverage is 100% with clear descriptions for all parameters. The tool description adds no additional parameter-level meaning—it mentions the 'chosen agent' but does not explain the two operational modes (case_ids vs. all_matching) or how filters work. The schema already handles parameter semantics, so the description's contribution is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Re-process multiple cases on a chosen agent.' It explains the specific steps (interrupt active runs, reset to pending, assign to agent) and distinguishes it from sibling bulk operations like bulkUpdateCasePriority or bulkUpdateCaseStatus, which update status without reprocessing.
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 prerequisite ('The chosen agent must already be connected to the queue as a case-queue-consumer'), which helps the agent determine if the tool is applicable. However, it does not offer explicit guidance on when to use this tool vs. alternatives (e.g., bulkUpdateCaseStatus, stopRun, startRun) or when not to use it. The context is clear but lacks comparative direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulkUpdateCasePriorityBulk Update Case PriorityAInspect
Set the priority of multiple cases. Priority only affects the order pending cases are picked up in: due postponed cases are handled first, then higher priority. It never interrupts runs or changes case status. Set none to clear priority back to the default.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Free-text search selecting the cases when all_matching is true. | |
| filters | No | Filters selecting the cases when all_matching is true. | |
| case_ids | No | Explicit case IDs to act on (1-100). Provide this or set all_matching. | |
| priority | Yes | Target priority for each case. `medium`/`high` raise it above the default; `none` clears it. | |
| queue_id | Yes | The queue's unique identifier | |
| all_matching | No | When true, act on every case matching the provided filters/search instead of an explicit id list. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it explains the effect of priority on ordering ('due postponed cases are handled first, then higher priority'), guarantees that runs are not interrupted and status is unchanged, and clarifies that setting `none` resets to default. This is valuable since the annotations only provide basic readOnlyHint, idempotentHint, and destructiveHint flags. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: three sentences, each earning its place. The first states the core purpose, the second explains behavioral implications, and the third clarifies a special parameter value. It is front-loaded with the most critical information and contains zero fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the core operation and key behavioral traits but leaves out some important context for a 6-parameter tool with nested objects. It doesn't explain the selection mechanism (case_ids vs all_matching with filters/search), the role of queue_id (why it's required), batch size limits, or error handling. While the schema covers these details, the tool description could benefit from a brief overview linking the parameters together.
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 input schema already adequately describes each parameter, including the priority enum and case_ids limits. The description adds minimal parameter-specific insight beyond reinforcing that `none` clears priority (already in the schema). The description does provide broader behavioral context (like how priority affects ordering), but that's not parameter-specific. 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 starts with 'Set the priority of multiple cases,' providing a specific verb and resource. It clearly explains that priority affects only the order of pending cases and explicitly states what the tool does not do (interrupt runs, change status), which distinguishes it from sibling tools like bulkUpdateCaseStatus or bulkReprocessCases. The mention of 'Set `none` to clear priority back to the default' adds further precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need to change priority for multiple cases) and explicitly says what it doesn't affect (runs, status), which helps avoid misuse. However, it does not provide explicit guidance on when not to use it (e.g., for single cases, use updateCase instead) or name alternative tools. The advice is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulkUpdateCaseStatusBulk Update Case StatusAInspect
Update the status of multiple cases to pending, completed, failed, or canceled. Interrupts any active runs and releases their case ownership, but never cancels their human-in-the-loop state — pending requests and open approval batches stay answerable/resolvable from the run view. Resetting to pending re-dispatches cases to the queue's trigger consumer.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Free-text search selecting the cases when all_matching is true. | |
| status | Yes | Target status for each case. `completed`, `failed`, and `canceled` are terminal — `canceled` records a deliberate human stop, distinct from a system `failed`. `pending` resets the case (the queue's trigger consumer, if any, will re-claim it). `success` is not settable: it means an evaluation passed. | |
| filters | No | Filters selecting the cases when all_matching is true. | |
| case_ids | No | Explicit case IDs to act on (1-100). Provide this or set all_matching. | |
| queue_id | Yes | The queue's unique identifier | |
| all_matching | No | When true, act on every case matching the provided filters/search instead of an explicit id list. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals meaningful side effects: interrupts active runs, releases case ownership, preserves human-in-the-loop state, and re-dispatches on reset to pending. This substantially exceeds what readOnlyHint/idempotentHint/destructiveHint 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?
Three dense, purposeful sentences. The first sentence front-loads the primary action, and the next two add essential side-effect details without redundancy 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?
The description plus schema covers purpose, side effects, status semantics, and selection options well. It does not mention return/result behavior, and there is no output schema, so a small completeness gap remains.
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 some context around status behavior, but the parameters themselves (queue_id, case_ids, filters, all_matching, search) are already well explained 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?
The description clearly states the action: 'Update the status of multiple cases' and enumerates the four settable statuses. It also identifies a distinctive side effect (interrupting active runs and releasing case ownership), which distinguishes it from sibling tools like bulkUpdateCasePriority and bulkReprocessCases.
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 behavioral context for when to use the tool, including what happens to active runs and how pending re-dispatches cases. It does not explicitly name alternatives or state when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkMcpOAuthCheck Mcp OAuthAInspect
Probe an MCP server URL to discover whether it supports OAuth Dynamic Client Registration. Returns the authorization endpoint and required scopes when supported. Useful as a precursor to /v2/teams/:team_id/connections/oauth/mcp/start or /v2/teams/:team_id/connections. Performs no writes.
| Name | Required | Description | Default |
|---|---|---|---|
| mcp_server_url | Yes | URL of the MCP server to probe for OAuth support. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation contradiction: readOnlyHint is false, implying the tool may modify state, yet the description states 'Performs no writes.' This sends conflicting signals to an agent. It also does not describe error behavior for unsupported URLs, which is relevant for a probe 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?
Three tightly scoped sentences deliver purpose, return value, usage context, and safety in under 40 words. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter probe with no output schema, the description is fairly rich (return value, usage, safety). However, the contradictory annotation undermines completeness, and it does not state what happens when OAuth is unsupported (e.g., error vs. empty response).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter mcp_server_url is already described as 'URL of the MCP server to probe for OAuth support.' The description restates this without adding format, constraints, or validation semantics, so it provides no additional value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Probe') and a resource ('MCP server URL') with a clear goal: discover OAuth Dynamic Client Registration support. It distinguishes itself from sibling tools like probeMcpServer by focusing on OAuth-specific discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames the tool as a precursor to specific connection endpoints, giving a clear when-to-use context. However, it doesn't mention alternatives (e.g., probeMcpServer) or when not to use it, so it misses exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completeClarityArtifactImportComplete Clarity Artifact ImportAInspect
Complete a Miro artifact import after uploading to the signed URL. The uploaded bytes are validated before the import becomes a usable Clarity capture.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | Name of the Miro export file. Supported extensions: .svg, .xml, .png, .jpg, .jpeg | |
| capture_id | Yes | The pending capture id returned by the upload-url endpoint | |
| process_id | Yes | The clarity process id | |
| content_type | Yes | MIME type of the uploaded Miro export file |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (write operation) and no idempotent/destructive hints. The description adds value beyond annotations by stating 'The uploaded bytes are validated before the import becomes a usable Clarity capture', disclosing validation behavior and the state change from pending to usable. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states the purpose and prerequisite; the second adds a key behavioral detail (validation). Every sentence provides essential information with zero 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?
Given the tool has 4 required parameters, no output schema, and moderate complexity, the description covers purpose, prerequisite, validation behavior, and the outcome ('usable Clarity capture'). It could optionally mention return values or error handling, but the provided context is sufficient for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description (file_name with pattern, capture_id/process_id as uuids, content_type as enum). The tool description adds no additional parameter meaning beyond what the schema already provides, 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 it 'completes a Miro artifact import after uploading to the signed URL', combining a specific verb ('complete') and resource ('Miro artifact import'). It distinguishes from sibling tools like completeClarityDocumentUpload, completeClarityVideoUpload, etc., which handle different file types.
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 specifies the prerequisite: 'after uploading to the signed URL', which guides the agent to call this only after the upload step (likely via createClarityArtifactImportUploadUrl). It does not explicitly state when not to use or name alternatives, but the sequential context is clear and sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completeClarityDocumentUploadComplete Clarity Document UploadAInspect
Complete a document capture after uploading to GCS via signed URL
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| fileName | Yes | Name of the uploaded document file | |
| captureId | Yes | The capture ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, so the tool is a 'completion' action that does not destroy data. However, the description explicitly mentions 'complete a document capture,' which implies a state transition (e.g., finalizing a capture, possibly making it immutable or triggering post-processing). This adds behavioral context beyond the annotations, such as indicating that the tool likely commits the capture rather than just reading. A slightly higher score is warranted because it clarifies the action's nature, though it doesn't detail side effects like notifications or validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and prerequisite. It is concise and gets the point across without unnecessary words. However, it could be slightly improved by adding a brief note about the required parameters or the state transition, but that might compromise conciseness. A 4 is appropriate for good efficiency with minor room for extra 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?
Given the complexity (3 required params, no output schema, no nested objects), the description is reasonably complete. It tells the agent when to use it (after upload), what it does (completes the capture), and the preceding step (GCS upload). However, it doesn't explain what 'complete' entails (e.g., does it validate the file? trigger processing? return anything?). The high schema coverage reduces the burden, but a brief note on the outcome or behavior would make it more complete. For a simple tool, a 4 is suitable.
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 100% description coverage, with each parameter well-documented (e.g., 'id' is 'The clarity process ID', 'captureId' is 'The capture ID', 'fileName' is 'Name of the uploaded document file'). The description does not add meaning beyond what the schema provides—it doesn't explain how these relate to the GCS upload or what constraints apply (e.g., must match the signed URL? must be the final file name?). Since schema coverage is high, the baseline is 3, which fits here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Complete') and resource ('document capture') and adds context about the prerequisite step ('after uploading to GCS via signed URL'). This clearly distinguishes it from sibling tools like 'completeClarityArtifactImport' or 'completeClarityTeamDocumentUpload' by specifying the exact domain and phase of the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the prerequisite ('after uploading to GCS via signed URL'), which tells the agent when to invoke this tool—only after a signed URL upload is done. It also places the tool in a clear sequence relative to 'createClarityDocumentUploadUrl' (implied by GCS upload), providing implicit when-not guidance. No alternative tools are named, but the context signals and sibling list show many other 'complete...' tools, so the description effectively narrows the scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completeClarityImageUploadComplete Clarity Image UploadCInspect
Complete an image capture after uploading it to GCS via a signed URL
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| fileName | Yes | Name of the uploaded image file | |
| captureId | Yes | The capture ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-idempotent mutation, but the description does not disclose what side effects occur when the capture is completed, whether the operation is reversible, or what happens if the file hasn't actually been uploaded. With no output schema, the description carries a heavier burden but fails to explain the state change or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. The key action and object ('image capture') are front-loaded. Given how little is known, it's concise to a fault, but it earns full marks for structure and economy.
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?
This is a mutation tool with no output schema, three required parameters, and no workflow context. It doesn't explain the expected sequence (e.g., upload via signed URL first), what 'complete' changes, or how errors surface. Compared to more self-contained sibling definitions, this one leaves too much unstated for an agent to call it reliably.
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 covers all three parameters with 100% description coverage, and the description's reference to 'image capture' plus parameters like captureId and fileName make the roles fairly clear. The main gap is that id ('clarity process ID') and captureId are not distinguished semantically in the description, but the schema descriptions are sufficient for basic 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 action ('Complete an image capture') after an upload step, but it's vague about what 'complete' actually does—it doesn't say whether it finalizes a record, marks a status, triggers processing, etc. The tool name and title add little beyond the description, and while it's distinct from sibling upload/complete tools, the core behavior remains unclear.
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 its many siblings like completeClarityVideoUpload or createClarityImageUploadUrl. The description or context signals do not explain that this should follow a signed URL upload or that it requires prior creation of the upload URL. An agent must infer the entire workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completeClarityOrganizationDocumentUploadComplete Clarity Organization Document UploadAInspect
Complete an organization document capture after uploading to GCS; extracts text and stores it as a transcript so it feeds Process Landscape generation
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| fileName | Yes | Name of the uploaded document file | |
| interviewId | Yes | The organization interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds behavioral context (text extraction, transcript storage) beyond annotations, but does not disclose potential side effects (e.g., triggering Process Landscape generation), idempotency behavior, or authorization requirements. With annotations present, the additive value is modest but positive.
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 front-loaded with the action and includes the key outcome. No unnecessary words, but it could be split into two sentences for improved readability. Still, it is efficient and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool does and its downstream purpose, but omits prerequisites (e.g., the need to first create an upload URL via createClarityOrganizationDocumentUploadUrl) and does not hint at the return value (no output schema provided). For a multi-step process, this leaves gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (2 of 3 parameters have descriptions). The description does not add any parameter-level details beyond what the schema provides; for instance, it does not explain how to obtain interviewId or orgId. Baseline of 3 is appropriate since coverage is between 50% and 80%, and the description does not compensate.
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 ('Complete') and resource ('organization document capture after uploading to GCS') and clearly states the purpose: extracts text and stores it as a transcript for Process Landscape generation. It effectively distinguishes from siblings like completeClarityDocumentUpload and completeClarityTeamDocumentUpload by specifying 'organization'.
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 after GCS upload but does not explicitly state when to use this tool versus alternatives like createClarityOrganizationDocumentUploadUrl or completeClarityDocumentUpload. No preconditions, exclusions, or when-not-to-use guidance are provided. The context is implied from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completeClarityTeamDocumentUploadComplete Clarity Team Document UploadAInspect
Complete a team document capture after uploading to GCS; extracts text and stores it as a transcript so it feeds Process Landscape generation
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| fileName | Yes | Name of the uploaded document file | |
| interviewId | Yes | The team interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds meaningful context by explaining the specific effects: extracting text, storing a transcript, and feeding landscape generation. It does not contradict the annotations and provides useful behavioral details beyond the basic flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose and effect without unnecessary words. It is front-loaded and clear, though it could be slightly more concise by removing minor redundancy (e.g., 'after uploading to GCS' is a prerequisite, not the action). 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?
The description covers the purpose, prerequisite (upload), and downstream integration (feeds Process Landscape generation). There is no output schema, so the description could briefly mention what the tool returns (e.g., success confirmation or error details). However, for a completion action, the current context is mostly 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?
Schema coverage is 100%, and the schema already includes detailed descriptions for all three parameters (team_id, fileName, interviewId). The tool description does not add additional meaning or context for individual parameters beyond what the schema provides, so it earns the baseline score.
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 ('complete'), the resource ('team document capture'), and the specific outcome ('extracts text and stores it as a transcript so it feeds Process Landscape generation'). It effectively distinguishes from sibling tools like completeClarityDocumentUpload, completeClarityOrganizationDocumentUpload, and completeClarityVideoUpload by specifying 'team' and the downstream use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates a prerequisite ('after uploading to GCS'), but it does not explicitly state when to use this tool versus similar siblings (e.g., completeClarityDocumentUpload, completeClarityOrganizationDocumentUpload) or when not to use it. There is no mention of alternatives or exclusions, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completeClarityVideoUploadComplete Clarity Video UploadBInspect
Complete a video capture after uploading to GCS via signed URL
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| fileName | Yes | Name of the uploaded video file | |
| captureId | Yes | The capture ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, idempotentHint=false, destructiveHint=false, but the description adds minimal behavioral context. It does not disclose what 'completing' entails (e.g., whether it triggers processing, changes capture state, or has side effects beyond marking completion). No mention of required permissions, rate limits, or irreversibility is provided. The description relies on the user's prior knowledge of the system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose without extraneous words. It is front-loaded with the verb and resource. However, it could be expanded slightly to include a brief note about the prerequisite step or the tool's role in the upload workflow 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?
Given the tool is part of a multi-step upload process (sibling tools include createClarityVideoUploadUrl), the description lacks important context about the entire workflow. It does not explain what happens after completion, what the capture state changes to, or how errors are handled. No output schema is provided, so the description should at least hint at the return value. The description is insufficient for a complete understanding of the tool's 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 coverage is 100% with all three parameters described (id, captureId, fileName). The description does not add any extra meaning beyond the schema; it only mentions the context of GCS upload. The baseline score of 3 is appropriate since the schema already provides sufficient parameter documentation.
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 the tool completes a video capture after uploading to GCS via signed URL. It clearly identifies the verb ('complete'), resource ('video capture'), and context ('after uploading to GCS via signed URL'), which distinguishes it from sibling tools like completeClarityDocumentUpload or completeClarityArtifactImport. However, it could be more explicit about the prerequisite step (createClarityVideoUploadUrl) to fully differentiate from other complete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used after uploading to GCS via a signed URL, which indirectly points to the prerequisite step. However, it does not explicitly state when to use this tool versus alternatives (e.g., other complete tools) or when not to use it. No guidance is given on error conditions, required permissions, or the exact workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consumeAgentSuggestionConsume Agent SuggestionAInspect
Apply a suggestion: stage its change into the Agent's draft revision, then auto-clear any pending suggestions it makes moot.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The suggestion's unique identifier | |
| revision_id | No | ||
| create_new_draft | No | ||
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark the operation as non-read-only, non-idempotent, and non-destructive. The description adds meaningful behavioral context: it stages the change into the draft revision and automatically clears other suggestions that become moot. This goes beyond the annotation flags and informs the agent of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly-worded sentence that front-loads the action ('Apply a suggestion') and includes necessary behavioral details without any filler. Every word contributes to understanding.
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 conveys the overall workflow (stage change, clear moot suggestions) but leaves gaps about optional parameter semantics and edge cases (e.g., what happens if no draft exists, what 'moot' means exactly). For a mutation tool with four parameters and no output schema, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention any parameters or tie them to behavior. Schema description coverage is only 50% (id and selected_automation_revision_id have descriptions, while revision_id and create_new_draft lack any). The description fails to compensate for the undocumented parameters, leaving the agent without enough information to set them 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 uses the specific verb 'Apply' and identifies the resource 'suggestion', then details the core action: staging the change into the Agent's draft revision and auto-clearing moot pending suggestions. This clearly distinguishes it from sibling tools like rejectAgentSuggestion or getAgentSuggestion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for accepting/consuming a suggestion, but it does not explicitly state when to use it versus alternatives or provide any exclusions. Sibling tool names hint at alternatives (e.g., rejectAgentSuggestion) but the description itself offers no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createAgentCreate AgentBInspect
Create a new agent. Optionally include a build configuration to create the first build in the same request.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable agent name | |
| type | No | Flavour of the step to create. Fixed at creation — it selects the config family every build of this step must use, and the two cannot be mixed. | agent |
| build | No | Optional inline build. When present, a first build is created alongside the agent. Only valid for an agent step. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| thread_id | No | Existing thread ID to associate with the agent | |
| automation_id | No | Automation this agent belongs to. If omitted on a team using the automations model, a new automation named after the agent is created automatically. | |
| source_build_id | No | Build ID whose case-queue-consumer setup should be copied to the new agent |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a write operation (readOnlyHint=false) that is non-idempotent and non-destructive. The description adds the behavioral nuance that a build can be created in the same request. No contradictions with annotations, but side effects beyond creation are not discussed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero wasted words. The core purpose is front-loaded, and the optional build behavior is cleanly appended. Despite the schema's enormous depth, the description stays appropriately sized.
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 carries the full burden for parameters, including nuanced notes on team_id pinning, config versioning, and code-step revision requirements. However, with no output schema, the description does not indicate what the response contains, and no invocation flow or high-level structural guidance is provided.
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 fully documents all 7 parameters and their nested structure. The description only restates the optional build behavior already captured in the schema, adding no new semantic 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 states a specific verb and resource: 'Create a new agent.' This clearly distinguishes it from siblings like updateAgent, deleteAgent, and listAgents. It does not explicitly name a sibling to differentiate from, but the meaning 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 gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The second sentence about build configuration is parameter-related, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createAgentCaseTriggerCreate Agent Case TriggerAInspect
Create a case trigger for an agent. An agent may have at most one case trigger; this returns 409 if one already exists.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Whether the trigger is active. Disabled triggers do not dispatch runs. | |
| agent_id | Yes | The agent's unique identifier | |
| concurrency | No | Concurrency cap for the target queue. The cap is queue-wide, so this affects every Agent working the queue, not just this trigger. Only 1 (run cases one at a time) or null (reset the whole queue's cap to the platform default) can be set here; higher caps are configured per-queue via PATCH /v2/admin/case-queues/{queueId}/concurrency. Omit to leave the queue's current cap unchanged. | |
| case_queue_id | Yes | Queue whose new cases should trigger this agent |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-read-only, non-idempotent, non-destructive. The description adds meaningful behavioral detail: the at-most-one invariant and the 409 conflict response. This goes beyond the annotations and helps the agent anticipate errors.
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 key action, and every word adds value. There is no redundancy or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with a rich schema and annotations, the description covers the key unique behavior (409 conflict). It does not mention return values, but the absence of an output schema lessens the need. The main operational context is sufficiently conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter description coverage, including details for concurrency, agent_id, case_queue_id, and enabled. The description does not repeat or enhance these parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource construction ('Create a case trigger for an agent') and clearly distinguishes this from sibling tools like createAgentSlackTrigger or updateAgentCaseTrigger. It also adds a unique constraint (at most one per agent), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when creating a case trigger) and hints at a precondition (agent must not already have a trigger) but does not explicitly contrast with alternatives like updateAgentCaseTrigger or previewAgentCaseTriggerConflicts. No explicit when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createAgentFolderCreate Agent FolderBInspect
Create a new agent folder.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable folder name | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| parent_folder_id | No | Parent folder ID for nested folders. Omit or null to create at the root level. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description merely restates the create action. Annotations already convey that this is a non-read-only, non-idempotent mutation, and the description adds no extra behavioral details (e.g., duplicate name handling, auth requirements, 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 a single, front-loaded sentence with only the essential action and resource. It contains no superfluous content; the word 'new' is slightly redundant but does not detract from clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks any information about return values or success behavior. Since there is no output schema, the agent cannot determine what the tool returns. No usage context or prerequisites are mentioned, making the description insufficient for confident invocation despite the good schema documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter description coverage, including detailed semantics for team_id and parent_folder_id. The tool description adds no parameter information, but because the schema is thorough, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new agent folder' uses a specific verb and target resource, clearly distinguishing this tool from sibling 'create' tools like createAgent and createCases by naming 'agent folder'. It is concise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like updateAgentFolder or moveAgentsToFolder. There are no stated contexts, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createAgentSlackTriggerCreate Slack Channel TriggerAInspect
Create a Slack channel trigger on an agent (Agent in the Duvo UI): the agent starts a Run whenever a matching message is posted in the channel. An agent can carry one trigger per channel, so call this once per channel. The Slack workspace must be installed for the team AND bound to the agent's live build first (see the Slack bound-workspaces endpoint) — otherwise this returns 400.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier | |
| channel_id | Yes | Slack channel ID to watch, e.g. `C0123ABCD`. | |
| is_private | No | Whether the channel is private. Defaults to false. Private channels require the Duvo Slack app to be invited to the channel. | |
| match_rule | Yes | Which channel messages fire the trigger: `{"kind":"all"}` for every message, or `{"kind":"contains","values":["invoice"]}` to match keywords. | |
| channel_name | Yes | Slack channel name shown in Duvo, without the leading `#`, e.g. `support-inbox`. | |
| trigger_type | Yes | Trigger type. Only `slack_channel_message` (a message posted in a Slack channel) is supported here. | |
| slack_team_id | No | Slack workspace (team) ID the channel belongs to, e.g. `T0123ABCD`. Defaults to the team's default installed workspace. Discover the workspaces an agent can use with the bound-workspaces endpoint. | |
| integration_instance_id | No | Specific bound Slack connection to run the trigger off. Omit to use your own connection, or pass one returned by the bound-workspaces endpoint. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description adds important behavioral details: the one-trigger-per-channel constraint, the requirement for workspace installation/binding, and the specific 400 error on missing prerequisites. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the core purpose, followed by a usage constraint and a prerequisite/failure mode. Every sentence carries meaningful information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, no output schema), the description covers purpose, key constraints, prerequisites, and failure conditions. It doesn't explain success return values, but that's not required given rich schema annotations. Overall it provides enough context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, with detailed explanations for all 8 params including examples, defaults, and the match_rule oneOf structure. The description itself adds no parameter-level detail, but with full schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a Slack channel trigger on an agent... the agent starts a Run whenever a matching message is posted in the channel.' It specifies the verb (create), resource (Slack channel trigger on an agent), and outcome (starts a Run). This distinguishes it from sibling tools like createAgentCaseTrigger, which handles case triggers instead.
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: 'An agent can carry one trigger per channel, so call this once per channel.' It also states prerequisites and a failure condition: 'The Slack workspace must be installed for the team AND bound to the agent's live build first... otherwise this returns 400.' While it doesn't explicitly name alternative tools for other trigger types, the domain is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCaseAttachmentUploadUrlCreate Case Attachment Upload UrlAInspect
Issue a signed URL for uploading a file to a case. The client must PUT the bytes to the returned URL with the returned Content-Type, then call the finalize endpoint so the attachment becomes visible on the case.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier | |
| filename | Yes | ||
| queue_id | Yes | The queue's unique identifier | |
| mime_type | Yes | ||
| size_bytes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, and the description is consistent with a mutating, prerequisite-issuing operation — no contradiction. The description adds real behavioral context beyond annotations: the two-phase protocol (URL issuance → PUT → finalize), and the fact that the attachment is not visible until finalize. Omits URL-expiry and auth details, but the protocol disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences and roughly 40 words, front-loaded with the primary action and followed by the minimal required continuation. Every clause carries protocol information; there is zero 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 5-parameter tool with no output schema, the description covers the essential flow and hints at the response shape (returned URL and Content-Type). The 'finalize endpoint' is named generically, but the exact sibling tool finalizeCaseAttachment exists in the tool list, so an agent can chain the calls. Minor gaps — URL expiry, auth requirements, and exact response fields — keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% — case_id and queue_id are documented, but filename, mime_type, and size_bytes have no schema descriptions. The tool description does not compensate: its only indirect hint is that the returned Content-Type relates to mime_type, and it says nothing about filename or size_bytes semantics beyond what the schema's constraints already imply.
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 action — issuing a signed URL for uploading a file to a case — with a clear resource and scope. The 'to a case' qualifier and the finalize-endpoint reference distinguish it from the many sibling upload-URL creators (createFileUploadUrl, createPulseDashboardAttachmentUploadUrl, createClarityImageUploadUrl, etc.) without needing to open 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?
Describes the full protocol: PUT the bytes to the returned URL with the returned Content-Type, then call the finalize endpoint for the attachment to become visible. This clearly tells the agent that this tool alone is insufficient and routes it to the mandatory follow-up step. However, it does not explicitly name alternatives or state when not to use this tool versus other upload-URL siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCaseQueueEvalRubricCreate Case Queue Eval RubricAInspect
Add one case-level evaluation rubric to a queue's current rubric set. Case-level rubrics judge the whole case (across every Run that touched it) as a Pass/Fail question at settlement. The rubric is added to the queue's current version (build-set) — the set new cases are judged against; a queue only gets one after its first Agent-processed case settles, so this fails with 409 before then, and once the version holds 12 rubrics.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short, human-readable Pass/Fail rubric title. | |
| queue_id | Yes | The queue's unique identifier | |
| description | Yes | A 1-2 sentence Pass condition phrased as a question. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral details: the addition targets the current version/build-set, and the call fails with 409 under two concrete conditions. This gives an agent meaningful operational understanding without contradicting the readOnlyHint/idempotentHint/destructiveHint flags.
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 action is front-loaded in the first sentence, and each subsequent sentence adds valuable context. Minor redundancy exists between 'current rubric set' and 'current version (build-set),' and the final clause is slightly awkward, so it is not a model of maximum 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 three-parameter mutation with no output schema, the description is complete: it explains what the tool does, what a case-level rubric means, where it is added, when it cannot be added, and the numerical cap. No critical information 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 100%, so the schema already documents queue_id, title, and description with clear descriptions. The tool description reinforces the Pass/Fail semantics but does not add meaningful parameter-level detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Add one case-level evaluation rubric to a queue's current rubric set.' It clearly distinguishes this tool from siblings like createEvalRubric by scoping it to queue-level, case-level rubrics, and from update/delete/replace siblings by the 'Add one' framing.
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 the tool applies: adding to the queue's current build-set that new cases are judged against. It also states preconditions and failure conditions (409 before the first Agent-processed case settles and once the version holds 12 rubrics), though it does not explicitly name alternatives such as replaceCaseQueueEvalRubrics or createEvalRubric.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCasesCreate CasesAInspect
Create one or more cases in a queue. Provide either a single case object or a cases array (1-100); providing both returns 400. Each case accepts a title (max 500 chars), optional free-form data, optional labels that will be assigned to the case on creation (missing labels are created on the queue), and an optional priority (none, medium, or high; medium/high raise it above the default in the queue, none is the default). Priority only affects the order pending cases are picked up in: due postponed cases are handled first, then higher priority.
| Name | Required | Description | Default |
|---|---|---|---|
| case | No | ||
| cases | No | ||
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds valuable behavioral context: providing both case and cases returns 400, missing labels are auto-created on the queue, and priority semantics are explained. This goes beyond the annotation flags without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose in the first sentence and then provides essential details in a dense but organized paragraph. The priority explanation is slightly verbose but contains important behavioral context, so no sentence 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?
Given the tool's complexity (nested objects, batch limits, mutual exclusivity, side effects on labels), the description covers the key invocation requirements well. It doesn't mention the response shape or error handling beyond the 400, and there is no output schema, but the core usage is sufficiently complete for an agent to invoke 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 only 33% (queue_id has a description; top-level `case` and `cases` properties lack direct descriptions). The description compensates by explaining that `case` is a single object and `cases` is an array of 1-100, and details the nested fields (title max 500 chars, data, labels, priority). It adds meaning beyond 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?
The description opens with 'Create one or more cases in a queue', which is a specific verb + resource + scope statement. It clearly distinguishes itself from sibling tools like createQueue, createQueueLabel, and updateCase by focusing on case creation with batch support.
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 on how to use the tool: provide either a single `case` object or a `cases` array (1-100), and notes that providing both returns 400. It doesn't explicitly name alternatives (e.g., use updateCase for existing cases), but the mutually exclusive input pattern and queue context make usage unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityArtifactImportUploadUrlCreate Clarity Artifact Import Upload UrlAInspect
Create a signed upload URL for importing a Miro export into a Clarity v2 process. Supports SVG, XML, PNG, and JPEG exports. The caller must upload the file to the returned URL, then complete the import.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | Name of the Miro export file. Supported extensions: .svg, .xml, .png, .jpg, .jpeg | |
| process_id | Yes | The clarity process id | |
| content_type | Yes | MIME type of the Miro export file | |
| extra_capture_request_id | No | Optional extra-capture-request id to bind this import to |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide basic boolean hints (non-read-only, non-idempotent, non-destructive). The description adds significant behavioral context: the tool only creates a URL, does not perform the upload, and the import must be completed via a separate step. This clarifies the multi-step nature 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 sentences with no superfluous words. The first sentence states the core action, the second lists formats, and the third provides essential workflow instruction. Every sentence adds value, making it a model of 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?
The description covers the workflow but lacks details about the return value structure (e.g., that the signed URL is a response field) and constraints like file size limits or URL expiration. Since there is no output schema, this omission is a gap. With strong schema coverage, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The tool description repeats the supported formats already encoded in the file_name pattern and content_type enum but adds no additional meaning beyond schema details, such as parameter interdependencies or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a signed upload URL for importing a Miro export into a Clarity v2 process, listing supported file formats. This distinguishes it from sibling URL creators like createClarityDocumentUploadUrl and createClarityVideoUploadUrl, which serve different content types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (importing Miro exports) and outlines the mandatory follow-up steps (upload file, complete import). While it doesn't explicitly state when not to use it or list alternatives, the context is strong enough for an agent to make a correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityDocumentUploadUrlCreate Clarity Document Upload UrlAInspect
Create a signed URL for uploading a PDF, TXT, Markdown, BPMN, XLSX, or CSV document directly to GCS
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| fileName | Yes | Name of the document file | |
| contentType | Yes | MIME type of the document | |
| extraCaptureRequestId | No | Extra-capture-request id to bind this capture to |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: the URL is signed and uploads go directly to GCS. However, it does not disclose URL expiration, the required upload method, or any side effects such as creating a pending upload record, which matters given readOnlyHint=false and idempotentHint=false.
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, action first, and a compact list of supported formats. Every component earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not explain how the returned signed URL should be used (HTTP method, headers, direct PUT to GCS) or that a sibling tool like completeClarityDocumentUpload may need to be called afterward. That missing workflow context is a significant gap for an agent executing the upload end to end.
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 description is not required to repeat parameter details; the format list usefully maps to the contentType enum. It adds no meaning beyond the schema for id or fileName, and 'BPMN' is slightly ambiguous against the enum, which lacks a specific BPMN MIME 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?
The description states a specific action ('Create a signed URL') and a specific resource (Clarity document upload), and it enumerates the supported file types. It is clear about what the tool does, though it does not explicitly differentiate itself from sibling upload-URL tools like createClarityTeamDocumentUploadUrl or createClarityImageUploadUrl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool when you need to generate a signed URL to upload supported document types directly to GCS. It does not state explicit alternatives or when-not-to-use conditions, but the format list and 'directly to GCS' give a solid usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityFolderCreate Clarity FolderCInspect
Create a process folder
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the folder to create. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds no behavioral context beyond the name. It does not disclose what happens if a folder with the same name exists, whether it overwrites or fails, or any side effects. With annotations present, the description should at least confirm or clarify the mutation 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 short phrase, but it is under-specified. It adds little value beyond the title and name. While concise, it does not earn its place by providing useful information. A slightly longer description with more details would be better.
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 incomplete for a creation tool. It does not explain what the folder is for, how to use the optional team_id, or what the return value is. Given the absence of an output schema, the description should cover what happens on success or failure. The schema and annotations are minimal, so the description carries more burden.
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 provides adequate descriptions for both parameters. The tool description adds no additional meaning or context about parameters. Baseline is 3, and the description does not exceed that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a process folder' clearly states the action (create) and the resource (process folder). It distinguishes from sibling tools like createClarityProcess or createClarityProcessLabel, which create different entities. However, it does not elaborate on what 'process folder' means, which could be ambiguous without context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or the optional team_id parameter. Without this, an agent may not know when creating a folder is appropriate or how to choose between this and other create tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityGuidanceCreate Clarity GuidanceAInspect
Create a new transformation guidance message for a clarity process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| content | Yes | Transformation guidance to add to the process. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the agent knows it's a write operation. The description adds no additional behavioral context beyond this, such as idempotency effects, conflict behavior, or what happens to existing guidance. It does not contradict annotations, but fails to add value beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence of 11 words. It is front-loaded with the verb and resource, contains no filler or redundant information, and is appropriately concise for a tool with two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two parameters, no output schema, 100% schema coverage), the description covers the basic purpose but does not explain what a 'transformation guidance message' is, what the return value is, or that the 'id' must reference an existing clarity process. Additional context would improve usability.
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 input schema already documents both parameters ('id' and 'content') with descriptions. The description does not add any additional meaning beyond what the schema provides, meeting the baseline expectation but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Create a new transformation guidance message for a clarity process' with a specific verb (create) and resource (transformation guidance message). It clearly distinguishes from the sibling tool 'updateClarityGuidance' by implying creation of a new object rather than modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, no context about when not to use it, and no mention of related tools like 'updateClarityGuidance' or coordination with 'createClarityProcess'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityImageUploadUrlCreate Clarity Image Upload UrlAInspect
Create a signed URL for uploading a PNG, JPEG, or WebP image directly to GCS
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| fileName | Yes | Name of the image file | |
| contentType | Yes | MIME type of the image | |
| extraCaptureRequestId | No | Extra-capture-request id to bind this capture to |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds that this creates a signed URL rather than performing the upload itself, which is useful. However, it does not disclose expiration behavior, upload method, or any follow-up requirements after the upload is made.
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 states the core action, target resource, supported formats, and destination. There is no filler or redundant repetition of the title beyond what is necessary for 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 relatively simple signed-URL generation tool with well-documented parameters, the description conveys the essential behavior and return concept. Minor gaps remain, such as URL expiration and the need to call a completion tool afterward, but the tool is still understandable and invocable from the information provided.
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 every parameter already has a meaningful description in the schema. The tool description does not add parameter-level detail beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a concrete verb ('Create'), a clear resource ('a signed URL for uploading a ... image'), and the target destination ('directly to GCS'). It also names the supported formats (PNG, JPEG, WebP), which distinguishes it from sibling tools like createClarityDocumentUploadUrl or createClarityVideoUploadUrl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for generating image upload URLs, but it does not explicitly state when to choose this over alternatives, nor does it mention the related completion step such as completeClarityImageUpload. Usage guidance is indirect and left to inference from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityInviteLinkCreate Clarity Invite LinkAInspect
Create or regenerate a process-scoped Clarity interview invite link. Only the process creator or team managers can create invite links; creating a new link invalidates any prior active link for the process.
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes | The clarity process id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral trait beyond the annotations: 'creating a new link invalidates any prior active link for the process.' This is a destructive side effect that the annotations (destructiveHint: false) do not capture. The description correctly warns the agent about this irreversible invalidation, which is excellent transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with zero wasted words. The first sentence states the purpose, and the second provides critical behavioral and access context. Every sentence adds value and 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?
Given the tool's simplicity (1 parameter, no output schema, clear annotations), the description fully covers the necessary context: what it does, who can use it, and the side effect of link invalidation. There are no gaps in actionable information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter (process_id) that is well-documented in the schema with format and pattern. The description adds the context that the link is 'process-scoped', which reinforces the parameter's role. Since the schema already handles parameter meaning well, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create or regenerate'), the resource ('process-scoped Clarity interview invite link'), and the scope ('process-scoped'). It also differentiates from siblings like deleteClarityProcessInviteLink and getClarityProcessInviteLink by specifying creation behavior.
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 specifies who can use the tool ('Only the process creator or team managers can create invite links'), which provides important access context. It also mentions that creating a new link invalidates prior active links, hinting at when not to use it (if you want to keep existing links). However, it does not explicitly name alternatives like getClarityProcessInviteLink or deleteClarityProcessInviteLink.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityLandscapeNodeCreate Clarity Landscape NodeAInspect
Create an area folder in the process tree. An active area (the default) requires organization admin+; a "proposal" area may be added by any organization member.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| orgId | Yes | ||
| parentId | No | ||
| ownerLabel | No | ||
| description | No | One or two sentences saying what family of work this area groups. Persisted as the area's summary. | |
| creationMode | No | Use "proposal" to add an area for review instead of asserting it exists. A proposal is idempotent: an equivalent live area under the same parent is returned untouched rather than duplicated. Defaults to "active" — except in a landscape-onboarding chat, which may only propose, and so defaults to "proposal". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses permission requirements (admin+ for active, any member for proposal) and the idempotent behavior of proposal mode, which goes beyond the sparse annotations (all false). It clarifies that active creation is not idempotent, providing valuable behavioral context for an 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 two concise sentences, front-loaded with the primary purpose and then permission context. No redundant or filler information is present, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and permission nuances, but omits details about parameters like parentId and ownerLabel, and doesn't mention return values (no output schema). For a 6-parameter creation tool, this is incomplete, though it does address key semantic distinctions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema coverage, the description should compensate for parameter explanations, but it only sheds light on creationMode (via permissions and idempotency). It does not clarify orgId, name, parentId, ownerLabel, or description, leaving significant gaps for an 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 'Create an area folder in the process tree' with a specific verb and resource, clearly distinguishing it from sibling tools like createClarityFolder or createClarityProcess. It also explains the active/proposal modes, which further clarifies the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by explaining permission requirements for active vs proposal modes, guiding when each should be used. It does not explicitly compare to alternative tools, but the clear verb and resource make the primary use obvious, and the mode-specific guidance is a strong point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityOrganizationDocumentUploadUrlCreate Clarity Organization Document Upload UrlBInspect
Create a signed URL for uploading a PDF, TXT, Markdown, or BPMN document as an organization-level Clarity capture
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| fileName | Yes | Name of the document file | |
| contentType | Yes | MIME type of the document |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it creates a signed URL (not the actual upload), which is a key behavioral trait. However, it fails to disclose URL expiration, authentication requirements, or the need for a subsequent completion step. Annotations are neutral and not contradictory, but the description does not sufficiently inform the agent about side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence with no extraneous words. All essential elements (verb, resource, file types, scope) are included without repetition.
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 omits the workflow context: after obtaining the signed URL, the agent must upload the file and then call completeClarityOrganizationDocumentUpload. No output schema is provided, and the description does not indicate what the response contains (e.g., URL, fields). For a tool that creates a pre-upload resource, 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 coverage is 67% (orgId lacks description). The description adds value by mapping file types (PDF, TXT, Markdown, BPMN) to MIME types in the contentType enum, though BPMN maps to application/xml which may be unclear. The fileName and orgId parameters receive no additional semantic explanation beyond what the schema provides. Overall, moderate added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a signed URL for uploading documents (PDF, TXT, Markdown, BPMN) at the organization level, distinguishing it from sibling tools like createClarityDocumentUploadUrl (likely user-level) and createClarityTeamDocumentUploadUrl (team-level) through the explicit 'organization-level' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., createClarityDocumentUploadUrl for personal uploads, or the completion step completeClarityOrganizationDocumentUpload). The description implies organization-level context but does not provide rules for selection or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityProcessCreate Clarity ProcessAInspect
Create a new Clarity v2 process for the current team (Builder+). Optional name defaults server-side when omitted. Response uses camelCase createdAt to match existing FE clients.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional process name; server default applies when omitted | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide generic false hints. The description adds useful behavioral details: name defaults server-side when omitted, and response uses camelCase createdAt for FE compatibility. The 'Builder+' hint also suggests a permission requirement. It does not fully describe all side effects, but covers key behaviors beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and each clause adds value: scope, parameter default, and return format. There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with two optional parameters and no output schema, the description covers purpose, scope, name default, and a return format note. It doesn't list the full response structure, but the tool is straightforward and the schema covers parameter edge cases thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for both name and team_id. The description's mention of name default simply reiterates the schema. It adds no additional parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Create a new Clarity v2 process'. This clearly distinguishes it from sibling tools like createClarityProcessLabel, createClarityProcessLink, and createClarityProcessNode, as well as from update/duplicate process 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 specifies usage context: 'for the current team (Builder+)' and notes the optional name default. It does not explicitly mention alternatives or exclusions, but the target scope and permission hint are clear enough for a create operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityProcessLabelCreate Clarity Process LabelCInspect
Create process tags for an organization.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| value | Yes | ||
| colorHue | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not idempotent (idempotentHint=false). The description adds no additional behavioral context, such as uniqueness of the 'value' field, effects on existing processes, or whether colorHue affects display.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action. However, it is so brief that it borders on under-specification, though it is not redundant or bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and minimal annotations, the description should provide more context about what a process label is, how it relates to processes, and any constraints (e.g., uniqueness, naming rules). It currently only gives the most basic purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes three parameters with types and constraints, but the description mentions only 'for an organization' loosely mapping to orgId. It does not explain the semantics of 'value' (likely the tag text) or 'colorHue' (display color), leaving the agent without meaningful guidance for a tool with 0% schema coverage in description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates process tags for an organization, using the verb 'create' and resource 'process tags'. However, it does not differentiate from related sibling tools like assignClarityProcessLabels or updateClarityProcessLabel, as all involve process labels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as assignClarityProcessLabels or createClarityProcess. There is no mention of prerequisites, creation context, or what distinguishes a label from a process.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityProcessLinkCreate Clarity Process LinkAInspect
Create a process-to-process link in the organization's Clarity landscape when the caller can manage both endpoint teams. If the same live source, target, and type already exists, the existing link is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Relationship type between the source process node and target process node | |
| orgId | Yes | ||
| state | No | Whether the link is suggested by Duvo or confirmed by a user | confirmed |
| confidence | No | Optional confidence score from 0 to 1 | |
| source_node_id | Yes | Hierarchy node id for the source process | |
| target_node_id | Yes | Hierarchy node id for the target process |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it discloses a permission requirement ('when the caller can manage both endpoint teams') and an idempotent-like behavior (if an identical link exists, the existing link is returned). The annotations only supply readOnlyHint, idempotentHint, and destructiveHint flags, which do not capture this nuance. The description does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core action stated first and the duplicate-handling behavior as a concise second sentence. No wasted words or redundant repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and moderate complexity (6 parameters, creation behavior), the description covers the purpose, a key permission constraint, and a significant edge case (duplicate links). It doesn't explain error cases (e.g., what happens if the caller lacks permission) or return object shape, but for a create-type tool with minimal annotations, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 83%, so most parameters already have meaningful descriptions. The tool description reinforces that source_node_id, target_node_id, and type together define a unique link ('the same live source, target, and type'), but it doesn't add substantial new semantics beyond what the schema's per-parameter descriptions already offer. 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 starts with 'Create a process-to-process link', which is a specific verb and resource. It further clarifies the scope ('in the organization's Clarity landscape') and distinguishes from sibling tools like createClarityProcess (which creates a node) and updateClarityProcessLink (which updates rather than creates). The behavior of returning an existing link further clarifies the tool's unique 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?
It provides a clear precondition ('when the caller can manage both endpoint teams'), which is useful guidance. However, it doesn't explicitly mention alternatives like updateClarityProcessLink or when not to use this tool. The verb 'create' implies new links, but no direct comparison to sibling tools is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityProcessNodeCreate Clarity Process NodeAInspect
File an existing Clarity process into an area of the process landscape (team manager or organization admin+). Use this for a process that already exists but sits in Unsorted; use proposeClarityLandscapeProcess to create a brand-new one.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| parentId | Yes | The area folder the process is filed under. | |
| processId | Yes | An existing Clarity process to file into the landscape. Unsorted processes are listed as `unlinkedProcesses` by getClarityProcessLandscape. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the agent knows this is a mutating but non-destructive operation. The description adds the target audience (team manager or organization admin+), which is helpful authorization context beyond annotations. However, it doesn't disclose whether the operation is reversible or what happens to the source process (e.g., is it moved or copied?). With annotations present, the description provides some extra value but not deep behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The first sentence states the purpose and the second provides usage differentiation. Every word earns its place. Good front-loading.
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 3 required parameters, no output schema, and moderate sibling complexity, the description covers the core action and differentiation well. It lacks any mention of return value (though no output schema exists) or error conditions (e.g., what if the process is already filed). But for a simple filing operation, this is mostly 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?
Schema description coverage is 67%: parentId and processId have descriptions, orgId does not. The description adds context about processId by explaining that Unsorted processes are listed by getClarityProcessLandscape, which the schema doesn't mention. This helps the agent understand where to find the processId. However, no additional info for orgId or parentId beyond the schema. The description compensates for the coverage gap partially.
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 'File an existing Clarity process into an area of the process landscape', using a specific verb ('File') and resource ('process into landscape area'). It distinguishes from the sibling tool 'proposeClarityLandscapeProcess' by explicitly contrasting the use case (existing vs. brand-new process).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: for processes that already exist but sit in 'Unsorted'. It also names the alternative tool ('proposeClarityLandscapeProcess') and its specific purpose (creating a brand-new one), making the choice unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityTeamDocumentUploadUrlCreate Clarity Team Document Upload UrlAInspect
Create a signed URL for uploading a PDF, TXT, Markdown, or BPMN document as a team-level Clarity capture
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| fileName | Yes | Name of the document file | |
| contentType | Yes | MIME type of the document |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, so this is a non-read, non-destructive mutation. The description adds that the tool creates a signed URL (not the upload itself), which is a key behavioral trait beyond the annotations. The file format restrictions and team scope are also disclosed. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that clearly states the action, resource, file types, and scope. It is concise with no filler, front-loading the core purpose at the beginning.
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 3 parameters (100% schema coverage), no output schema, and annotations covering safety, the description adequately explains the tool's purpose and scope. It could be improved by noting that the signed URL is typically used for a subsequent PUT request, but it remains complete for an upload URL creation 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?
The input schema has 100% coverage with descriptions for all three parameters. The description lists supported file types (PDF, TXT, Markdown, BPMN) that map to the contentType enum, which adds useful context. However, it does not add meaning beyond the schema for 'team_id' or 'fileName', so baseline 3 plus 1 for the added file type context.
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 specifies the verb ('create'), the resource ('signed URL for uploading a PDF, TXT, Markdown, or BPMN document'), and the context ('team-level Clarity capture'). It effectively distinguishes this tool from siblings like 'createClarityDocumentUploadUrl' (non-team) and 'createClarityArtifactImportUploadUrl' (artifact import).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need to upload a supported document to a team's Clarity capture), and the file types and scope are explicit. Among 100+ siblings, specific alternatives like 'createClarityDocumentUploadUrl' for non-team uploads exist, but the description does not explicitly name when not to use this tool or mention alternatives, leaving some gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createClarityVideoUploadUrlCreate Clarity Video Upload UrlCInspect
Create a signed URL for uploading a video file directly to GCS
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| fileName | Yes | Name of the video file | |
| contentType | Yes | MIME type of the video | |
| extraCaptureRequestId | No | Extra-capture-request id to bind this capture to |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the agent knows this is not a read-only operation. However, the description adds no behavioral context beyond that. It does not disclose whether the URL expires, whether calling this tool creates a persistent record, what permissions are required, or what happens if called multiple times. The description contributes negligible 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?
The description is a single sentence: 'Create a signed URL for uploading a video file directly to GCS'. It is front-loaded with the key action and resource, contains no filler, and every word contributes to the purpose. This is an ideal level of 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?
The tool has 4 parameters, no output schema, and no nested objects. The description does not explain what the tool returns (the signed URL), nor does it mention important details like URL expiration, HTTP method for upload, or the relationship to completeClarityVideoUpload. Given the lack of output schema, the description should fill this gap but does not, leaving the agent without crucial usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described in the schema. The description adds no information about the parameters beyond what the schema already provides. Baseline 3 is appropriate as the schema does the heavy lifting and the description neither improves nor detracts from parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a signed URL for uploading a video file to GCS. The verb 'create' and resource 'signed URL for uploading a video file' are specific. However, it does not differentiate from sibling tools like createClarityDocumentUploadUrl or createFileUploadUrl, which perform similar actions for other content types. The name provides some differentiation but the description could explicitly note the video-specific context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention the required prerequisite (a clarity process ID), the typical workflow (upload the video using the signed URL, then call completeClarityVideoUpload), or any restrictions. Sibling tools like completeClarityVideoUpload exist, but the description does not reference them or clarify the tool's place in the pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createConnectionCreate ConnectionAInspect
Create a new user-provided connection (custom MCP server) for the current team. OAuth-based integrations (native) require an interactive browser flow — start them with the dedicated OAuth endpoints (/v2/teams/:team_id/connections/oauth/native/:provider/start or /v2/teams/:team_id/connections/oauth/mcp/start) instead of calling this endpoint directly.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | No | custom_mcp | |
| headers | No | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| provider | Yes | ||
| server_url | No | ||
| auth_method | Yes | ||
| custom_integration_id | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation (readOnlyHint=false). The description adds the useful caveat that OAuth flows require an interactive browser flow and different endpoints, but does not disclose other behavioral aspects like permissions, response format, or side effects beyond creation. It neither contradicts nor richly supplements 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 two sentences and front-loaded with the core purpose. Every sentence adds value, and the OAuth exclusion is compactly stated. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, nested headers object, no output schema), the description is adequate for high-level understanding but incomplete for invocation. It explains the core purpose and OAuth exclusion but lacks detail on required parameters, request examples, or return 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 only 13% (only team_id has a description), so the description must compensate for the other 7 parameters. It does not explain the meaning or usage of name, provider, auth_method, headers, server_url, type, or custom_integration_id. The phrase 'user-provided connection (custom MCP server)' hints at provider/type but 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 clearly states the tool's action ('Create a new user-provided connection') and specifies the resource ('custom MCP server') and scope ('for the current team'). It distinguishes this tool from siblings like createCredential and createCustomIntegration by focusing on user-provided MCP connections.
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 when-to-use guidance and an explicit exclusion: OAuth-based integrations should use dedicated OAuth endpoints instead of calling this endpoint directly. This is a strong alternative referral that prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCredentialCreate credentialAInspect
Create a login. At least one of password or otp_secret must be provided. Personal by default; pass shared: true to create a team-shared login (requires manager role).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| shared | No | ||
| userId | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| password | No | ||
| username | No | ||
| otp_secret | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-idempotent, non-destructive operation. The description adds useful behavioral constraints beyond that: at least one of password/otp_secret is required, shared defaults to false, and manager role is needed for shared logins. It stops short of describing side effects like duplicates or return payload.
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 core action. Every clause adds value—the validation requirement, the default, and the role condition—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?
For a 7-parameter tool with low schema coverage and no output schema, the description covers the most critical semantic constraints but omits several parameters (username, userId, domain) and does not mention return behavior. The team_id parameter is already explained in the schema, so this is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14%, so the description must compensate. It adds meaningful semantics for password, otp_secret, and shared, but leaves username, userId, and domain unexplained beyond their field names. Partial compensation is present, but not enough to fully bridge the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Create a login', giving a specific verb and resource that clearly distinguishes it from updateCredential, createSecret, and other create tools. It also adds a key constraint (at least one of password or otp_secret) that further defines the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use the tool: personal by default, and shared only when manager role is available. It does not explicitly name alternatives or exclusion cases, but the context is sufficient for most agent decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCustomIntegrationCreate Custom IntegrationAInspect
Create a custom integration type (team-level catalog entry) that users can then connect as user-provided MCP connections. Requires manager-or-above role.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| server_url | Yes | ||
| auth_method | Yes | ||
| oauth_client_id | No | ||
| oauth_client_secret | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is a write operation (readOnlyHint=false), and the description adds valuable context: it creates a team-level catalog entry rather than a live connection and requires a manager-or-above role. This goes beyond what annotations provide, though it does not disclose the return format 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 concise sentences, front-loaded with the core purpose ('Create a custom integration type') and immediately clarifying the team-level and MCP connection context. Every word earns its place without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a solid high-level understanding but lacks essential details for a tool with 6 parameters and no output schema. It does not explain what the tool returns (e.g., the created integration ID), the meaning of auth_method options, or when oauth_client_id/secret are needed. This leaves the agent under-informed 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 only 17% (only team_id has a description), and the description does not compensate by explaining the other parameters (name, server_url, auth_method, oauth fields). The agent is left without guidance on how to fill the required parameters or their 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 tool creates a 'custom integration type (team-level catalog entry)' that users can later connect as MCP connections. This specific verb+resource combination effectively distinguishes it from sibling tools like createConnection, which presumably creates actual connections rather than catalog types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to define a reusable integration type) but does not explicitly name alternatives or state when not to use it. The role requirement ('manager-or-above') is a useful prerequisite but not guidance on choosing between this and similar create tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createEvalRubricCreate Eval RubricAInspect
Add one Agent-specific evaluation rubric to a build. A build may hold at most 5 custom rubrics; this fails with 409 once that ceiling is reached. Defaults to the Agent's live build; pass build_id to target a specific revision.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short, human-readable Pass/Fail rubric title. | |
| agentId | Yes | The agent's unique identifier (Assignment ID) | |
| build_id | No | Add the rubric to this build (revision). Defaults to the agent's live build when omitted. | |
| description | Yes | A 1-2 sentence Pass condition phrased as a question. | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable behavioral detail beyond the annotations: the 5-custom-rubric limit, the 409 failure once reached, and the default-to-live-build behavior. The annotations only declare write/non-idempotent/non-destructive, so this extra context meaningfully improves transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then constraint/failure mode, then default behavior. Every sentence contributes information with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core purpose, resource limits, default target, and failure mode. It doesn't mention the selected_automation_revision_id behavior, but the schema description handles that. With no output schema, the absence of return-value details is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all 5 parameters, so the schema already documents each field. The description repeats build_id's default-to-live-build behavior but does not add substantially new parameter-level meaning 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?
The description uses a specific verb ('Add') and resource ('Agent-specific evaluation rubric') targeting a 'build', clearly distinguishing it from update/delete/replace rubric tools. It also scopes the operation to the agent and identifies the default target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: defaults to the live build, allows targeting a specific revision with build_id, and warns about a 5-rubric ceiling with a 409 failure. It doesn't explicitly name alternatives, but the action semantics and sibling names (update/replace/delete) make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createFileUploadUrlCreate File Upload UrlBInspect
Generate a signed URL for uploading a file directly to GCS.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| fileName | Yes | Name of the file to upload | |
| contentType | Yes | MIME type of the file |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint=false and destructiveHint=false. The description adds that it produces a signed URL for direct GCS upload, clarifying it does not upload the file itself. However, it does not disclose URL expiration, upload size limits, or required HTTP method, which are relevant behavioral traits for a signed-URL generator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core function without filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the schema covers parameters, but with no output schema, the description should ideally mention return format, URL expiration, or next steps (e.g., use returned URL in PUT/POST). The current one-liner is minimally viable but leaves these details 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?
The input schema has 100% description coverage for all three parameters (fileName, contentType, team_id), so the description does not need to add parameter semantics. The description adds no parameter-specific meaning beyond the schema, hence baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate') and resource ('signed URL for uploading a file directly to GCS'). It clearly states the tool's function. However, it doesn't distinguish from sibling upload-URL tools like createSandboxUploadUrl or createPulseDashboardAttachmentUploadUrl.
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 explicit guidance on when to use this tool versus alternative upload-URL tools. It lacks exclusions, prerequisites, or context about which file types or teams it applies to. The only implied context is 'directly to GCS,' but no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createOrgTeamCreate Org TeamAInspect
Create a new team under an organization you administer. Requires an organization Admin, Executive, or Owner role.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| orgId | Yes | Organization ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false). The description adds the role requirement and scope, which is useful behavioral context for an agent. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no unnecessary detail; the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with two parameters and no output schema, the description covers purpose, prerequisite role, and scope. It doesn't mention what happens on success (e.g., return value), but 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?
The schema describes orgId with a UUID format, but name lacks a description. The description does not elaborate on parameter semantics, relying on the schema and the simple parameter names. With 50% schema coverage, the description adds no extra 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 'Create' and the resource 'a new team under an organization you administer', distinguishing it from sibling team-related tools like createTeamInvite or listOrgTeams.
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 specifies the prerequisite of administering an organization and the required role, which helps determine when to use this tool. However, it does not explicitly contrast with alternative team creation or invitation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createPulseDashboardCreate Pulse DashboardAInspect
Create a new Duvo Pulse dashboard from a natural-language prompt (e.g. 'open cases by queue this week') and dispatch the first generation turn. Generation is asynchronous — poll GET /artifacts/{artifactId} until status is completed. The dashboard is private to you unless you set visibility to 'team', which shares it with your whole team straight away — with permission 'view' (teammates see the dashboard) or 'edit' (teammates can also iterate on it).
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| permission | No | ||
| visibility | No | ||
| connection_ids | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds valuable behavioral details: generation is asynchronous and requires polling GET /artifacts/{artifactId}, and visibility defaults to private unless 'team' is set, with permission levels affecting sharing. This exceeds what annotations alone 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 description is three sentences, each earning its place: the main action, the asynchronous polling behavior, and the sharing semantics. It is front-loaded with the primary purpose and has no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key aspects: creation, async polling, and sharing semantics. However, it omits the 'connection_ids' parameter entirely and does not explicitly describe the return format beyond implying an artifact ID. Given the absence of an output schema, these gaps make it incomplete for a tool with 4 parameters.
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 explains 'message' as a natural-language prompt, and details the semantics of 'visibility' and 'permission'. However, 'connection_ids' is not mentioned at all, leaving that parameter undocumented. Partial compensation, but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new Duvo Pulse dashboard from a natural-language prompt and dispatches the first generation turn. It uses a specific verb ('create') and resource ('Pulse dashboard'), distinguishing it from sibling tools like updatePulseDashboard or getPulseDashboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to create a new dashboard from a prompt, with explicit mention of asynchronous generation and polling. It does not explicitly name alternative tools or exclusions, but the context strongly implies the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createPulseDashboardAttachmentUploadUrlCreate Pulse Dashboard Attachment Upload UrlAInspect
Issue a presigned upload URL for a file to attach to a Duvo Pulse dashboard message (e.g. an HTML dashboard to copy, or a screenshot to match). POST the file bytes to the returned upload_url as multipart form data under the field name 'file', then pass the returned attachment_id in the attachments array of POST /artifacts/{artifactId}/messages. The agent reads the file directly from its sandbox. Files live as long as the dashboard's sandbox (about 12 hours), so upload shortly before sending.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Name of the file being attached, without any path segments | |
| mime_type | Yes | MIME type of the file, e.g. text/html or image/png | |
| artifactId | Yes | ||
| size_bytes | Yes | Size of the file in bytes (max 25MB) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (non-readonly, non-idempotent), the description reveals key behavior: the URL is presigned, requires multipart form data with field name 'file', returns an attachment_id, and files persist only as long as the sandbox (~12 hours). It also notes the agent reads the file directly from its sandbox, adding important operational context without contradicting 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 tight sentences, each providing essential information: purpose, usage steps, and lifespan warning. No filler or repetition of schema details, making it efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description effectively explains what the tool returns (upload_url, attachment_id) and how to use those outputs in the follow-up message POST. It also covers timing, sandbox access, and persistence, making it complete for practical usage despite lacking explicit error handling details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with artifactId lacking a description. The description adds meaning by clarifying artifactId's role as the dashboard/message parent and explaining that the filename should correspond to a sandbox file. It also frames the params in the context of the upload-then-attach workflow, going beyond the schema's basic field 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 clearly states the tool's function: 'Issue a presigned upload URL for a file to attach to a Duvo Pulse dashboard message.' It provides specific examples ('an HTML dashboard to copy, or a screenshot to match'), which distinguishes it from sibling tools like generic createFileUploadUrl or createSandboxUploadUrl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage workflow: POST file bytes to the returned upload_url, then pass attachment_id in the attachments array. It also advises to upload shortly before sending due to the 12-hour sandbox lifetime. It does not explicitly name alternative tools, but the context makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createQueueCreate QueueCInspect
Create a new queue.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Queue name. A standalone queue must be uniquely named within the team. A queue created inside an automation instead has to be uniquely named within a revision, which is checked when that revision is activated. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| folder_id | No | Optional folder to nest the queue under. | |
| description | No | Optional human-readable description. | |
| automation_id | No | Automation this queue belongs to. Optional for teams not yet migrated to Automations; required once a team has migrated. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations. It does not mention that creation may be rejected for un-migrated teams, that names must be unique, or any side effects. With sparse annotations (only false flags), the description carries the burden and fails to disclose these nuances.
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, clear sentence with no fluff or repetition. It's appropriately minimal for a simple create operation, and the important details are delegated to the 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?
Despite a rich schema with nuanced rules about uniqueness, team pinning, and automation migration, the description provides no context about these constraints or the result of creation. With no output schema, the description should at least hint at typical responses or error conditions, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter has detailed explanations (e.g., team_id fallback, automation_id requirement). The description adds no parameter info, but the schema already does the heavy lifting, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('new queue'), clearly distinguishing it from queue-related siblings like updateQueue or deleteQueue. However, it lacks scope about the two queue types (standalone vs automation-bound) that the schema describes, so it's not fully specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, nor any prerequisites like team migration status or uniqueness rules. The schema provides those details, but the description itself offers no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createQueueLabelCreate Queue LabelAInspect
Create a label on a queue without assigning it to a case.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| value | Yes | ||
| queue_id | Yes | The queue's unique identifier | |
| color_hue | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the operation is a non-read, non-idempotent, non-destructive mutation. The description adds the useful boundary that no case assignment occurs, but it does not disclose behaviors like duplicate handling, required permissions, or side effects beyond creation.
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 conveys the core purpose and a key distinction. There is no wasted verbiage.
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 basic understanding, but with no output schema and minimal annotations, it leaves optional parameters and return behavior unspecified. It is not incomplete enough to block use, but it could be richer.
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% (queue_id only), and the description does not compensate. It implies queue_id identifies the queue and value is the label text, but key and color_hue remain completely 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 clearly states the action: creating a label on a queue, and explicitly notes it does not assign the label to a case. This distinguishes it from related tools like assignCaseLabels and createQueue.
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 'without assigning it to a case' provides clear when-not-to-use context, but it does not explicitly name alternative tools for case-label assignment. Still, the context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createRevisionCreate RevisionCInspect
Create a new revision for an existing agent.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Build name | |
| config | No | Build configuration. An agent step takes the latest agent schema (legacy v1 agent configs are not accepted); a code step takes a code-step config. Omit it to get the step family's default first build. | |
| agent_id | Yes | The agent's unique identifier | |
| source_build_id | No | Build ID to copy integrations and queue links from | |
| handover_target_ids | No | Agent IDs that this agent can hand work off to | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, idempotentHint=false) already establish that this is a mutating, non-idempotent write, and the description does not contradict that. However, it adds no behavioral context beyond the annotations — it doesn't disclose whether the new revision becomes active, is created as a draft, or how it interacts with the draft/active branching semantics described under selected_automation_revision_id in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single nine-word sentence has zero filler and front-loads the core action, which is structurally clean. However, for a tool with a very large and intricate config schema and subtle revision semantics, this is under-specification rather than appropriate sizing — the description barely goes beyond the tool's name and title.
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 never explains what a revision is, what creating one returns, or how it relates to the agent's active revision state. The schema documents draft-versus-active branching, but the description ignores this entirely, so an agent cannot confidently know when or why to invoke this tool versus sibling revision 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?
Schema description coverage is 100%, with every parameter (agent_id, name, config, source_build_id, handover_target_ids, selected_automation_revision_id) documented in the schema itself. The tool description adds nothing about parameters, so the baseline of 3 applies — 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+resource ('Create a new revision') and a target ('existing agent'), which distinguishes it from createSkillRevision at a surface level. However, it doesn't explain what a revision is in this domain (a version/build of the agent's configuration), leaving the agent to infer that from the schema. It is clear but minimal, not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the many overlapping siblings: createSkillRevision, promoteRevision, updateRevision, duplicateAgent, and createAgent all operate on the same conceptual resource. There are no when/when-not conditions, prerequisites, or alternative routing, so the agent gets no help selecting among these tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSandboxCreate SandboxAInspect
Create a new sandbox for file uploads. The returned sandbox_id can be passed to POST /v2/teams/:team_id/runs to stage data for a run.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only behavior (readOnlyHint=false). The description adds useful context about the returned sandbox_id and its role in staging runs, but does not disclose side effects, permissions, or other behavioral traits beyond what 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 description is two sentences with no fluff. The first sentence states the core purpose, and the second provides a practical next-step pointer. Excellent front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (0 params, no output schema), the description is complete: it explains what the tool does, what it returns, and how to use the result. It also distinguishes the sandbox from related upload tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema reflects this with 100% coverage. Per guidelines, a baseline of 4 is appropriate; the description does not need to add parameter info.
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+resource: 'Create a new sandbox for file uploads.' It clearly distinguishes this tool from siblings like createSandboxUploadUrl by focusing on creating the sandbox container itself, not the upload URL.
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 by stating that the returned sandbox_id is used to stage data for a run via POST /v2/teams/:team_id/runs. It implies when to use this tool (before uploading files or staging runs) but does not explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSandboxUploadUrlCreate Sandbox Upload UrlAInspect
Get a presigned URL for uploading a file into a sandbox. Use for files larger than 10MB; smaller files can be uploaded directly via POST /v2/sandboxes/:sandbox_id/files.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path where the file will be uploaded (e.g. /workspace/data.csv) | |
| sandbox_id | Yes | The sandbox's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide the safety profile (non-read-only, non-destructive). The description adds the size-based usage context but does not disclose further behavioral traits like URL expiration or required permissions. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states the core function, the second provides usage threshold and alternative. No unnecessary words, information is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers essential purpose and usage criteria, and even names an alternative upload path. It could clarify what the presigned URL is used for (e.g., HTTP method or validity) but this is not necessary for basic 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 descriptions cover both parameters fully, and the description does not add additional parameter meaning beyond what is already in the schema. It relies entirely on the structured data for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool retrieves a presigned URL for uploading a file to a sandbox. It distinguishes itself from direct upload and other upload URL tools via the size threshold and explicit endpoint reference.
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 specifies when to use the tool (files >10MB) and provides an alternative for smaller files (direct POST via the sandbox files endpoint). This gives clear decision logic, though it does not name a sibling MCP tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createScheduleCreate ScheduleAInspect
Create a schedule for an agent. The schedule fires against the agent's live build. The authenticated user owns the schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | ||
| cron | No | ||
| time | No | ||
| enabled | Yes | ||
| agent_id | Yes | The agent's unique identifier | |
| timezone | Yes | ||
| frequency | Yes | ||
| recurring | No | ||
| day_of_month | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is clear. The description adds meaningful behavioral context: the schedule fires against the agent's live build and the authenticated user owns the schedule. This goes beyond the annotations by describing ownership and execution target, which is valuable for an AI 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 two concise sentences, front-loaded with the core action and supplemented by relevant behavioral details. Every word adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters and no output schema. The description is brief and does not explain the interplay of parameters (e.g., when cron vs time vs day is used), the meaning of frequency, or expected response. Given the complexity, the description is insufficient for an agent to correctly construct a full valid request without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% (only agent_id is described), so the description must compensate by explaining parameter meanings. It does not mention any parameter specifics, leaving many fields (frequency, timezone, cron, etc.) unexplained. The description's mention of 'live build' and ownership does not map to parameters, so it offers little help for 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: 'Create a schedule for an agent.' It distinguishes from sibling tools like updateSchedule and deleteSchedule by using 'create.' The added context about firing against the live build further clarifies the tool's unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to create a schedule) without explicit alternatives. It mentions that the schedule fires against the agent's live build and that the authenticated user owns it, which helps the agent understand implications. However, it does not explicitly mention alternatives like updateSchedule, but the 'create' verb implies the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSecretCreate SecretAInspect
Create an env-var secret. Personal by default; pass shared: true to create a team-shared secret (requires manager role).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| shared | No | ||
| values | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| service_slug | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is not read-only, not idempotent, and not destructive. The description adds valuable behavioral context: the default is personal, shared requires manager role. This goes beyond the annotations and helps the agent understand permissions and default 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 sentence that front-loads the core action, includes the key conditional for shared mode, and avoids any fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, nested values, no output schema, and only 20% schema description coverage, this minimal description does not fully equip an agent. The 'values' object structure, 'service_slug' semantics, and error cases are not explained. The core use is clear, but the tool is more complex than the description suggests.
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 20% (team_id has a description). The description clarifies the 'shared' parameter meaning and default, but leaves 'service_slug' entirely unaddressed and only implicitly covers 'name' and 'values' via 'env-var secret'. Some compensation is provided, but not enough for 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 creates an env-var secret, with a specific verb and resource. It distinguishes from sibling tools like createCredential and attachRevisionSecret by specifying 'env-var secret' and mentioning the default personal scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use personal vs. team-shared secrets via the 'shared' flag and notes the manager role requirement. It does not explicitly name alternative tools, but the context is clear enough for an agent to decide when creation is the right action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSkillCreate SkillAInspect
Create or update a skill from a JSON body. The server constructs SKILL.md from the provided fields and stores it. If a skill with the same name already exists in the team, it is updated.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name. 1-64 lowercase alphanumeric chars and hyphens; no leading/trailing or consecutive hyphens. | |
| content | Yes | Markdown body of SKILL.md without YAML frontmatter. The server prepends the frontmatter from the other fields. | |
| license | No | Optional: license name or reference to a bundled license file. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| metadata | No | Optional: arbitrary key-value metadata. | |
| description | Yes | 1-1024 chars describing what the skill does and when to invoke it. | |
| allowed-tools | No | Optional (experimental): space-delimited list of pre-approved tools. | |
| compatibility | No | Optional: 1-500 chars describing environment requirements. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal that this is a non-read-only, non-idempotent operation. The description adds meaningful behavioral detail beyond annotations: the server constructs a SKILL.md file from the input fields and stores it, and existing skills with the same name are updated. This clarifies the storage mechanism and overwrite behavior, which annotations do not convey. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, front-loaded sentences. It states the core behavior, the storage mechanism, and the upsert semantics without any wasted words. This is appropriately sized for a tool with 8 parameters because the schema carries the detailed documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a clear high-level overview of the operation and its upsert behavior, which is sufficient given the thorough schema and the presence of sibling revision tools. Minor gaps remain: it does not describe the response format (no output schema exists) or explicitly address how this tool relates to revisions, but these are not critical for selecting and invoking 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 input schema provides thorough descriptions for all 8 parameters, including constraints on name, description, and team_id. With 100% schema description coverage, the description's generic reference to a 'JSON body' does not add parameter-level meaning beyond the schema. The baseline of 3 is appropriate because the schema handles the documentation burden.
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: 'Create or update a skill from a JSON body.' It clearly distinguishes the tool from createSkillRevision by describing the skill-level upsert and SKILL.md construction. The update semantics are explicitly stated ('If a skill with the same name already exists in the team, it is updated').
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 primary use case: creating new skills or updating existing ones by name. It also provides the key contextual behavior of overwriting/updating an existing skill with the same name. However, it does not explicitly discuss alternatives such as createSkillRevision or updateSkillFile, so there is no clear 'when not to use' guidance. The context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSkillRevisionCreate Skill RevisionAIdempotentInspect
Open a draft revision of a skill, copying its files from the active revision (or from source_revision_id). Edit the draft with updateSkillRevisionFile, then activate it with promoteSkillRevision — the previously active revision stays intact and can be re-activated later. A skill has at most one open draft: if one already exists this returns it with created: false.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill ID. | |
| source_revision_id | No | Revision to fork the new draft from. Defaults to the live revision (or the skill's current files if there is no live revision yet). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description complements the annotations by explaining the idempotent behavior ('if one already exists this returns it with created: false') and the non-destructive nature ('previously active revision stays intact and can be re-activated later'). It also reveals the file-copying behavior from a default source, adding 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?
Two information-dense sentences with no filler; each clause adds a meaningful constraint or workflow step.
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 return behavior for the existing-draft case and outlines the full lifecycle, but it never explicitly states what the response contains for a newly created draft. Since there is no output schema, this implicit return value 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 coverage is 100% with descriptions for both parameters. The description rephrases source_revision_id's role ('copying its files... from source_revision_id') but does not add new semantic details beyond the schema's own explanation of the default behavior.
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+resource ('Open a draft revision of a skill') and clarifies the source of files ('copying its files from the active revision or source_revision_id'). It also distinguishes itself from related sibling tools like promoteSkillRevision and updateSkillRevision by outlining a complete workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: to modify a skill safely by creating a draft before promoting. It names the follow-up tools (updateSkillRevisionFile, promoteSkillRevision) and states the constraint that at most one draft can be open, but it doesn't explicitly state exclusions like 'use updateSkillFile to edit directly'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createTeamInviteCreate Team InviteAInspect
Invite one person to a team. Pass processId to invite them to a specific Clarity process instead of the whole team (that requires the team:clarity-member role). Creating the invitation does NOT email anyone — call sendTeamInviteEmail with the returned id to deliver it, or use bulkCreateTeamInvites, which creates and emails in one step.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Team role to grant. One of: team:owner, team:superadmin, team:admin (deprecated), team:manager, team:builder, team:member, team:clarity-member. You cannot grant a role above your own. Process invitations must use team:clarity-member. | |
| Yes | Email address of the person to invite. | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| processId | No | Invite the person to this Clarity process rather than the whole team. Requires the team:clarity-member role. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only generic annotations (readOnlyHint=false, etc.), the description carries the transparency burden. It discloses a critical behavior: creating the invitation does NOT email anyone, and it notes the role requirement for process invites. This adds meaningful context beyond the annotations, though it could also mention other side effects like the invitation status.
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 well-structured: a lead sentence stating the primary action, followed by conditional usage details and side effects. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 params, no output schema), the description adequately covers the main use case, process-specific behavior, email side effect, and alternatives. It even hints at the return value ('with the returned id'), which is useful in the absence of an output schema.
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 all 4 parameters with detailed descriptions (100% coverage), so the description adds marginal value. It does clarify the semantic difference between team-level and process-level invites via processId, but the schema already explains the role requirement and team_id fallback.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Invite one person to a team.' It distinguishes itself from sibling tools by mentioning bulkCreateTeamInvites and sendTeamInviteEmail, making the scope 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?
Provides explicit usage guidance: use processId for process-specific invites (requiring team:clarity-member role), and explicitly states that this tool does not email, directing to sendTeamInviteEmail or bulkCreateTeamInvites for email delivery. This clearly defines when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createTeamInviteLinkCreate Team Invite LinkBInspect
Create or regenerate the team's shareable invite link — the one URL anyone can use to join the team. Regenerating invalidates the previous link, so anyone still holding the old URL can no longer join. Requires the Manager role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| frontendUrl | No | Deprecated and ignored. The link is built from the server's configured frontend URL so a caller can't choose the host in a Duvo-branded email. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Regenerating invalidates the previous link, so anyone still holding the old URL can no longer join,' which is a destructive side effect on the prior link. This directly contradicts the annotation destructiveHint=false, which implies no destructive behavior. Per rubric, a contradiction warrants a score of 1 and an annotation_contradiction flag.
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: each earns its place. It front-loads the purpose, then explains the invalidation side effect and the role requirement—no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key behavioral nuance (invalidation of previous link) and permission requirement. However, with no output schema, it omits mention of what the tool returns (presumably the new link URL), which is a minor gap for a creation/regeneration 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%, with detailed descriptions for both team_id (optional, pinned to API key team vs OAuth multi-team) and frontendUrl (deprecated, ignored). The tool description adds no parameter-specific insight, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create or regenerate the team's shareable invite link — the one URL anyone can use to join the team.' This specific verb+resource combination distinguishes it from sibling tools like createTeamInvite (individual invites) and getTeamInviteLink (retrieval).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool through 'the one URL anyone can use to join the team', differentiating it from individual invite tools, and notes the Manager role prerequisite. However, it does not explicitly name alternatives or state when not to use, leaving usage guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
declineClarityLandscapeNodeDecline Clarity Landscape NodeAInspect
Reject a proposed process landscape node while it is still a proposal, removing it and any proposed descendants. Real processes nested underneath survive and move back to Unsorted. Only proposals can be declined — an accepted node is removed with deleteClarityLandscapeNode.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| nodeId | Yes | The proposed node to reject. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'removing it and any proposed descendants' which is a destructive action on proposed nodes, but the annotation destructiveHint=false claims the tool is not destructive. This is a direct contradiction that misleads an AI about the tool's 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 with no filler. The core action and key constraints are front-loaded, and every sentence adds essential information. Perfectly concise for the tool's complexity.
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 low parameter count and absence of output schema, the description covers the main behavior, distinguishes from siblings, and explains edge cases (descendants, accepted nodes). However, it could mention error conditions (e.g., node not found) or return value, and the annotation contradiction detracts from completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low at 50% (only nodeId has a description). The description does not explain orgId nor add meaningful detail about nodeId beyond what the schema already provides. With two required UUID parameters, the agent would benefit from context on the org's role, which is 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?
The description clearly states the action 'Reject a proposed process landscape node' and specifies the resource (proposed node and descendants). It distinguishes from the sibling deleteClarityLandscapeNode by explicitly stating that accepted nodes are removed with that other tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'while it is still a proposal' and when not to: 'an accepted node is removed with deleteClarityLandscapeNode'. It also explains the effect on descendants and real processes, providing clear context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteAgentDelete AgentADestructiveIdempotentInspect
Delete an agent and cascade-clean its schedules, case triggers, builder runs, and handover targets. Any active jobs are interrupted and their sandboxes paused.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint, idempotentHint, readOnlyHint), the description discloses significant side effects: cascade deletion of dependent resources, interruption of active jobs, and pausing of sandboxes. This is exactly the kind of contextual behavior an agent needs to predict consequences, and it does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the core action ('Delete an agent') and then efficiently listing the cascade effects. Every phrase adds value, with no redundancy 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, one-parameter tool with no output schema, the description fully specifies the scope of deletion and side effects (interrupted jobs, paused sandboxes). This is sufficient for an agent to safely invoke it, and no return-value details are needed because there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter (agent_id with a complete description and UUID pattern). The tool description does not add further semantic detail about the parameter, so the baseline 3 is appropriate per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' and names the resource 'agent', clearly distinguishing it from the many sibling tools like deleteAgentCaseTrigger and deleteAgentFolder. It also explicitly states the cascade-cleaning scope (schedules, case triggers, builder runs, handover targets), making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for fully removing an agent and all associated dependencies, which contrasts with the targeted delete tools (deleteAgentCaseTrigger, deleteSchedule). However, it does not explicitly state 'use this when you want to permanently remove an agent' or exclude cases where updateAgent might be more appropriate, so it falls short of explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteAgentCaseTriggerDelete Agent Case TriggerADestructiveIdempotentInspect
Delete a case trigger. Only the trigger creator or a builder/admin can delete it.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier | |
| trigger_id | Yes | The case trigger's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive (destructiveHint=true) and non-read-only (readOnlyHint=false). The description adds a meaningful behavioral constraint by disclosing the authorization requirement, which is not captured by annotations. It does not contradict annotations, and the permission caveat adds value beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences. The first sentence is an imperative that immediately states the action, and the second adds a single relevant constraint. Every word earns its place; there is no repetition 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 simple deletion tool with two well-documented parameters, no output schema, and full annotation coverage, the description is sufficiently complete. It states what it does and who can do it. The lack of additional behavioral details (e.g., cascading effects) is acceptable because the destructive hint already alerts the agent, and the action is straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents both parameters (agent_id, trigger_id) with clear descriptions and formats, so the description does not need to repeat them. The description itself adds no parameter-specific meaning, but with 100% schema coverage, this is acceptable. The baseline of 3 applies because the schema carries the parameter documentation burden.
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 'Delete a case trigger', a specific verb+resource statement that clearly identifies the action and target. The permission note ('Only the trigger creator or a builder/admin can delete it') adds useful context without obscuring the core purpose. It is easily distinguished from sibling tools like createAgentCaseTrigger or getAgentCaseTrigger.
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 states when to use the tool: to delete a case trigger. It also provides an important usage restriction by specifying who is allowed to perform the deletion (creator or builder/admin), implying agents without these roles should not attempt it. However, it does not explicitly mention alternatives or when to avoid using it beyond the permission constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteAgentFolderDelete Agent FolderADestructiveIdempotentInspect
Delete an agent folder. If the folder contains assignments or subfolders, pass force=true to delete it and move the contained assignments to the root level.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Pass 'true' to delete a folder that still contains assignments or subfolders. Any contained assignments will be moved to the root level. | |
| folder_id | Yes | The folder's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and idempotentHint=true, so the description adds value by explaining the force behavior and that contained assignments are moved to root. However, the fate of subfolders when force=true is ambiguous, which is a minor 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?
Two sentences, front-loaded with the main action, then the conditional behavior. 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?
The tool is simple with two params and no output schema. The description covers the primary use case and the force edge case. Missing details about subfolder handling and non-existent folders, but annotations cover idempotency, so overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes force and folder_id in detail. The description reinforces the force semantics but does not add significant new meaning 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 states 'Delete an agent folder' with a specific verb and resource, and adds nuance about force deletion. It clearly distinguishes itself from related tools like createAgentFolder, updateAgentFolder, and listAgentFolders.
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 when to pass force=true (if assignments or subfolders exist), implying that without it deletion fails for non-empty folders. It does not explicitly mention alternatives like moveAgentsToFolder, but the context is clear enough for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteAllNotificationsDelete All NotificationsADestructiveIdempotentInspect
Soft-delete all notifications for the authenticated user's current team, read or unread. Returns the count of notifications that were deleted. Destructive — only call on explicit user request, never bulk-delete unprompted. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive and non-read-only, but the description adds valuable context: it is a soft-delete, returns a count, requires a feature, returns 404 when disabled, and includes an explicit policy warning. This goes well beyond the structured annotations and enhances the agent's understanding of consequences.
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, each earning its place: purpose and scope, return value, then warnings and prerequisites. No fluff, well 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?
Despite no output schema, the description covers the return value. It adequately handles scope, destructive nature policy, error condition, and feature requirement. For a delete-all tool, the behavioral and contextual information is complete enough for an agent to invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter team_id is thoroughly documented in the schema. The description adds no new parameter-level detail beyond referencing 'current team', 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 the action (soft-delete), the resource (all notifications), the scope (for the authenticated user's current team, read or unread), and the return value (count). This distinguishes it from siblings like deleteReadNotifications and dismissNotification by explicitly covering both read and unread notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use guidance: "only call on explicit user request, never bulk-delete unprompted." Also notes the prerequisite (Notification Center) and 404 behavior. However, it does not explicitly name alternative tools for narrower operations, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteCaseDelete CaseADestructiveIdempotentInspect
Delete a case. Interrupts any associated active runs first.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=true. The description adds valuable behavioral context by stating that associated active runs are interrupted first, which is not inferable from annotations. No contradictions exist.
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 that front-load the core purpose and immediately follow with a critical side-effect. No filler or redundant content is present.
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 deletion tool with one parameter, no output schema, and comprehensive annotations, the description fully covers the essential context. It states what it does and the key behavioral consequence (interrupting runs), making it complete for the agent to select and invoke 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 only parameter, case_id, is fully documented in the schema with type, format, pattern, and a description. The tool description does not need to add parameter detail; schema coverage is 100%, meeting the baseline for adequate 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 ('Delete a case') and the specific resource, distinguishing it from other delete tools in the sibling list. It also adds a unique behavioral detail about interrupting active runs, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when a case needs deletion), but it does not explicitly mention alternatives or exclusions. No guidance is given on when not to use it, such as preferring updateCase for reversible changes or stopRun for merely halting runs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteCaseAttachmentDelete Case AttachmentADestructiveIdempotentInspect
Remove a file from a case. The row is soft-deleted; deletion of the stored object is attempted best-effort.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier | |
| queue_id | Yes | The queue's unique identifier | |
| attachment_id | Yes | The attachment's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds meaningful nuance beyond those flags: the row is soft-deleted, and deletion of the stored object is attempted best-effort. This is valuable behavioral context — the agent learns the underlying file may survive the call, which affects downstream expectations (e.g., a subsequent download might still succeed). No contradiction with annotations; in fact, idempotentHint aligns well with soft-delete 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?
Two sentences with zero waste. The first sentence front-loads the core action, and the second delivers the critical behavioral qualifier (soft-delete, best-effort object deletion). Every phrase earns its place; nothing is redundant with the title 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?
The description covers the essential behavioral nuance an agent needs for a destructive-but-soft operation: what gets removed (the row), what may survive (the stored object), and the best-effort nature. The only gap is the lack of return-value or error semantics, especially since no output schema exists, but for a simple three-parameter delete operation this is a minor omission and the idempotentHint annotation partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (queue_id, case_id, attachment_id) having brief but adequate descriptions of their role as unique identifiers. Per the rubric, the baseline is 3 when the schema does the heavy lifting, and the description adds no parameter-specific detail beyond what the schema provides. This is acceptable given the parameters are simple UUIDs with full schema documentation.
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 ('Remove') and resource ('a file from a case'), clearly scoping the operation to case attachments. It implicitly distinguishes itself from sibling tools like deleteCase and deleteFile, though it doesn't name them explicitly. The clarity is good but not exceptional since it relies on the sibling names rather than explicit 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 usage context is implied: this tool is invoked when a file attached to a case needs to be removed. However, there is no explicit guidance on when not to use it or which alternative to prefer, such as deleteFile for standalone files or getCaseAttachmentDownloadUrl for retrieving rather than deleting. The soft-delete note adds some selection-relevant behavior but doesn't fully route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteCaseQueueEvalRubricDelete Case Queue Eval RubricADestructiveIdempotentInspect
Remove a single case-level evaluation rubric. Cases settled after this are no longer judged against it; already-judged cases keep their original verdicts. Removing the queue's last remaining rubric is refused with 409 — whole-case evaluation regenerates rubrics for an empty set at the next settlement, so the removal would not stay removed.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | The queue's unique identifier | |
| rubric_id | Yes | The case-level rubric's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, idempotentHint=true), the description adds valuable behavioral context: future cases are no longer judged against the rubric, already-judged cases keep original verdicts, and removal of the last rubric is refused with 409 along with the reason why. This gives the agent critical expectations about side effects and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly-written sentences: the first states the exact action and scope, the second covers the key behavioral consequence, and the third documents a non-obvious failure mode. Every sentence earns its place, and the most important framing ('Remove a single case-level evaluation rubric') is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with two UUID parameters and no output schema, the description covers the core operation, side effects on settled and future cases, and a specific refusal scenario. The annotations supply idempotency and destructiveness signals, so nothing essential is missing for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both queue_id and rubric_id described as unique identifiers. The description does not add parameter-specific meaning beyond the schema, but it does not need to because the schema already covers the basics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Remove a single case-level evaluation rubric.' This clearly distinguishes it from related sibling tools like deleteEvalRubric, replaceCaseQueueEvalRubrics, and updateCaseQueueEvalRubric. The scope ('single', 'case-level') leaves no ambiguity about what the tool operates 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?
The description conveys strong contextual details about post-removal behavior and the 409 edge case, but it never explicitly states when to choose this tool over replaceCaseQueueEvalRubrics or updateCaseQueueEvalRubric. The 'single case-level rubric' wording implies the use case, but 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.
deleteClarityArtifactChatConversationDelete Clarity Artifact Chat ConversationADestructiveIdempotentInspect
Soft-delete an open or running artifact-chat conversation for the current user.
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes | The Clarity process id | |
| conversation_id | Yes | The artifact-chat conversation id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses 'soft-delete', which is a key behavioral trait not captured by annotations. Annotations already indicate idempotent and destructive nature; the description adds that the operation is reversible (soft) rather than hard deletion, beyond what annotations state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the action, resource, and context with zero 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 delete operation with two UUID parameters and annotations covering idempotency and destructiveness, the description is adequate. It adds the soft-delete nuance. It could mention authorization or side effects, but given the tool's simplicity, it meets the completeness threshold.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description does not add additional meaning 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 the action ('soft-delete'), the resource ('artifact-chat conversation'), and the scope ('open or running' and 'for the current user'). This distinguishes it from siblings like 'stopClarityArtifactChatConversation' (which stops but does not delete) and other delete 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 provides context by specifying 'open or running' conversations, implying when the tool is applicable. However, it does not explicitly mention when not to use it or name alternatives like 'stopClarityArtifactChatConversation' for mere stopping or 'listClarityArtifactChatConversations' for finding conversations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityCaptureDelete Clarity CaptureADestructiveIdempotentInspect
Delete a capture from a clarity process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| captureId | Yes | The capture ID to delete |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, covering the core behavioral traits (the action is destructive but safe to retry). The description adds no additional behavioral context (e.g., irreversibility, permission requirements, cascade effects). With annotations present, the description does not detract but neither does it add value beyond the structured 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?
The description is a single, front-loaded sentence that communicates the action immediately. Every word earns its place—no redundancy, no filler. It is an exemplary model of conciseness for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward delete operation with 2 parameters and annotations present, the description is minimally adequate. However, it omits context about the return value (no output schema) and does not differentiate this tool from related capture operations (e.g., dismissing a suggestion). Given the presence of many sibling tools, a bit more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%—both parameters (id, captureId) have clear descriptions ('The clarity process ID', 'The capture ID to delete'). The tool description does not add any additional meaning or context for these parameters. Since the schema already documents them adequately, the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a capture from a clarity process' uses a specific verb ('Delete') and clearly identifies the resource ('capture from a clarity process'). This distinguishes it from sibling delete tools which target different entities (e.g., deleteClarityProcess, deleteClarityLandscapeNode). The purpose is immediately clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like dismissClarityCaptureSuggestion or acceptClarityCaptureSuggestion. It does not specify prerequisites (e.g., must the capture exist? must the user have permissions?) or indicate situations where deletion is appropriate vs. other actions. This leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityFolderDelete Clarity FolderADestructiveIdempotentInspect
Delete a process folder. Contained processes fall back to Unfiled.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| folderId | Yes | Folder to delete. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description openly states the destructive behavior (deletion) and the specific consequence for contained processes (fall back to Unfiled). The annotations already declare destructiveHint=true and readOnlyHint=false, so the description adds valuable context about the cascade effect that annotations don't capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loaded with the action and immediately states the critical side effect. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with 2 parameters, full schema coverage, and annotations declaring destructive hint and idempotency, the description covers all necessary context. No output schema exists, but the description doesn't need to explain return values as the consequence is clearly stated.
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 both parameters thoroughly. The description doesn't add any additional meaning beyond what the schema provides for the parameters, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it deletes a process folder and specifies the consequence: contained processes fall back to Unfiled. This clearly distinguishes it from siblings like 'updateClarityFolder' and 'createClarityFolder'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells when to use this tool (when you want to delete a folder and have its contents revert to Unfiled). It doesn't explicitly state when NOT to use it or mention alternatives like 'updateClarityFolder' for moving processes, but the context is clear enough given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityLandscapeNodeDelete Clarity Landscape NodeADestructiveIdempotentInspect
Soft-delete a tree node and its descendants. Organization admins may delete any subtree; team managers may delete a childless process node owned by their team. The targeted node's linked clarity process and captures are deleted, while nested processes detach to the Unsorted bag.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| nodeId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint, idempotentHint) by explaining that it is a soft-delete, that linked clarity processes and captures are deleted, and that nested processes detach to the 'Unsorted bag.' This gives the agent a clear picture of 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?
Three tightly packed sentences cover the core action, permission rules, and cascading effects without any fluff. The structure front-loads the primary purpose and then layers constraints and consequences, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive and complex nature of this operation, the description covers who can delete, what gets deleted, and what happens to nested processes. It lacks explicit handling of return values or post-delete recovery, but since there is no output schema, the essential side-effect information 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?
orgId and nodeId are self-explanatory from their names and UUID types, and the description references 'tree node' and 'subtree' to clarify that nodeId identifies the root of the subtree. However, with 0% schema description coverage, the description does not fully compensate by explicitly mapping parameters or explaining how to obtain them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Soft-delete a tree node and its descendants.' It clearly identifies the action (soft-delete) and the target (a node in the Clarity landscape tree), and distinguishes it from sibling delete tools by detailing the cascading behavior and permission nuances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear authorization context (org admins vs team managers) and what each role can delete, which helps an agent decide if this tool is appropriate for a given user role. It does not explicitly name alternatives or state when not to use it, but the role-based conditions imply the decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityLandscapeNodeInterviewDelete Clarity Landscape Node InterviewCDestructiveIdempotentInspect
Delete an organization-scoped folder interview
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | The organization ID | |
| nodeId | Yes | The clarity process folder node ID | |
| interviewId | Yes | The folder interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and idempotent. The description adds no additional behavioral context—e.g., whether the deletion is reversible, cascading effects, or required permissions. With annotations present, the bar is lower, but the description fails to contribute any new insight beyond the action itself.
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. However, it sacrifices clarity and completeness for brevity. It earns a 4 for being concise but not a 5 due to missing key 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 destructive operation with three required parameters, the description covers the core action minimally. It does not explain what a 'folder interview' is or how it differs from other interview types, and no output schema exists. It is just adequate given the annotations supply important traits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter (orgId, nodeId, interviewId). The description adds no extra meaning beyond what the schema already provides, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Delete' and the resource 'organization-scoped folder interview'. However, it uses 'folder interview' instead of the more precise 'landscape node interview' from the title and input schema, which could cause confusion with sibling tools like deleteClarityOrganizationInterview. It is clear enough but could be more accurate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., deleteClarityOrganizationInterview or deleteClarityTeamInterview). There is no discussion of prerequisites, side effects, or contexts where this specific deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityOrganizationInterviewDelete Clarity Organization InterviewADestructiveIdempotentInspect
Delete an organization-level Clarity interview
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| interviewId | Yes | The organization interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is clear: this is an idempotent destructive operation. The description adds the scope ('organization-level'), complementing the annotations. It does not contradict annotations; annotation_contradiction is false. The only minor gap is not stating whether response confirms deletion, but given the output schema is absent, the agent must infer from the operation type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that clearly communicates the tool's purpose. It is front-loaded with the action and resource. No superfluous words. It could optionally be expanded with a cautionary note, but for its length, it earns its keep.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two parameters, no output schema, clear annotations), the description is minimally adequate. It identifies the tool's purpose and scope. However, it lacks warnings about irreversibility (though annotations hint at destructiveness) and does not explain what happens to related data or any preconditions. For a destructive operation with many sibling tools, more context would help agents make safer choices.
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%: the interviewId parameter has a description ('The organization interview ID'), but the required orgId parameter does not. The tool's description does not add any parameter-level information beyond the schema. However, since there are only two parameters (orgId and interviewId) with clear UUID format requirements, and the tool is simple, the lack of parameter description in the tool description is acceptable. A 4 reflects that no additional value is provided by the description, but the schema and context are sufficient for a simple two-parameter tool.
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 'Delete an organization-level Clarity interview' clearly communicates that the tool deletes a specific type of interview scoped to the organization level. It uses a specific verb ('Delete') and resource ('organization-level Clarity interview'), distinguishing it from siblings like deleteClarityTeamInterview or deleteClarityLandscapeNodeInterview. However, it could be more explicit that this is a permanent deletion.
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 like deleteClarityLandscapeNodeInterview or deleteClarityTeamInterview. There is no mention of prerequisites (e.g., interview must exist, user must have admin permissions), nor any warning about irreversible consequences. Sibling names imply scope differences but the description leaves this implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityProcessDelete Clarity ProcessADestructiveIdempotentInspect
Delete a Clarity process. The creator or a team admin can delete it unless capture analysis is still in progress.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clarity process id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true and idempotentHint: true. The description adds valuable context beyond annotations: who has permission and a specific blocking condition. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core action and then supplementary constraints. No extraneous words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with clear annotations, the description covers the main points: action, authorization, and a blocking condition. It lacks guidance on what happens on failure or alternatives if conditions are not met, but given low complexity, this is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the 'id' parameter has a clear description). The tool description does not add any further meaning about the parameter beyond what the schema already provides, 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 'Delete a Clarity process,' which is a specific verb and resource. It distinguishes from sibling delete tools like deleteClarityCapture, deleteClarityFolder, etc. by naming the exact entity (Clarity process).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use: it specifies that the creator or a team admin can delete, and includes a condition (unless capture analysis is in progress). This implicitly tells when not to use, but does not suggest alternatives (e.g., what to do if blocked).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityProcessInviteLinkDelete Clarity Process Invite LinkADestructiveIdempotentInspect
Delete the active interview invite link for a process.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, covering the safety profile. The description adds a small scoping detail ('active') but does not describe consequences, permissions, or other behavioral nuances. This is similar to the get_calls calibration case.
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, compact sentence with no wasted words. Every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one param, no output schema), and annotations help with the destructive nature. However, the ambiguous parameter semantics mean the description is not fully complete for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'id' has 0% schema description coverage, and the tool description does not clarify whether 'id' refers to the process ID or the invite link ID. The phrase 'for a process' hints, but the agent must guess, creating a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Delete'), the specific resource ('active interview invite link'), and the scope ('for a process'). This distinguishes it from sibling tools like deleteClarityProcessLink and getClarityProcessInviteLink.
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 by the description, but there is no explicit guidance on when to use this tool versus alternatives. No exclusions or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityProcessLabelDelete Clarity Process LabelBDestructiveIdempotentInspect
Delete process tags from an organization.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| labelId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so destructive behavior is known. The description adds an organizational scope ('from an organization') but does not mention potential side effects on processes using the label or clarify that assignments may be removed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and object. It is appropriately short for a simple delete operation, though slightly terse and could be more precise with 'labels' instead of 'tags'.
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 delete tool with annotations covering destructive/idempotent behavior, the description covers the basic action and scope. However, it omits clarification about what happens to process assignments and does not mention the relationship to unlinkClarityProcessLabels, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides only vague mapping—'process tags' to labelId and 'organization' to orgId—without explicitly naming the parameters or explaining their roles. For two required UUID parameters, this is minimal compensation for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete process tags from an organization' clearly identifies a delete operation on labels, with 'tags' serving as a synonym for labels. It conveys the resource and scope, though it does not explicitly distinguish this from unlinkClarityProcessLabels or deleteClarityProcessLink.
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. Notably, sibling tools like unlinkClarityProcessLabels exist for removing label assignments without deleting the label definition, and deleteClarityProcessLink deletes links—this description does not clarify these distinctions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityProcessLinkDelete Clarity Process LinkADestructiveIdempotentInspect
Delete a process-to-process link from the organization's Clarity landscape when the caller can manage both endpoint teams.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| process_link_id | Yes | Unique process-link identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation is known. The description adds meaningful context about the authorization requirement (managing both endpoint teams), which is beyond the annotations. It does not detail side effects, but the permission nuance is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the action, object, context, and a key condition. No redundant words or filler; every element serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two UUID parameters and no output schema, the description plus annotations cover the essential aspects: destructive nature (annotations), idempotency (annotations), permission requirement (description), and the object being deleted. It does not describe return values or error handling, but these are less critical for a delete tool with good annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 50% coverage (only process_link_id has a description). The description hints at orgId via 'organization's' and process_link_id via 'process-to-process link', but does not explicitly explain either parameter. It provides marginal additional meaning over the schema, so a baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete'), the resource ('process-to-process link'), and the scope ('from the organization's Clarity landscape'). It also includes a specific condition ('when the caller can manage both endpoint teams'), which distinguishes it from related tools like deleteClarityProcessLabel or deleteClarityLandscapeNode.
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 prerequisite for use ('when the caller can manage both endpoint teams'), but does not explicitly contrast with alternatives such as updateClarityProcessLink or listClarityProcessLinks. It implies usage context but lacks explicit when-to-use vs. when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteClarityTeamInterviewDelete Clarity Team InterviewCDestructiveIdempotentInspect
Delete a team-level Clarity interview
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| interviewId | Yes | The team interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds no behavioral context beyond 'Delete'—for example, whether deletion is irreversible, if cascading happens, or if calling multiple times is safe despite typical non-idempotent behavior. With the burden on the description due to annotations being present but not fully clarifying, 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 extremely concise at five words, but it lacks substance expected for a destructive tool. Conciseness should prioritize useful information density, and here the brevity sacrifices behavioral and usage context, making it too minimal for reliable agent invocation.
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 not explain return values or success/failure signals. It also omits how the tool handles idempotency, team_id fallback, or what happens if the interview is already deleted. Given low complexity and good schema coverage, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters (team_id and interviewId), including detailed context for team_id. The description adds no additional meaning beyond the schema, which is adequate but adds no value. 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 uses a specific verb ('Delete') and identifies the resource ('team-level Clarity interview'), making it clear what the tool does. The name differentiates from sibling tools like deleteClarityOrganizationInterview and deleteClarityLandscapeNodeInterview, but the description merely restates the name without elaborating on what constitutes a team-level interview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., when to delete a team interview vs. an organization interview). There are also no mentions of prerequisites, permissions, or error scenarios, leaving the agent without context to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteConnectionDelete ConnectionADestructiveIdempotentInspect
Delete a connection (disconnects the user's connection and removes any triggers bound to it).
| Name | Required | Description | Default |
|---|---|---|---|
| connection_id | Yes | Connection ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds important cascading detail: it disconnects the user's connection and removes any triggers bound to it, which goes beyond the annotation's simple delete flag. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action, and includes only relevant detail about the cascade effects. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive operation, the description plus annotations (destructive, idempotent) cover the necessary context: what is deleted, disconnection, and trigger cleanup. No output schema needed for this delete action.
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 connection_id is fully documented in the schema with type, format, and description. The tool description adds no additional parameter semantics; the schema carries the burden.
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 'Delete a connection', a specific verb and resource. It further clarifies scope by noting it disconnects the user's connection and removes bound triggers, distinguishing it from other delete/detach 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?
No explicit when-to-use or alternative tools are mentioned. The use case is implied by the name and description but there is no guidance on when not to use it or how it differs from related tools like detachPulseDashboardConnection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteCredentialDelete credential by idADestructiveIdempotentInspect
Delete a login by id. Deleting a team-shared login requires manager role.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| userId | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, and the description's 'Delete' aligns with that. The description adds the manager-role permission requirement for team-shared logins, providing useful behavioral context beyond the structured annotations. It doesn't mention permanence or side effects, but annotations cover the core destructive nature.
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: the first states the action, the second adds the key permission caveat. It is front-loaded, information-dense, and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with annotations declaring destructiveness and a schema documenting team_id, the description covers the primary action and an important role-based restriction. It does not explain why userId is required, but the overall context is sufficient for an agent to understand the tool's typical use.
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 33% with only team_id documented; id and userId are bare. The description merely says 'by id' and does not clarify why userId is required or how it relates to the credential, nor does it compensate for the low schema coverage. This leaves the parameter semantics ambiguous.
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 ('Delete') and resource ('a login by id'), making the tool's purpose unambiguous and distinct from sibling tools like createCredential, updateCredential, and listCredentials. The synonym 'login' for credential is slightly informal but still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear permission context by stating that deleting a team-shared login requires a manager role. It does not explicitly name alternatives, but the action is so specific that usage context is clear; the requirement also serves as a condition for when this tool can be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteCustomIntegrationDelete Custom IntegrationADestructiveIdempotentInspect
Delete a custom integration type (team-level catalog entry) and cascade-remove related connections. Requires manager-or-above role.
| Name | Required | Description | Default |
|---|---|---|---|
| custom_integration_id | Yes | Custom integration type ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as destructive, idempotent, and non-read-only, but the description adds valuable context: cascade-removal of related connections and the required manager role. This goes beyond the structured fields and helps the agent understand side effects and permissions.
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 long: the first states the purpose and side effect, the second states the permission prerequisite. Every sentence earns its place with no redundancy or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete operation with annotations indicating destructive and idempotent behavior, the description adequately covers the action, the cascade effect, and the required role. No output schema is present, and for this simple delete operation return values are not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, custom_integration_id, has a complete schema description, so the tool description adds no extra semantic meaning. Since schema_description_coverage is 100%, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' with the resource 'custom integration type' and clarifies '(team-level catalog entry)', distinguishing it from sibling deleteConnection and deleteCredential. The cascade behavior further clarifies the exact scope of the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (manager-or-above role) and implies that this tool is for removing an integration type along with its related connections, but it does not explicitly name alternatives such as deleteConnection for removing individual connections. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteEvalRubricDelete Eval RubricADestructiveIdempotentInspect
Remove a single Agent-specific evaluation rubric. Future Runs on the build are no longer scored against it.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent's unique identifier (Assignment ID) | |
| rubricId | Yes | The custom rubric's unique identifier | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds behavioral context beyond that by specifying that future runs are no longer scored, clarifying the scope of the deletion. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and consequence. 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 delete tool with a clear effect and no output schema, the description is complete enough. It omits details like permanence or permissions, but annotations cover destructive intent. The sibling context (e.g., replaceEvalRubrics) subtly reinforces the single-rubric scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all parameters, including a thorough explanation of selected_automation_revision_id. The description does not need to add parameter details; 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 uses a specific verb ('Remove') with a specific resource ('a single Agent-specific evaluation rubric') and states the effect on future runs. This clearly distinguishes it from create/update/get sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the consequence ('Future Runs on the build are no longer scored against it'), giving context for when to use the tool. It does not explicitly name alternatives or exclusions, but the usage context is clear enough for an agent to decide when deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteFileDelete FileADestructiveIdempotentInspect
Delete a file from team storage.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the file to delete relative to the team's storage root | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds only 'team storage' as context, but discloses no further behavioral traits beyond what 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 description is a single concise sentence, 'Delete a file from team storage.', with no wasted words. It is front-loaded with the action and object.
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 delete tool, the description, combined with full schema parameter coverage and annotations, provides sufficient context. There is no output schema, and the behavior is straightforward, so the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'path' and 'team_id' fully described. The description adds no additional parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' with the resource 'file' and scope 'team storage', making it clear what the tool does. It distinguishes from siblings like renameFile and updateFileContent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions. However, the clear purpose implies its usage for deleting files, so guidance is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deletePulseDashboardDelete Pulse DashboardADestructiveIdempotentInspect
Delete a Duvo Pulse dashboard. Only the creator can delete it.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructiveHint=true and idempotentHint=true. The description adds the creator-permission context, which is useful auth-related behavior not covered by annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence delivering two essential pieces of information (action and permission). No unnecessary words, perfectly sized for an MCP tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with one parameter and annotations present, the description covers the core action and permission. It omits error behavior or return value details, but these are not critical given the tool's simplicity and the existing annotations.
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 explain artifactId. Although the parameter name is somewhat self-explanatory, the tool description fails to compensate for the missing parameter documentation, adding no meaning beyond 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?
Description uses specific verb 'Delete' and resource 'Duvo Pulse dashboard', clearly distinguishing it from create/update/get/list siblings. It also adds a key scope constraint ('Only the creator can delete 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?
States a clear usage condition: only the creator can delete. This implies when to use (as creator) and when not to use (non-creator). Does not explicitly mention alternatives, but the permission guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteQueueDelete QueueADestructiveIdempotentInspect
Delete a queue. Interrupts all associated active runs first and returns the number of deleted cases plus the IDs of runs that were stopped.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds valuable depth by explaining exactly what happens: it interrupts all associated active runs first and returns the number of deleted cases plus stopped run IDs. This goes beyond annotation basics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The first sentence states the core action, and the second covers side effects and return value—every word is useful.
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 parameter, clear annotations, and no output schema, the description fully covers what the tool does, its side effects, and what it returns. It is complete for a destructive one-parameter operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, queue_id, is fully documented in the schema with type, format, and description, achieving 100% schema coverage. The tool description does not add additional parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Delete') and resource ('queue'), immediately clarifying the action. It distinguishes itself from siblings like deleteQueueLabel by noting it stops active runs and returns deletion counts and stopped run IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that deleting a queue also interrupts associated active runs, which helps inform when to use this tool. However, it does not explicitly mention alternatives (e.g., stopRun) or situations where deletion should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteQueueLabelDelete Queue LabelADestructiveIdempotentInspect
Delete a label from a queue. Cascade-deletes all assignments of this label on existing cases.
| Name | Required | Description | Default |
|---|---|---|---|
| label_id | Yes | The label's unique identifier | |
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, and the description adds a specific behavioral consequence: cascade-deleting all assignments on existing cases. This goes beyond the generic destructive flag and provides critical context about the tool's impact. It does not mention permissions or irreversibility, but the cascade detail is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first states the primary action, and the second adds the critical cascade side effect without any fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two parameters, no output schema, and existing annotations, the description effectively communicates the core behavior and a key side effect. It lacks explicit mention of return values or edge cases (e.g., label not found), but these are not essential given the tool's simplicity and the presence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has descriptions for both parameters (queue_id and label_id), covering 100% of params. The description does not add any parameter-specific meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a label from a queue') and the specific resource, distinguishing it from related tools like createQueueLabel, updateQueueLabel, and deleteQueue. The cascade-delete detail further clarifies its unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when a queue label must be deleted) and mentions the cascade side effect, but it does not explicitly name alternatives or explain when NOT to use it (e.g., when only unlinking a label from a single case, for which unlinkCaseLabels might be more appropriate). The guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteReadNotificationsDelete Read NotificationsADestructiveIdempotentInspect
Soft-delete all read notifications for the authenticated user's current team. Returns the count of notifications that were deleted. Destructive — only call on explicit user request. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful context beyond annotations: 'soft-delete' clarifies the deletion is not permanent, 'Returns the count' informs about the output, and the 404 condition is a concrete behavioral detail. These go beyond the destructiveHint and idempotentHint annotations, providing richer transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each with a distinct purpose: what it does, what it returns, and the critical warning/prerequisite. Information is front-loaded and no words are 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 single-parameter tool with no output schema, the description covers the core behavior, return value, destructive nature, and a key prerequisite. It is complete enough for an agent to decide whether and how to invoke it, especially with annotations and schema in place.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the team_id parameter already has a detailed description covering the API-key vs OAuth nuance and fallback behavior. The tool description adds minimal parameter value, only reinforcing that the operation targets the authenticated user's team. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('soft-delete'), resource ('read notifications'), and scope ('all ... current team'), clearly distinguishing it from the sibling deleteAllNotifications. It also mentions the return value (count), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly warns 'Destructive — only call on explicit user request' and notes the feature prerequisite (404 when disabled). It does not name alternative tools like deleteAllNotifications or dismissNotification, but the scope 'read notifications' implies when to use it. This is clear guidance with a minor omission of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteScheduleDelete ScheduleADestructiveIdempotentInspect
Delete a schedule. Owners may delete their own schedules; team superadmins may delete any schedule on agents in the current team.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier | |
| schedule_id | Yes | The schedule's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=true. The description adds the authorization model (owners vs. superadmins), which is valuable beyond what annotations convey. It is consistent with the annotations and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the primary action, and adds only essential permission details. Every word earns its place with no fluff 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 simple destructive operation with two UUID parameters and no output schema, the description is nearly complete. It covers the action, permission scope, and relies on annotations for safety. A minor omission is whether the deletion is permanent or any effects on dependent data, but destructiveHint already implies 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 description coverage is 100% for the two parameters (agent_id and schedule_id), each with clear descriptions. The tool description adds no additional parameter semantics, which aligns with the high schema coverage 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 description states 'Delete a schedule' with a clear verb and resource, immediately distinguishing it from sibling tools like createSchedule, updateSchedule, or listAgentSchedules. It also adds permission context that clarifies what the operation entails.
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 specifies who can use the tool: owners for their own schedules and team superadmins for any schedule on current team agents. This gives clear context for when it should be invoked, though it doesn't explicitly name alternative tools like updateSchedule for modifications or listAgentSchedules for finding schedules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteSecretDelete SecretADestructiveIdempotentInspect
Soft-delete an env-var secret. Deleting a team-shared secret requires manager role.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already indicating destructive and idempotent behavior, the description adds non-obvious context: the 'soft-delete' nature and the manager role requirement for team-shared secrets. This exceeds what annotations provide, though it does not detail the full lifecycle (e.g., recoverability).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence front-loads the primary purpose, and the second adds a valuable caveat. There is no redundant or fluff 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?
For a single-parameter delete tool, the description effectively bundles the soft-delete mechanism and a key permission requirement. The annotations round out the safety profile, and the schema covers the parameter. It could explicitly mention what happens after soft-delete (e.g., if the secret remains accessible via getSecret), but the provided information is sufficient for typical use.
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 'id' parameter with format and pattern, so the description need not elaborate. However, since schema_description_coverage is 0%, the description adds no explicit meaning to the parameter beyond what the schema already conveys; the param is self-evidently the secret's identifier.
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 ('soft-delete') and the resource ('env-var secret'), which is specific and differentiates from sibling tools like createSecret, getSecret, and updateSecret. The 'soft-delete' qualifier adds important nuance that it is not a permanent deletion.
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 contextual prerequisite ('Deleting a team-shared secret requires manager role') but does not explicitly address when to use this tool versus alternatives, nor when not to use it. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteSkillDelete SkillADestructiveIdempotentInspect
Delete a skill for the current team.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true, and the description is consistent with that. It adds the 'for the current team' scope, which is useful context beyond annotations. However, it does not disclose what happens to associated resources (e.g., revisions, files) or whether deletion is reversible, so it only adds marginal 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 that states the action, resource, and scope. Every word earns its place, and it is appropriately sized for a simple one-parameter deletion tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one parameter, clear annotations, no output schema. The description provides enough context by specifying the action, the target resource, and the team scope. Sibling tools are distinguishable by name, and the destructive behavior is already declared in annotations.
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 100% coverage for the single parameter skill_id, including type, format, pattern, and description. The tool description adds no additional parameter information, so it meets the baseline for high schema_description_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 the imperative 'Delete' and specifies the resource 'skill' and scope 'for the current team.' It clearly distinguishes from sibling tools like deleteSkillRevision and deleteCase. This is a specific verb+resource+scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as deleteSkillRevision or updateSkill. It does not mention whether this deletes all revisions or the current active skill only, and there is no explicit 'use this when...' or 'instead of...' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteSkillRevisionDelete Skill RevisionADestructiveIdempotentInspect
Delete a draft or historic skill revision and its files. The active revision can't be deleted — activate another revision first.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_revision_id | Yes | Skill revision ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, so the description adds value by specifying that files are also deleted and that active revisions are excluded. This contextual detail goes beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences front-loaded with the action and target. Every word contributes meaning, with no redundancy 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 single-parameter destructive tool, the description covers what is deleted, the type of revisions, and the critical constraint about active revisions. Combined with annotations and full schema coverage, the agent has everything needed 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?
The schema fully describes the only parameter (skill_revision_id) with a description, so baseline is 3. The tool description does not add extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a skill revision and its files, specifying 'draft or historic' revision, distinguishing it from related tools like deleteSkill and updateSkillRevision. It also clarifies the active revision cannot be deleted, adding precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when not to use it ('active revision can't be deleted') and provides a prerequisite action ('activate another revision first'). It doesn't name a specific alternative tool but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteSlackTriggerDelete Slack Channel TriggerADestructiveIdempotentInspect
Permanently delete a Slack channel trigger you own. The agent stops starting Runs for that channel. To keep the trigger but stop it firing, update it with enabled: false instead.
| Name | Required | Description | Default |
|---|---|---|---|
| trigger_id | Yes | The Slack channel trigger's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=true. Description adds that 'The agent stops starting Runs for that channel' and 'Permanently delete,' aligning with destructive hint and providing operational consequence beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each with a distinct purpose: action, effect, alternative. Front-loaded with the main verb. 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?
Low complexity (1 param, no output schema) with strong annotations; description covers scope, effect, and alternative. Sufficient for an agent to select and invoke 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 covers trigger_id fully with type, format, pattern, and description; description adds no new parameter-level meaning beyond what schema already provides. Baseline 3 applies due to 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?
Description opens with 'Permanently delete a Slack channel trigger you own' – specific verb+resource+ownership scope. It clearly distinguishes from updateSlackTrigger and other delete tools by naming the exact resource and its effect.
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 advises 'To keep the trigger but stop it firing, update it with `enabled: false` instead,' naming the alternative approach and when not to use delete. The ownership requirement ('you own') further clarifies applicable conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteTeamInviteDelete Team InviteADestructiveIdempotentInspect
Revoke an invitation so its link and email can no longer be used. Accepts either a team invitation (requires Superadmin or above on the invitation's team) or a Clarity process invitation (requires the process creator or a team admin). Revoking one side also revokes its linked counterpart when a process invitation created both.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the invitation to revoke. Accepts either a team invitation or a Clarity process invitation. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavioral context beyond annotations: the effect on link and email, permission requirements, and the linked-counterpart revocation rule. This is valuable side-effect information that the annotations (destructive, idempotent) do not 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?
Three concise sentences, front-loaded with the core purpose, then necessary details about accepted types and side effects. No fluff 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 mutating tool with two parameter types, permission nuances, and a linked-revocation side effect, the description covers all critical aspects. No output schema exists, and the description gives sufficient information for an agent to understand what will happen.
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?
Input schema covers both parameters 100%, including their descriptions. The description adds no new parameter-level details beyond what the schema already states, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states a specific action: 'Revoke an invitation so its link and email can no longer be used.' It distinguishes itself from sibling tools like deleteTeamInviteLink by emphasizing invitation revocation and explicitly covering both team and process invitations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: accepts either a team invitation or a Clarity process invitation, with permission requirements for each. Lacks explicit alternatives or exclusions, but the context is strong enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteTeamInviteLinkDelete Team Invite LinkADestructiveIdempotentInspect
Delete the team's shareable invite link so the URL stops working. Per-person invitations are unaffected. Requires the Manager role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish destructive and idempotent behavior. The description adds valuable context: the specific effect ('URL stops working'), the scope ('Per-person invitations are unaffected'), and the access requirement ('Requires the Manager role or above'). This enriches beyond what annotations alone 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?
Three short, purposeful sentences: action+effect, scope, and requirement. Front-loaded with the core action, no redundant words, 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 destructive link-removal operation, the description covers the purpose, effect, scope, and access requirement. The optional team_id nuance is fully handled by the schema, and no output schema is expected. This is a complete, self-sufficient 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?
The schema description for team_id is comprehensive (100% coverage), including details about API key pinning and OAuth scenarios. The tool description itself adds nothing about the parameter, so the rating is the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Delete the team's shareable invite link') and clearly identifies the target as the team's shareable link. It further distinguishes from per-person invitations, differentiating it from sibling tools like deleteTeamInvite.
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 statement 'Per-person invitations are unaffected' implies when this tool is appropriate versus deleting individual invites, and the Manager-role requirement gives a clear prerequisite. However, it does not explicitly name alternative tools or provide a 'when not to use' condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detachPulseDashboardConnectionDetach Pulse Dashboard ConnectionADestructiveIdempotentInspect
Detach a connection (data source) from a Duvo Pulse dashboard (creator only).
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| connectionId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true, readOnlyHint=false, and idempotentHint=true. The description adds the permission context ('creator only') and clarifies that a connection is a 'data source'. However, it does not describe side effects (e.g., whether the connection itself is deleted or only unlinked) or reversibility, which would be valuable for a destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the verb and resource, with zero wasteful words. It is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only 2 parameters, no output schema, and simple semantics. However, the description does not clarify what 'detach' means operationally (e.g., whether the connection is removed from the dashboard but remains available elsewhere), nor does it explain the artifacts involved. It is minimally complete but lacks deeper context for an agent to fully understand consequences.
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 explain the parameters. While 'connectionId' is fairly self-explanatory, 'artifactId' is ambiguous and not explicitly mapped to the dashboard. The description adds no meaning beyond the parameter names themselves.
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 ('Detach'), the target resource ('a connection (data source)'), and the context ('from a Duvo Pulse dashboard'), plus a permission constraint ('creator only'). This distinguishes it from sibling tools like attachPulseDashboardConnection or deleteConnection.
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 (what the tool does) and an explicit usage constraint ('creator only'), which tells the agent who can invoke it. It does not explicitly compare with alternatives or state when not to use it, but the action and resource are specific enough to imply proper use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detachRevisionLoginDetach Revision LoginADestructiveIdempotentInspect
Detach a login from a revision. Personal logins can only be detached by their owner; team-shared logins require builder permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | ||
| buildId | Yes | ||
| exposedCredentialId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds authentication requirements and ownership rules, providing useful behavioral context beyond the structured data. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with two clauses, front-loaded with the primary action. No filler or redundant 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?
Given the simple mutation and existing annotations, the description covers the essential permission nuance. It omits detail about post-detachment state or return value, but the absence of an output schema makes this less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (0% coverage), and the description does not explain the roles of agentId, buildId, or exposedCredentialId. The tool name implies some semantics but not enough to fully understand parameter dependencies.
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 ('Detach a login from a revision') with a specific resource (login/revision). The verb 'detach' distinguishes it from sibling tools like attachRevisionLogin and detachRevisionSecret.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear permission context (owner vs. builder) that informs when the tool can be used. However, it does not explicitly mention alternatives or when-not-to-use cases beyond these permission constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detachRevisionSecretDetach Revision SecretADestructiveIdempotentInspect
Detach an env-var secret from a revision. Personal secrets can only be detached by their owner; team-shared secrets require builder permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | ||
| buildId | Yes | ||
| credentialId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=true, covering the mutation/destruction aspect. The description adds valuable context beyond these annotations, explaining the permission model for personal vs. team-shared secrets. It also clarifies the scope ('from a revision') which is not fully captured by the annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary action, and includes only essential permission detail. Two sentences, no redundancy or fluff. Every sentence carries meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a destructive mutation with 3 required parameters and no output schema. The description covers purpose and permissions but lacks parameter explanations and what happens after detachment (e.g., whether it is reversible, what the secret's status becomes). The idempotency is declared in annotations, but the description does not discuss the effect on the secret itself. Overall, adequate but with clear gaps in parameter mapping and operational 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 0%, so the description must compensate, but it does not explain the three parameters (agentId, buildId, credentialId). The tool name and description imply that agentId and buildId identify the revision and credentialId identifies the secret, but the mapping is not explicit. An agent may not know exactly what to pass, especially since 'credentialId' is not explicitly described as the secret identifier. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Detach an env-var secret from a revision.' This distinguishes it from related tools like attachRevisionSecret (opposite operation) and detachRevisionLogin (detaching a login instead of a secret). The verb 'detach' and the resource 'env-var secret from a revision' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when this tool can be used by specifying permission requirements: 'Personal secrets can only be detached by their owner; team-shared secrets require builder permissions.' This guides an agent on authorization prerequisites, implicitly telling it to avoid calling unless the user has the right role. It does not explicitly name alternatives, but the context is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismissClarityCaptureSuggestionDismiss Clarity Capture SuggestionBInspect
Dismiss a pending Process Landscape capture suggestion without creating a capture request (manager+).
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | ||
| suggestionId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (all hints false). The description adds useful behavioral context: that the action is a dismissal (mutation), that it does not create a capture request, and that it requires manager-level permissions. However, it does not disclose side effects (e.g., whether the suggestion is permanently removed, if audit logs are updated, or if notifications occur). For a mutation tool, more thorough behavior documentation would be beneficial.
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 filler. It front-loads the verb and resource and appends constraints concisely. 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?
Given that there is no output schema, no parameter descriptions, and no error handling info, the description is too brief. While it captures the high-level purpose, it fails to document parameters, return value, or potential error conditions. The agent lacks sufficient information to correctly supply nodeId and suggestionId or to understand the outcome of the 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 description coverage is 0% - the JSON schema properties for nodeId and suggestionId have no descriptions. The tool description does not explain either parameter's meaning (e.g., what nodeId refers to, how to obtain a suggestionId). The agent must infer from parameter names alone, which is insufficient. The description should clarify the role of each parameter to enable 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 action ('Dismiss'), the resource ('pending Process Landscape capture suggestion'), and the result ('without creating a capture request'). It also distinguishes from sibling tools like acceptClarityCaptureSuggestion and dismissClarityTeamAssignmentSuggestion by specifying 'capture suggestion'. The role constraint '(manager+)' adds useful context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (dismiss a suggestion you don't want to accept) by contrasting with 'without creating a capture request', but it does not explicitly name alternatives like acceptClarityCaptureSuggestion or provide guidance on when not to use it (e.g., if you intend to accept). Usage is implied rather than explicitly framed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismissClarityTeamAssignmentSuggestionDismiss Clarity Team Assignment SuggestionBInspect
Dismiss a pending Process Landscape team-assignment suggestion without changing the node's owner (manager+).
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | ||
| suggestionId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds that it does not change the node's owner, which is useful context. However, it does not disclose side effects, whether the dismissal is reversible, or if any further actions are triggered. For a write operation, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential action without any wasted words. Every part contributes to understanding the tool's purpose and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required params, no output schema, no nested objects), the description is adequate but incomplete. It does not explain what happens after dismissal (e.g., suggestion removed vs. marked), whether the operation is idempotent (annotation says no), or any prerequisites. 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 0%, so the description must explain both parameters. It only hints at their meaning ('node's owner' implies nodeId, 'team-assignment suggestion' implies suggestionId) but does not explicitly define them. The agent would need to infer from context, which is risky.
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 is specific: 'Dismiss a pending Process Landscape team-assignment suggestion without changing the node's owner (manager+).' It clearly states the verb (dismiss), resource (team-assignment suggestion), and scope (pending, owner unchanged), distinguishing it from the sibling 'acceptClarityTeamAssignmentSuggestion'.
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 guidance on when to use this tool vs. alternatives. The description implies it's for dismissing a pending suggestion, but does not say 'do not use if the suggestion is already accepted' or 'use acceptClarityTeamAssignmentSuggestion instead'. The agent must infer from sibling names, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismissNotificationDismiss NotificationAIdempotentInspect
Dismiss an important notification for the authenticated user, unpinning their own row from the Important section. Only important notifications (currently: connection_broken) can be dismissed. Idempotent. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The notification's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, and the description reinforces idempotency while adding new context: the 404 error when Notification Center is not enabled, and the restriction to current type connection_broken. This goes beyond what annotations provide, disclosing a meaningful failure mode and domain constraint 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?
Three concise sentences that are front-loaded with the core action, followed by constraints and prerequisites. No filler, every sentence provides necessary information, and the structure is easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter mutation tool with no output schema, the description is complete: it covers the action, scope (authenticated user's own row), allowed types, idempotency, and a critical 404 failure condition. The prerequisites and side effects are clearly communicated, making the tool's behavior fully understandable for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full coverage of the only parameter (id, with description 'The notification's unique identifier'), so the description does not need to add parameter details. The description refers to the notification being dismissed but does not offer additional semantics beyond what the schema already states. A baseline score of 3 is appropriate given the 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 uses the specific verb 'dismiss' with the resource 'important notification' and explains the concrete action of unpinning the user's row from the Important section. It differentiates itself from sibling tools like markNotificationRead or deleteNotification by focusing on the important-notification dismissal and explicitly narrowing the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool (to dismiss important notifications of type connection_broken) and provides an explicit exclusion ('Only important notifications... can be dismissed') along with a prerequisite (Notification Center feature must be enabled). It lacks an explicit mention of alternative tools, but the 'only' clause gives practical guidance for selecting this over other notification operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
downloadSkillDownload SkillARead-onlyIdempotentInspect
Download a custom skill as a ZIP archive. Only custom (team-owned) skills can be downloaded.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. Description adds value by specifying ZIP archive output and the custom-only eligibility restriction, which is not present in the structured 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?
Two short sentences, front-loaded with the primary action and output format, and the second sentence adds an essential restriction. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter download operation with good annotations, the description states the output format and eligibility constraint. It may not list response details, but the explicit ZIP output and parameter schema are 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 covers the single skill_id parameter fully with type, format, UUID pattern, and description. Description adds no parameter-specific syntax or meaning, so baseline 3 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?
Description names the specific verb 'download', the resource 'custom skill', and the output format 'ZIP archive'. It distinguishes itself from sibling tools like getSkillFileContent or deleteSkill by explaining it packages the entire skill as a ZIP.
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?
States clearly that only custom (team-owned) skills can be downloaded, giving an explicit condition of use and implicitly excluding system skills. It does not name a specific alternative for system skills, so it falls just short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicateAgentDuplicate AgentAInspect
Duplicate an existing agent into a new agent named "Copy of ", carrying over its configuration. Use the include_* flags in the (optional) body to control what is copied; all default on except memory. Requires the Lead Builder team role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The ID of the agent to duplicate | |
| include_aop | No | Copy the agent's operating procedure (AOP) and its handover targets. Defaults to true. | |
| include_queue | No | Copy the assigned Queue. Defaults to true. | |
| include_memory | No | Copy what the agent has learned so far (its Memory). Defaults to false. Memory can only be copied from the Duvo app — requesting it here returns an error. | |
| include_plugins | No | Copy installed plugins. Defaults to true. | |
| include_connections | No | Copy connected accounts (Connections) and their selected tools. Defaults to true. | |
| include_skills_files | No | Copy attached Skills and Files. Defaults to true. | |
| include_logins_secrets | No | Copy saved Logins and Secrets. Defaults to true. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing the naming convention, default behavior of include_* flags, the Lead Builder role requirement, and the special restriction that memory can only be copied from the Duvo app. This is valuable behavioral context that is not visible in annotations or schema alone.
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 cover the core action, naming behavior, parameter defaults, and permission requirement with no filler. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, no output schema, and minimal annotations, the description is remarkably complete: it explains what happens, what is copied by default, the key memory caveat, and the required role. No critical operational detail appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already documents its default and meaning. The description adds a useful aggregate summary ('all default on except memory') and notes the optional body, but does not provide significant per-parameter information 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 states a precise operation — duplicating an existing agent into a new agent named 'Copy of <name>' — with a clear verb and resource. This distinguishes it from createAgent, updateAgent, and deleteAgent in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: you duplicate an existing agent and control what is copied via include_* flags. It does not explicitly name alternatives or say when not to use it, but the meaning is unambiguous from the action and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicateClarityProcessDuplicate Clarity ProcessAInspect
Duplicate a Clarity process with its analysis, captures, message history, and, for v2 processes, its live current map and transformation proposal. Requires a team manager role.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Source Clarity process id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-idempotent, and non-destructive behavior. The description adds value by specifying exactly what is duplicated (analysis, captures, message history, and version-dependent items like live current map and transformation proposal). This provides behavioral nuance beyond the annotations. However, it does not describe error conditions 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 extremely concise: two sentences with no filler. The first sentence delivers the core functionality with specifics, the second adds a critical prerequisite. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and the description does not explain what the tool returns (e.g., the new process ID, success status, or error handling). For an agent to use this tool effectively, knowing the return value is important. The description is incomplete in this regard given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter 'id' already has a description ('Source Clarity process id'). The tool description adds no additional meaning or constraints beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: duplicates a Clarity process. It specifies the included contents (analysis, captures, message history, and for v2 processes, live current map and transformation proposal), which clearly distinguishes it from siblings like createClarityProcess (create new) or deleteClarityProcess (remove). The verb 'duplicate' and resource 'Clarity process' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite ('Requires a team manager role') which guides usage, but it does not explicitly state when to use this tool vs alternatives like createClarityProcess or when not to use it. The context of siblings and the duplication concept imply usage, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicatePulseDashboardDuplicate Pulse DashboardAInspect
Duplicate a Duvo Pulse dashboard, producing an idle clone of the current rendered dashboard. The conversation history, shares, and connections are not copied.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already define it as non-read-only, non-idempotent, and non-destructive. The description adds valuable context that the clone is idle and that conversation history, shares, and connections are not copied, going beyond the annotation 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?
The description is two concise sentences, front-loading the action and immediately stating exclusions. Every word contributes meaning and there is no wasted 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?
For a one-parameter tool with no output schema, the description covers the core behavior and key exclusions. The term 'idle clone' is slightly ambiguous and the return value is not mentioned, but overall the context is adequate for a simple cloning operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention artifactId or explain what it represents. While the UUID pattern and parameter name are somewhat self-explanatory, the description itself adds no 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 uses a specific verb ('Duplicate') and resource ('Duvo Pulse dashboard'), and explains the output is an idle clone of the current rendered dashboard. This clearly distinguishes it from sibling tools like createPulseDashboard, updatePulseDashboard, or refreshPulseDashboard.
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 duplicating a dashboard, but it does not explicitly state when-to-use vs alternatives or when-not-to-use. The note about what is not copied is more of a behavioral clarification than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exportPulseDashboardHtmlExport Pulse Dashboard HtmlARead-onlyIdempotentInspect
Render a Duvo Pulse dashboard to a self-contained static HTML snapshot (text/html, data baked in). 404 until the first generation turn has produced HTML; 409 for an openui dashboard, whose substrate this exporter cannot render.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | light | |
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint as true, and destructiveHint as false. The description complements these by revealing specific behavioral traits: the need to wait for generation turn (404 state) and the limitation with openui dashboards (409). This adds context beyond annotations. However, it does not mention any auth requirements or data handling specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the purpose and output format, then concisely lists edge cases. Every sentence adds unique value with zero waste. It is optimally sized for its content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameter count is 2 (1 required), no output schema, and moderate complexity (rendering a dashboard to HTML), the description covers the key behavioral aspects (error states, readiness condition) but does not explain what happens after a successful render or the format of the returned HTML. It is mostly complete but leaves minor gaps about success 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 coverage is 0% (no descriptions in schema parameters), so the description carries full burden here. While the description does not explicitly describe parameters, it implies the role of `artifactId` as identifying the dashboard. It also hints at significance of theme by mentioning 'data baked in' which suggests the output is styled according to the theme parameter. For 0% coverage, this is above baseline but could be more explicit.
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 'Render' and clearly identifies the resource ('Duvo Pulse dashboard'), stating output format ('self-contained static HTML snapshot'). It distinguishes from siblings like 'getPulseDashboardHtml' and 'getPulseDashboardPdf' by specifying the export nature. However, it doesn't fully clarify how it differs from 'getPulseDashboardVersionHtml', a sibling that also mentions HTML export.
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 error conditions ('404 until first generation turn produces HTML', '409 for openui dashboard'), which provides clear context for when not to use this tool. This is helpful guidance. However, it does not name alternative tools for those error cases or broader usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fileSuggestedClarityProcessesFile Suggested Clarity ProcessesBInspect
File every unfiled process the viewer can see into its suggested folder
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it 'files every unfiled process' but does not explain what 'filing' entails—whether it moves processes, copies them, or changes their state. It does not disclose side effects (e.g., whether original locations are lost, whether suggestions are consumed), return behavior, or error scenarios. While annotations indicate non-destructive (destructiveHint=false) and non-idempotent, the description adds minimal behavioral context beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the core action. It is front-loaded with the verb, contains no filler words, and efficiently communicates the scope. 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 batch operation that modifies multiple processes, the description is incomplete. It omits the nature of the action (move vs. re-folder), effect on already-filed processes, success/failure feedback, and error conditions. Given the moderate complexity and no output schema, more detail is warranted for an agent to invoke this tool accurately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, team_id, already has a comprehensive description in the input schema (100% coverage). The tool description adds no parameter-level information. Baseline 3 is appropriate because the schema does the full work, and the description does not detract from it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'File' combined with 'every unfiled process the viewer can see into its suggested folder', clearly identifying the action and scope. This distinguishes it from sibling tools like 'moveClarityProcessesToFolder' (which moves specific processes) or 'acceptClarityCaptureSuggestion' (which handles individual suggestions). The purpose is unambiguous and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'moveClarityProcessesToFolder' or 'acceptClarityCaptureSuggestion'. There is no mention of prerequisites, context (e.g., only run after suggestions are generated), or conditions where this tool should be avoided. The agent is left without explicit usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalizeCaseAttachmentFinalize Case AttachmentAInspect
Confirm an uploaded case attachment against storage. Answers with the attachment in its settled state — ready when the bytes are present, failed (with a reason) when the upload never completed.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier | |
| queue_id | Yes | The queue's unique identifier | |
| attachment_id | Yes | The attachment's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only supply readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description must explain behavior. It adds valuable context by stating that the tool verifies storage and returns a settled state with a failure reason. It does not fully disclose potential side effects of finalizing, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler. The core action and the resulting state variants are presented immediately, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the return semantics (ready/failed with reason). It is sufficient for an agent to select and invoke the tool with three self-descriptive UUID parameters, though it stops short of detailing side effects or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter (case_id, queue_id, attachment_id) already has a clear 'unique identifier' description. The tool description adds no extra meaning about how the parameters relate to the confirmation, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb and resource: 'Confirm an uploaded case attachment against storage.' It also defines the tool's unique response states (ready/failed), distinguishing it from upload-URL creation, listing, download, and deletion siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly situates the call after an upload attempt and defines when each outcome applies: 'ready when the bytes are present, failed ... when the upload never completed.' It does not explicitly name alternatives or exclusions, 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.
finalizeClarityOrganizationInterviewFinalize Clarity Organization InterviewAInspect
Manually mark an in-progress organization interview as complete without requiring final media uploads
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| interviewId | Yes | The organization interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint is false, so the tool is not destructive, which aligns with marking complete. The description adds the behavioral nuance of skipping media uploads, but doesn't disclose side effects like whether pending uploads are discarded or if the action is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and key condition, with no redundant words. 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?
Given the tool has only 2 simple parameters and a clear action, the description is complete. It doesn't need to explain return values as there is no output schema, but it covers the essential behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the description doesn't add meaning beyond the parameter names and types. The interviewId has a description in the schema, so the description adds no value for that parameter. Schema description coverage is 50% but the uncovered parameter (orgId) is self-explanatory from its name.
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 'manually mark' and the resource 'in-progress organization interview as complete', and specifies a key condition 'without requiring final media uploads'. This distinguishes it from other completion tools like completeClarityVideoUpload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for bypassing media uploads, indicating a specific scenario. It doesn't explicitly state when not to use it or provide alternatives, but the sibling tools show other completion methods, providing implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateClarityPortfolioIntelligenceGenerate Clarity Portfolio IntelligenceAInspect
Generate portfolio intelligence from all completed clarity processes. Returns 202 Accepted immediately and processes in background.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, not destructive. The description adds the asynchronous behavior (returns 202, processes in background), which is valuable. However, it does not disclose side effects of multiple calls (non-idempotent), the nature of the generated artifact, or how to retrieve results, leaving 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 two sentences: the first states the core purpose, the second states the mechanism. No wasted words, front-loaded with essential action. Highly 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?
Despite low complexity (1 param, async), the description omits critical details: what the 202 response body contains (e.g., a job ID or resource identifier) and how to retrieve the generated intelligence. Without an output schema, the description should cover the immediate response and follow-up, which it does not.
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% (team_id has a detailed description in the schema). The tool description adds no additional parameter information, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Generate portfolio intelligence from all completed clarity processes'. It clearly distinguishes from siblings like getClarityPortfolioIntelligence (retrieval) and generateClarityProcessLandscape (different output). The async mechanism is also mentioned.
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 generating new portfolio intelligence but does not explicitly contrast with alternatives (e.g., getClarityPortfolioIntelligence for existing data, or generateClarityProcessLandscape for landscape). No when-when-not guidance is provided, leaving the agent to infer from naming alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateClarityProcessLandscapeGenerate Clarity Process LandscapeAInspect
Start a process-landscape generation run for the organization from its eligible Clarity captures (organization executives and owners)
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false, but they do not describe the run behavior. The description adds that it starts a 'generation run' and uses 'eligible Clarity captures', implying an asynchronous, non-read-only operation. However, it does not clarify whether it creates a new landscape, overwrites existing data, or how long the run might take.
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 of about 23 words, front-loaded with the action and resource. It contains no filler or redundant information, making it exceptionally concise 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?
With one parameter, no output schema, and sparse annotations, the description provides the core purpose but leaves gaps: it does not state what the tool returns (e.g., a run ID) or what 'eligible Clarity captures' means. It is adequate for selection but not fully complete for an agent expecting to know the outcome of starting a generation run.
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%—the orgId parameter has only format 'uuid' with no description. The description mentions 'for the organization', giving some contextual meaning to the orgId parameter. However, it does not fully compensate by explaining what 'eligible' means or how the orgId is used beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Start' and a clear resource 'process-landscape generation run', and further specifies the source: 'eligible Clarity captures (organization executives and owners)'. This clearly distinguishes it from siblings like getClarityProcessLandscape or createClarityLandscapeNode by focusing on initiating a generation 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 implies usage (initiate a landscape generation run) and provides context about the source data, but it does not explicitly state when to use this tool versus alternatives or mention any exclusions. For example, it does not say 'use getClarityProcessLandscape to retrieve generated results'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateClarityProcessSnapshotGenerate Clarity Process SnapshotAInspect
Trigger a snapshot generation pipeline for a v2 clarity process, selected by kind. current_process runs the generateCurrentProcess pipeline (body fields are proposal-only and rejected); transformation_proposal runs the generate or regenerate proposal pipeline. Returns 202 immediately and finalises asynchronously via the cc-server webhook stream.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Snapshot kind to list | |
| process_id | Yes | The clarity process id | |
| custom_guidance | No | Transformation proposals only: optional freeform guidance for this generation. Used as high-priority design guidance, not source-of-truth evidence. | |
| regenerate_from | No | Transformation proposals only: id of a prior proposal snapshot to refine. When supplied, runs the regenerate pipeline using that proposal's current-process snapshot as the anchor and the extra captures collected since. | |
| source_snapshot_id | No | Transformation proposals only: id of the current-process snapshot to anchor the new proposal to. Defaults to the latest snapshot for the process. | |
| transformation_aggressiveness | No | Transformation proposals only: controls how much the generated proposal should change the current process structure. | aggressive |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clarifies the async nature ('Returns 202 immediately and finalises asynchronously via the cc-server webhook stream'), which annotations lack. It also indicates which fields are relevant per kind. However, it does not detail what happens on failure, rate limits, or whether the operation is cancellable. Given annotations only show non-destructive and non-idempotent hints, the description adds meaningful 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 relatively concise at two sentences, front-loading the main action and then detailing kind-specific behavior. Minor redundancy (e.g., 'generate or regenerate proposal pipeline' could be tightened) but overall efficient for the complexity.
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 6 parameters, 100% schema coverage, no output schema, and moderate complexity (two pipeline kinds, async behavior), the description covers the key behavioral aspects and parameter applicability. Slight gap: it doesn't explain the role of 'source_snapshot_id' default or how to poll for completion. Still, for a tool with rich schema descriptions, this is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with rich descriptions for each parameter (e.g., 'custom_guidance' is 'high-priority design guidance, not source-of-truth evidence'; 'regenerate_from' specifies it runs the regenerate pipeline using that proposal's current-process snapshot). The description further adds context about which parameters apply to which kind, and the async return behavior, which goes 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 specifies the verb ('trigger a snapshot generation pipeline') and the resource ('v2 clarity process'), plus distinguishes between two specific kinds ('current_process' and 'transformation_proposal') with concrete behaviors. This differentiates it well from sibling tools like 'getClarityProcessSnapshot' (read) and 'saveClarityProcessSnapshot' (save).
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 when to use each 'kind' value, including specific body field conditions for 'current_process' and the distinction between generate vs. regenerate for 'transformation_proposal'. It implicitly indicates this is for initiating snapshots as opposed to reading or saving, but does not explicitly exclude alternative tools or state when NOT to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAgentGet AgentARead-onlyIdempotentInspect
Get an agent by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover the safety profile. The description 'Get an agent by ID' aligns with these but adds no extra behavioral context (e.g., return format, 404 behavior, permissions). It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that uses no wasted words. It is as concise as possible while still conveying the essential 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?
This is a trivial single-parameter read operation with strong annotations and 100% schema coverage. There is no output schema, but the description is sufficient for an agent to understand what the tool does and when to invoke it. Nothing meaningful 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% with agent_id described as 'The agent's unique identifier', so the description adds no new parameter semantics. The schema already fully documents the parameter, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get an agent by ID' uses a specific verb ('Get') and resource ('agent') and clearly specifies the lookup key (by ID). This distinguishes it from sibling tools like listAgents (listing all agents) and createAgent/updateAgent/deleteAgent (mutations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool vs alternatives, but the 'by ID' phrasing implies it should be used when an agent_id is available and a single agent is needed. No exclusions or alternative tools are named, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAgentCaseTriggerGet Agent Case TriggerARead-onlyIdempotentInspect
Retrieve a single case trigger by id.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier | |
| trigger_id | Yes | The case trigger's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description need not repeat them. However, it adds no additional behavioral context such as not-found handling or return format, beyond what the annotations and schema 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 description is a single, concise sentence that is front-loaded with the action and resource. It contains zero 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?
This is a simple read operation with low complexity, complete parameter descriptions in the schema, and annotations indicating a safe, non-destructive operation. The description adequately covers the essential purpose, though it could optionally mention the return value or not-found 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% for both parameters (agent_id and trigger_id), each with clear descriptions. The tool description itself adds no parameter information, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Retrieve' with a clear resource 'single case trigger' and identifies the scope 'by id'. This clearly distinguishes it from sibling tools like listAgentCaseTriggers and createAgentCaseTrigger.
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 a specific trigger ID is known, but provides no explicit guidance on when to use this tool versus alternatives such as listAgentCaseTriggers. No exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAgentMemoryFileGet Agent Memory FileARead-onlyIdempotentInspect
Get the contents of a single memory file for an agent.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Relative path to the memory file, e.g. notes.md or context/customer.md | |
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false; the description adds no additional behavioral context such as error handling or what happens when the file doesn't exist, so it stays at the baseline for annotation-covered tools.
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?
Single sentence, front-loaded with the verb, zero 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 read-only tool with two well-documented parameters, informative annotations, and no output schema, the description is adequate even without listing return type or error behavior; it just misses any relation to sibling 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?
Schema description coverage is 100%, with both agent_id (UUID format) and path (relative path with example) already documented; the description adds no additional parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the resource 'contents of a single memory file for an agent,' clearly distinguishing it from listAgentMemoryFiles (list) 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?
No explicit when-to-use or alternatives are provided; usage is implied by the tool's name and description, but unlike get_calls it does not differentiate itself from sibling tools like getFileContent or getSkillFileContent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAgentSuggestionGet Agent SuggestionARead-onlyIdempotentInspect
Fetch a single suggestion. Poll this after a 202 from consume: an AOP apply in flight reports payload.apply.state (running/failed); once consumed, applied_revision_id carries the draft revision the change was staged onto.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The suggestion's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context by explaining the relationship to an in-flight AOP apply and the meaning of payload.apply.state and applied_revision_id. This goes beyond what annotations provide, though it could have detailed more about error cases or full response 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?
The description is two sentences with no filler. The first sentence states the core action, and the second delivers the necessary polling context in a compact, information-dense manner. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no output schema, the description provides the essential context: what it fetches, when to poll, and what important response fields to expect. It doesn't describe the complete return structure, but given the tool's simplicity and the annotations covering safety, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'id' parameter, which already includes a description, type, format, and pattern. The description does not add any additional information about the parameter, so it neither helps nor hinders. Baseline 3 is appropriate given the schema fully documents the 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?
The description opens with 'Fetch a single suggestion,' which is a specific verb+resource that clearly distinguishes this tool from listAgentSuggestions (fetching multiple) and consumeAgentSuggestion (consuming). It also adds the polling context, further clarifying its unique 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 explicitly states when to use this tool: 'Poll this after a 202 from consume.' It provides a clear use case and indicates the expected state fields. It does not mention alternatives or exclusions, but the polling context is sufficient to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getBatchQueueStatsGet Batch Queue StatsARead-onlyIdempotentInspect
Get case status counts for many Queues in ONE call. Use this after listQueues whenever you need per-Queue counts — cases waiting on a human, needing review, pending, failed — instead of calling listCases or searchCases once per Queue. Results are keyed by Queue ID and include zero counts for Queues with no matching cases; Queue IDs from other teams are silently dropped. For a count on a single Queue with richer filters, listCases with count_only=true is the alternative.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| queue_ids | Yes | Comma-separated Queue IDs to aggregate. Include 1 to 100 IDs from the team in the URL. | |
| created_at_to | No | Exclusive case creation upper bound. Use an ISO 8601 timestamp or a relative duration such as 7d or 12h. Omit it for no upper bound. | |
| created_at_from | No | Inclusive case creation lower bound. Use an ISO 8601 timestamp or a relative duration such as 7d or 12h. Omit it for no lower bound. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context beyond that: results are keyed by Queue ID, zero counts are included, and foreign team Queue IDs are silently dropped. It also explains the team/API key scoping for team_id. This is useful, though not exhaustive (e.g., no pagination details), but the annotations cover the safety profile 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?
The description is four sentences, all dense with actionable information. It front-loads the purpose, then gives usage timing, key behaviors, and the alternative. While slightly long, every sentence earns its place, so it is concise without being terse.
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 4 parameters, no output schema, and moderate complexity, the description covers the purpose, when to use, alternatives, and important behavioral details (zero counts, silent drop, team scoping). It doesn't mention pagination or exact return format, but for an aggregation stats call, this is adequate. It could be more complete, but it is sufficient for an agent to invoke 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 baseline is 3. The description adds semantics beyond the schema by explaining the meaning of the counts (waiting, review, pending, failed) and the behavior of foreign queue IDs being dropped, which directly informs the queue_ids parameter usage. It also clarifies the '1 to 100' limit per the schema. This adds meaningful context.
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 as 'Get case status counts for many Queues in ONE call', specifying the verb, resource, and scope. It distinguishes itself from listCases and searchCases by explicitly naming that it aggregates across multiple queues in a single call, 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 explicit usage guidance: 'Use this after listQueues whenever you need per-Queue counts' and contrasts with the alternative 'listCases with count_only=true' for a single queue with richer filters. This clearly states when to use the tool and when to use the alternative, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCaseGet CaseARead-onlyIdempotentInspect
Get a case by ID. Returns the case, its event history, and every case-approval batch ever created on the case (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds behavioral context by specifying the exact response contents (case, event history, all approval batches) and ordering (newest first), giving the agent a clearer expectation of what happens when invoked. It does not disclose potential errors or permissions, but given the annotation coverage, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action ('Get a case by ID'), and then succinctly lists what is returned. Every sentence adds value, with no repetition of schema or annotation information. It is minimal yet complete.
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-parameter schema, read-only annotations, and absence of an output schema, the description provides all necessary context: what the tool does, what it returns, and the ordering. The agent has enough information to invoke it correctly without needing further explanation of return formats or 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?
The input schema fully documents the single 'case_id' parameter with type, format, and description ('The case's unique identifier'), achieving 100% schema coverage. The description only references 'by ID' without adding new parameter details, so it neither compensates nor detracts; 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 uses a specific verb ('Get') and resource ('a case by ID'), clearly stating the operation. It distinguishes from sibling tools like listCases and searchCases by emphasizing retrieval of a single case, and further details the returned data (event history, approval batches), making its 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 clearly implies the tool is used when you have a specific case ID and need the full case details, history, and approval batches. While it does not explicitly name alternatives or exclusions, the context is clear enough for an agent to select it over list/search tools given the ID-focused language and the listed output scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCaseAttachmentDownloadUrlGet Case Attachment Download UrlARead-onlyIdempotentInspect
Mint a short-lived signed URL for one case attachment. disposition=inline serves the file for the in-app viewer; attachment forces a download.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier | |
| queue_id | Yes | The queue's unique identifier | |
| disposition | No | attachment | |
| attachment_id | Yes | The attachment's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description reveals the URL is short-lived and signed, plus how disposition changes server behavior (inline viewer vs download). This is valuable context that the annotations do not capture, though it omits details like expiration duration or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and then a compact but complete explanation of the disposition parameter. Every word earns its place, and there is no filler or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core return value is clear from the description ('short-lived signed URL'), and annotations confirm the operation is safe and non-mutating. It doesn't specify the URL format or exact expiry duration, but for a simple URL-minting tool these are minor gaps; no output schema exists to compensate.
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 lacks a description for disposition, and the description fills that gap by defining the inline and attachment behaviors. For the three required IDs, the schema already provides basic descriptions, so the description doesn't need to repeat them, though it also doesn't explain queue_id's specific role.
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 concrete action ('Mint') against a distinct resource ('short-lived signed URL for one case attachment'), and the disposition explanation clarifies the exact behavior. This differentiates it from siblings like listCaseAttachments or createCaseAttachmentUploadUrl without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case—downloading a single case attachment—but never explicitly states when to prefer this tool over related tools like getFileDownloadUrl or getPulseDashboardAttachmentDownloadUrl. There are no exclusion statements or alternative routing instructions, so the agent must infer when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCaseQueueEvalRubricsGet Case Queue Eval RubricsARead-onlyIdempotentInspect
List a queue's active case-level evaluation rubrics — the Pass/Fail questions a whole case is judged against at settlement. Shows the queue's current version's set (auto-generated from the connected Assignments' AOPs, plus any manually-authored rubrics).
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral detail beyond annotations by explaining the 'current version's set' and the composition of the rubric set (auto-generated from AOPs plus manually-authored rubrics), which helps an agent understand exactly what data is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the first sentence immediately states the action and resource, and the second adds essential clarifying context about current version and rubric origin. Every sentence contributes useful information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list operation with a single well-documented parameter, the description provides sufficient context: it defines the domain, the scope ('active', 'current version'), and how the rubrics are generated. No output schema exists, but the description adequately conveys what the result set represents.
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 only one parameter, queue_id, and the input schema description already fully covers it as 'The queue's unique identifier' with 100% schema description coverage. The tool description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'List' and names the exact resource: a queue's active case-level evaluation rubrics. It clarifies what these rubrics are (Pass/Fail questions a whole case is judged against at settlement), distinguishing this read operation from related mutation siblings like createCaseQueueEvalRubric, updateCaseQueueEvalRubric, and deleteCaseQueueEvalRubric.
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 this tool applies: retrieving a queue's current active evaluation rubric set, including auto-generated rubrics from connected Assignments' AOPs and manually-authored ones. It does not explicitly contrast with alternatives such as getEvalRubrics or getEvalScores, but the case-queue scope is clearly conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityArtifactChatMessagesGet Clarity Artifact Chat MessagesARead-onlyIdempotentInspect
Load the latest artifact-chat messages for one active conversation, returned oldest-first.
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes | The Clarity process id | |
| conversation_id | Yes | The artifact-chat conversation id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds value by specifying 'latest ... for one active conversation' and 'oldest-first' ordering. It doesn't contradict annotations. It is slightly limited in not describing what happens if the conversation is inactive or has no messages, but overall it complements the annotations 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?
The description is a single, clear sentence with two key qualifiers ('latest', 'oldest-first') and a constraint ('active'). It is well front-loaded with the main action. It could be slightly more concise by omitting 'artifact-chat' since the name already implies it, but it's efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description does not explain what the output looks like (e.g., message objects with fields). However, the tool is simple (retrieving messages), and the annotation coverage is strong. The description is complete enough for an agent to use it correctly, though specifying the expected output structure would improve 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 100%, so the schema already documents both parameters (process_id and conversation_id) with their formats. The description does not add any additional semantics beyond implying the conversation must be 'active'. Baseline 3 is appropriate given 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 ('Load') and resource ('artifact-chat messages') with clear constraints ('latest ... for one active conversation, returned oldest-first'). It distinguishes itself from siblings like listClarityArtifactChatConversations (which lists conversations, not messages) and stopClarityArtifactChatConversation (which stops a conversation).
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 should be used to retrieve messages for an active conversation, and the 'oldest-first' ordering gives a temporal clue for agent reasoning. However, it does not explicitly say when not to use it (e.g., for a stopped conversation) or name alternatives like listClarityArtifactChatConversations for listing conversations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityCaptureGet Clarity CaptureARead-onlyIdempotentInspect
Get a single Clarity v2 capture including full transcript and video transcript. Use this when the process was loaded with captures=lite, or when only one capture's transcript is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| capture_id | Yes | The capture id | |
| process_id | Yes | The clarity process id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds that the result includes full and video transcripts, which is useful return-value context. However, it does not elaborate on potential rate limits, auth requirements, or response structure beyond what annotations already convey. It is not misleading and adds some value, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the core action and included content, the second gives usage guidance. Every word earns its place, with no redundancy or filler. It is front-loaded with purpose and immediately provides decision-relevant 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 read-only get-by-id tool with full schema coverage and safety annotations, the description covers the essential purpose, return content, and usage conditions. There is no output schema, but the mention of 'full transcript and video transcript' gives a reasonable expectation of the return value. It could be more complete by naming a sibling list endpoint, but it is sufficiently complete for an agent to decide 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%: both process_id and capture_id are described with UUID format and basic meaning. The description itself does not add any new parameter-specific details beyond the schema. Since the schema already documents the parameters well, the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb ('Get'), a specific resource ('a single Clarity v2 capture'), and the key included content ('full transcript and video transcript'). It also distinguishes itself from listing endpoints by explicitly stating 'single', and the usage context ('process was loaded with captures=lite') helps differentiate from bulk-fetch alternatives.
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: 'when the process was loaded with captures=lite, or when only one capture's transcript is needed.' This gives clear context, though it does not name a specific alternative tool (e.g., a list captures endpoint) for the opposite scenario. The guidance implies 'do not use this for multiple captures' but could be more explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityExportGet Clarity ExportARead-onlyIdempotentInspect
Get a Clarity export run by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, idempotentHint: true, and destructiveHint: false, so the safety profile is fully covered. The description adds the context that it retrieves by ID but does not disclose return format or error behaviors. Since annotations are rich, the additional value is limited but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that gets straight to the point. It is appropriately sized for a simple retrieval operation with one parameter. 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?
Given the tool's low complexity (1 parameter, no output schema), the description covers the essential purpose. However, it does not explain what the tool returns or whether the export must be in a certain state. For a retrieval tool, it is minimally adequate but could be enhanced with return value hints or prerequisites.
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 coverage is 0%, meaning no parameter descriptions are provided. The description states 'by ID' which aligns with the single required parameter 'id'. However, it does not explain what the ID represents (e.g., export run UUID) or provide any additional meaning beyond the schema's format constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a Clarity export run by ID' clearly identifies the verb (Get), resource (Clarity export run), and the retrieval mechanism (by ID). It distinguishes itself from sibling tools like 'startClarityExport' and 'listActiveClarityExports' by specifying retrieval by identifier rather than starting or listing exports.
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 a specific export run ID, but it does not explicitly state when to use this tool versus alternatives (e.g., listActiveClarityExports for browsing, startClarityExport for creating). It lacks guidance on prerequisites or conditions like export completion status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityHierarchyPeopleGet Clarity Hierarchy PeopleARead-onlyIdempotentInspect
List the people attached to every authorized linked process node in the organization's Process Landscape. Returns a flat list where each person carries nodeId and processId, plus their role, invite status, and capture count. truncated is true when the node subtree or any single process roster was capped.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| rootId | No | Only return rosters for nodes in the subtree under this node |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive, but the description adds important behavioral details beyond those: it returns a flat list with specific fields (nodeId, processId, role, invite status, capture count) and discloses the truncation behavior via 'truncated' flag, which is crucial for understanding result completeness. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and followed by concise output details. Every sentence earns its place; no fluff or redundant 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?
Given there is no output schema, the description fully specifies the return format (flat list, key fields, truncation flag) and describes the scope (authorized linked process nodes). It covers behavioral edge cases (truncation) and is sufficiently complete for a read-only list tool with good annotation support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (rootId has a description, orgId does not). The description adds some context by stating the tool operates on 'the organization's Process Landscape', implicitly clarifying orgId's purpose, but it doesn't explain parameter formats or behaviors beyond what the schema already provides. It adds marginal value over the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the resource ('people attached to every authorized linked process node') plus the scope ('in the organization's Process Landscape'). It clearly distinguishes this from sibling tools that deal with process structure or other aspects, such as getClarityProcessTree or listClarityProcesses.
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 states what the tool does and the context (listing people across authorized linked process nodes, with optional subtree filtering via rootId). It provides clear context for when to use it, but it does not explicitly mention alternatives or when not to use it, which would justify a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityOrganizationInterviewGet Clarity Organization InterviewARead-onlyIdempotentInspect
Load a single organization Clarity interview with transcript
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| interviewId | Yes | The organization interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds that it returns a transcript, which is behavioral context beyond what annotations provide. No contradictions. The description aligns well with the read-only, idempotent nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that clearly states the tool's purpose and what it returns. No unnecessary words. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with 2 required UUID parameters, no output schema, and no nested objects, the description is adequate. It states the return includes a transcript, which is the key output. Could optionally mention that the interview is loaded by org and interview ID, but that is already clear from the parameter 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 description coverage is 50%: interviewId has a description ('The organization interview ID'), but orgId does not. The description mentions both parameters implicitly ('orgId' and 'interviewId' in the resource name) but does not elaborate on their semantics beyond what the schema provides. With only partial schema coverage, the description could do more to explain the purpose of orgId (e.g., the organization this interview belongs to).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it loads a single organization Clarity interview with transcript. The verb 'load' is specific and the resource is well-defined. It distinguishes from siblings like listClarityOrganizationInterviews (which lists) and deleteClarityOrganizationInterview (which deletes).
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 for fetching a specific interview by providing both orgId and interviewId, but it does not explicitly state when to use this versus other interview-related tools like getClarityTeamInterview or listClarityOrganizationInterviews. No guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityPortfolioIntelligenceGet Clarity Portfolio IntelligenceBRead-onlyIdempotentInspect
Get portfolio intelligence for the current team
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide `readOnlyHint`, `idempotentHint`, and `destructiveHint: false`, which already signal safe, read-only behavior. The description does not contradict these and adds no additional behavioral traits, so the annotations carry the transparency burden. A score of 4 reflects that annotations are fully sufficient and description doesn't harm.
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, short sentence. It is concise and front-loaded. However, it is also somewhat vague and could benefit from slightly more context without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one optional parameter, schema fully covering it, and rich annotations, the description is almost complete enough, but the term 'portfolio intelligence' is undefined. There is no output schema and no explanation of what the tool returns. For a potentially complex concept, more context is needed to set agent expectations.
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 description is not required to add param details. The schema's team_id description is rich (explains pinned team vs. OAuth scenario). The tool description itself doesn't add to parameter meaning, but with full schema coverage, the baseline is 3; however, the description does mention 'current team', which weakly aligns with the team_id parameter, adding slight value. Score 4 is generous but 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 says 'Get portfolio intelligence for the current team', which names a verb ('get') and a resource ('portfolio intelligence'), but 'portfolio intelligence' is vague and not defined. It does not clearly distinguish itself from the sibling `generateClarityPortfolioIntelligence`, which likely also relates to portfolio intelligence.
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 vs. `generateClarityPortfolioIntelligence`. The description does not define what 'portfolio intelligence' is or when retrieval is appropriate. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityProcessGet Clarity ProcessARead-onlyIdempotentInspect
Get the v2 read model for a clarity process: the process row (with operational fields like generation_error, generation_progress, generation_started_at, generation_last_activity_at, custom_prompt), its captures, and the lightweight version arrays for both snapshot tabs. The full payload of any specific snapshot is fetched lazily via the unified per-snapshot detail endpoint (GET .../snapshots/:kind/:id); this read model deliberately doesn't carry it so the response stays small.
| Name | Required | Description | Default |
|---|---|---|---|
| captures | No | Capture payload mode. `full` (default) embeds each capture's transcript content. `lite` omits `transcript`/`videoTranscript` (returned as null) and relies on the `hasTranscript`/`hasVideoTranscript` flags; fetch content on demand via `GET .../captures/:capture_id`. | full |
| process_id | Yes | The clarity process id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds valuable behavioral context: it describes the read model structure, the operational fields included, and that full snapshot payloads are excluded to keep responses small. This goes beyond the annotations and is 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 description is two sentences: the first delivers the core purpose and contents, the second explains the lazy-loading design and rationale. Every sentence adds value, no filler, and it's front-loaded with the primary 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?
Given the tool has a read model with no output schema, the description adequately covers what's included, what's excluded, and how to access the full payload. It could provide more detail on response formatting, but the essential usage context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with detailed descriptions for both parameters (process_id and captures). The description adds some context about captures being part of the read model, but doesn't introduce new meaning beyond what the schema offers, so it stays at 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 description clearly states the tool gets the 'v2 read model for a clarity process', enumerating specific components (process row with operational fields, captures, lightweight version arrays). It distinguishes from siblings by emphasizing 'v2', 'lightweight', and the deliberate exclusion of full snapshot payloads, differentiating it from getClarityProcessSnapshot and getLegacyClarityProcess.
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 explains that full snapshot payloads are fetched lazily via a separate unified per-snapshot detail endpoint, implying when to use this read model versus when to fetch snapshot details. It provides clear context for appropriate usage, though it doesn't name the alternative sibling tool directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityProcessInviteLinkGet Clarity Process Invite LinkARead-onlyIdempotentInspect
Get the active interview invite link for a process.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-mutating operation. The description adds no contradictory behavioral details, and the term 'get' aligns with read-only semantics. The description doesn't explain what 'active' means or what happens if no link exists, but annotations adequately cover the core 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, concise sentence that communicates the core purpose without extraneous words. It front-loads the verb 'Get' and immediately identifies the resource, making it highly scannable for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema, clear annotations), the description is minimally complete. It tells the agent what the tool returns (invite link) and the context (active for a process), but richer details such as what 'active' means or the link's expiry would improve completeness. The annotations and schema fill many gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one parameter (id) with a UUID format and pattern. The description does not describe the parameter beyond its existence, but the schema itself provides strong constraints (format, pattern). The context signal shows 0% coverage, but with a single well-defined parameter, the lack of additional description is acceptable. 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 'Get the active interview invite link for a process' clearly states the action (get), the resource (active interview invite link), and the context (for a process). This distinguishes it from sibling tools like createClarityInviteLink or deleteClarityProcessInviteLink, though it could further specify that it retrieves the current link rather than generating a new one.
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 a user needs to retrieve an existing invite link for a process, but does not explicitly state when to use this tool versus alternatives like createClarityInviteLink (for generating a new permanent link) or deleteClarityProcessInviteLink (for removal). Given only one sibling tool exists for invite links, basic guidance is assumed but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityProcessJoinInfoGet Clarity Process Join InfoCRead-onlyIdempotentInspect
Get information about a clarity interview invite link (public).
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the core behavioral traits. The description adds that the link is 'public', which offers some extra context, but does not disclose return format or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise. However, it could include a brief explanation of the token parameter without becoming verbose.
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 low complexity (one parameter, no output schema, good annotations), the description should at least clarify the token parameter. The absence of parameter semantics and usage guidance leaves the tool under-documented for an agent.
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 defines a required 'token' parameter with no description, and the description does not explain what the token is, how to obtain it, or its format. With 0% schema description coverage, the description fails to compensate.
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 the tool retrieves information about a clarity interview invite link and specifies it is public. This provides a clear verb-resource pair, but it does not distinguish the tool from siblings like getClarityProcessInviteLink or acceptClarityProcessJoin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., getClarityProcessInviteLink, acceptClarityProcessJoin). There are no prerequisites, context, or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityProcessLandscapeGet Clarity Process LandscapeBRead-onlyIdempotentInspect
Fetch the organization's full process landscape with process summaries, team assignments, and page-level stats
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| rootId | No | ||
| teamId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the scope ('full' landscape) and content types but does not disclose pagination, response shape, or permission requirements. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with the verb and resource first, and no filler. Every phrase adds meaningful context (full landscape, summaries, team assignments, stats).
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 explain return format or behavioral details. It mentions content types but omits how optional parameters filter results and whether pagination is involved, leaving the tool's behavior under-specified for its 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 schema has 0% description coverage for parameters, and the description does not explain orgId, rootId, or teamId. It does not clarify how rootId and teamId affect the 'full' landscape, leaving the semantics ambiguous and failing to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' and identifies the resource as the 'organization's full process landscape,' while listing concrete contents (process summaries, team assignments, page-level stats). This clearly distinguishes it from sibling tools like listClarityProcesses or getClarityProcessTree.
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 'full process landscape' implies use when a comprehensive view is desired, but the description does not explicitly state when to prefer this over alternatives like listClarityProcessSummaries or generateClarityProcessLandscape. No exclusions or prerequisites are provided, leaving usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityProcessSharingGet Clarity Process SharingARead-onlyIdempotentInspect
Get the sharing status for a clarity process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clarity process ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and idempotent, which covers the safety profile. The description adds the specific resource ('sharing status') but does not disclose any additional behavioral traits such as expected response format, pagination, or permission requirements. With high annotation coverage, the description is adequate but not enriched.
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, clear sentence with no unnecessary words. It is highly concise and front-loaded, efficiently communicating the tool's 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?
Given the tool's low complexity (one parameter, no output schema, clear annotations), the description is minimally adequate. However, it lacks details about the return value (e.g., format of 'sharing status'), which would help agents parse the response without needing to rely on implicit knowledge.
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% (the only parameter 'id' has a description: 'Clarity process ID.'). The tool description does not add any further meaning beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get the sharing status for a clarity process'. The verb 'Get' and resource 'sharing status' are unambiguous, and it effectively distinguishes itself from the sibling tool 'updateClarityProcessSharing' (write operation).
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 explicit guidance on when to use this tool versus alternatives. However, the read-only nature is implied by the verb 'Get', and the annotations (readOnlyHint, idempotentHint) indirectly support usage for safe queries. Missing explicit exclusions or context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityProcessSnapshotGet Clarity Process SnapshotARead-onlyIdempotentInspect
Fetch the full payload for a Clarity v2 process snapshot of either kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Snapshot kind to list | |
| process_id | Yes | The clarity process id | |
| snapshot_id | Yes | Snapshot id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which set expectations for safe read behavior. The description adds the 'full payload' detail, clarifying the return scope, but provides no additional context about response size, pagination, or error handling. Given the strong annotations, a 3 is appropriate: the description adds some value but not rich behavioral context beyond structured 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?
The description is a single, focused sentence that front-loads the verb and resource. Every word contributes meaning; there is no redundancy 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 simple fetch operation with three well-documented parameters and strong annotations, the description is nearly complete. It clearly states the tool's purpose and return scope ('full payload'), and the lack of an output schema is offset by the description's clarity about what is returned. It could optionally mention the difference between the two snapshot kinds, but the enum in the schema already covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter (kind, process_id, snapshot_id) already described in the input schema. The description adds no parameter-level semantic detail beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and identifies the unique resource ('full payload for a Clarity v2 process snapshot'), which clearly distinguishes it from sibling tools like listClarityProcessSnapshots (listing) and getClarityProcess (process, not snapshot). The phrase 'of either kind' references the enum distinction, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage: call this when you need the full payload of a specific snapshot, as opposed to listing snapshots. However, it does not explicitly state when not to use alternatives or mention any preconditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityProcessTreeGet Clarity Process TreeARead-onlyIdempotentInspect
Fetch the organization's process tree, or the subtree under rootId
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| rootId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety profile is known. The description adds the subtree behavior under rootId, but no additional behavioral traits like pagination or return format. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear subject and optional condition. No unnecessary 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?
With only 2 params, read-only annotations, and no output schema, the description covers the basic purpose but doesn't describe the tree structure or response format. For a simple fetch operation, it's adequate but not comprehensive.
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 description must compensate. It clarifies that rootId specifies the subtree root, but orgId's purpose is only implied through 'organization's'. This adds some semantic context beyond the schema but not extensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Fetch' and clearly identifies the resource as the organization's process tree, with optional rootId for subtree. This distinguishes it from sibling tools like getClarityProcess or listClarityProcesses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving the process tree but does not explicitly state when to use it over alternatives such as listClarityProcesses or getClarityProcess. It provides context that the tree vs subtree is accessible, but no exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getClarityTeamSettingsGet Clarity Team SettingsBRead-onlyIdempotentInspect
Get clarity team settings for financial calculations
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover the safety profile. The description adds 'for financial calculations', hinting at the nature of the settings. However, it does not disclose the return format, pagination, or any side effects beyond what annotations already imply. The description adds minimal value beyond the structured 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, short sentence that efficiently communicates the core purpose. It is front-loaded with the verb 'Get'. While it could include more informative content without losing conciseness, it wastes no words. Score 4 reflects good efficiency but slight under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and no output schema, the description is minimally adequate. It mentions the domain ('financial calculations'), which adds context, but does not specify what settings are returned (e.g., currency, rounding rules). Given the lack of output schema, the description should provide more detail about the return value. Score 3 indicates completeness gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter team_id, which includes a thorough explanation of how it behaves for API key vs OAuth callers. The tool description adds no new parameter meaning beyond 'for financial calculations', which is about the tool purpose, not the parameter. Baseline 3 is appropriate given complete schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and resource (clarity team settings), with a specific purpose ('for financial calculations'). While it doesn't explicitly differentiate from siblings like updateClarityTeamSettings, the name and context make the distinction clear. A slightly more detailed description of what settings are included would push it to 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., when not to use it, if prerequisites exist). The team_id parameter description within the schema gives some context about API key vs OAuth usage, but the main description lacks explicit usage scenarios or warnings. This is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getConnectionGet ConnectionARead-onlyIdempotentInspect
Get one of your connections by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_id | Yes | Connection ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds ownership scoping ('one of your connections'), but no other behavioral traits (e.g., return format, errors, pagination) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. Every token adds meaning and it is highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and thorough schema coverage, the description is sufficient. It communicates the primary capability and ownership constraint, and the output schema is absent so return values are not required. Missing details like connection structure are outside the necessary scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the single parameter (connection_id), already providing type, format, pattern, and description. The tool description adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the exact action ('Get') and resource ('one of your connections') with a specific retrieval key ('by ID'). It clearly distinguishes from siblings like createConnection, updateConnection, deleteConnection, and listConnections.
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 'by ID' clause implies this is for fetching a single existing connection, but there is no explicit guidance on when to choose this over listConnections or getConnectionCredentials. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getConnectionCredentialsGet Connection CredentialsARead-onlyIdempotentInspect
Get the header keys configured for a connection. Sensitive values (api keys, tokens, passwords) are returned as empty strings — the response only reveals which credential fields are set, never their values.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_id | Yes | Connection ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds meaningful behavioral context: sensitive values are returned as empty strings and only field presence is revealed. This goes beyond annotations by specifying response semantics and the security posture.
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, front-loaded sentences: the first states the tool's purpose, the second explains the sensitive-value redaction behavior. 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?
For a simple read-only tool with one parameter and no output schema, the description sufficiently explains the return behavior (which fields are set, values redacted). It provides enough context for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single connection_id parameter. The description does not add additional meaning about the parameter beyond the schema's 'Connection ID' description, 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 uses a specific verb and resource ('Get the header keys configured for a connection'), clearly distinguishing it from broader tools like getConnection or listConnections. It also clarifies that it returns which credential fields are set, not necessarily all connection details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case evident: retrieve which credential header keys are configured without exposing sensitive values. This implies when to use it (need to check configuration) and when not (need actual secret values), but it does not explicitly name alternative tools or state 'use when...' exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCredentialGet credential by idARead-onlyIdempotentInspect
Get a login by id. Returns the encrypted password/otp_secret blobs — only the owner or team members can access it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| userId | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly, idempotent, and non-destructive, lowering the bar. The description adds useful context by disclosing the return type (encrypted password/otp_secret blobs) and access restrictions (owner/team members), which are not present in 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 sentence of 22 words, front-loaded with the primary action, and includes essential details without waste. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with good annotations, the description is largely complete. It covers what is returned and access constraints, though it omits details like error scenarios or the exact nesting/format of blobs. The absence of an output schema increases the importance of the return-type note, which 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 only 33% (only team_id has a description). The description does not explain the required 'id' or 'userId' parameters, relying on the title's 'by id' to infer meaning. It fails to compensate for the low 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 tool's verb and resource: 'Get a login by id.' It further specifies what it returns ('encrypted password/otp_secret blobs') and adds an access-control qualifier, distinguishing it from related tools like getSecret and listCredentials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives such as getSecret or listCredentials. It only implies usage for fetching a single credential by id. The access-control note ('only the owner or team members') is a limitation, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getEvalRubricsGet Eval RubricsARead-onlyIdempotentInspect
List the evaluation rubrics a Run is scored against: the platform default rubrics plus the Agent-specific rubrics for a build. Defaults to the Agent's live build; pass build_id to target the revision a specific Run ran against.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent's unique identifier (Assignment ID) | |
| build_id | No | Return rubrics for this specific build (the revision a Run ran against). Defaults to the agent's live build when omitted. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds meaningful behavior beyond annotations by specifying that the result includes platform default plus Agent-specific rubrics and by explaining the build defaulting logic.
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 compact sentences: the first states exactly what the tool lists, and the second explains the default and override behavior. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter, read-only listing tool with complete schema descriptions and clear annotations, the description fully covers purpose, output contents, and default/override behavior. The 'List' verb adequately implies the return shape even without an output schema.
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 has 100% coverage with detailed descriptions for both parameters, including UUID format and build_id's default behavior. The description reinforces the meaning of build_id ('Defaults to the Agent's live build; pass build_id to target the revision a specific Run ran against'), adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the exact resource: 'the evaluation rubrics a Run is scored against.' It also clarifies composition ('platform default rubrics plus the Agent-specific rubrics for a build') and the default/override behavior, distinguishing it from related tools like getEvalScores or getRunEvaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it defaults to the Agent's live build and explains how to pass build_id to target a specific Run's revision. It does not explicitly name alternative sibling tools, but the guidance is sufficient for a read-only retrieval operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getEvalScoresGet Eval ScoresARead-onlyIdempotentInspect
Aggregate evaluation counts and flag distribution for an Assignment's Jobs since the given timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | When 'custom', only counts Jobs scored against the target revision's custom rubrics, and only `custom__*` rubric flags. Defaults to 'all' (platform + custom rubrics). | |
| since | Yes | ISO 8601 timestamp; only Jobs evaluated after this are counted | |
| agentId | Yes | The agent's unique identifier (Assignment ID) | |
| revision_id | No | Target a specific Assignment revision instead of the live revision. Only honoured when scope='custom' — non-custom scopes aggregate across all revisions. Defaults to the live revision when omitted. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which covers the safety profile. The description adds useful context about temporal filtering and aggregation, but it does not disclose the return structure, potential pagination, or behavior when no jobs match the timestamp. This is adequate but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that names the action, object, and scope without redundant wording. 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?
Given the tool has no output schema, the description should explain what the returned 'evaluation counts and flag distribution' looks like. It names these concepts but does not clarify their structure, the meaning of 'Jobs,' or edge cases like empty results. Rich parameter documentation partially compensates, but gaps remain.
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 100% parameter coverage with clear descriptions for all four parameters, including enum values and formats. The description only restates the 'since' temporal aspect and 'Assignment' (agentId), adding no new semantic meaning beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'aggregate' and identifies the exact resource ('evaluation counts and flag distribution for an Assignment's Jobs') plus a temporal filter ('since the given timestamp'). This clearly distinguishes it from sibling tools like getRunEvaluation or getEvalRubrics, which focus on individual runs or rubric definitions.
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 does not mention exclusions, prerequisites, or relationships to other eval-related tools, leaving the agent to infer usage purely from the tool name and resource description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getFileContentGet File ContentBRead-onlyIdempotentInspect
Get the content of a text file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the file relative to the team's storage root | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'text file' constraint (implying non-binary files only), but doesn't disclose behavior for non-text files, error cases, or size limits. With annotations, the added value is limited but acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is as concise as possible while stating the action and the object, making it highly scannable for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with two well-documented parameters, annotations, and no output schema, the description is nearly sufficient. It clearly indicates file content retrieval but could be more complete by noting that files must be text and possibly mentioning return format. Annotations and schema cover safety and parameters, so this is above the minimum viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the 'path' parameter is described as relative to the team's storage root, and 'team_id' is thoroughly documented. The description adds no parameter-level meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the content of a text file' uses a clear verb (Get) and specific resource (content of a text file), conveying the tool's scope. It is distinguishable from sibling file tools like getFileDownloadUrl and getSkillFileContent, though it doesn't explicitly name alternatives or clarify it targets team storage files.
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 offers no guidance on when to use this tool versus alternatives such as getFileDownloadUrl or getSkillFileContent. No context, exclusions, or prerequisites are provided, leaving the agent to infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getFileDownloadUrlGet File Download UrlARead-onlyIdempotentInspect
Generate a signed download URL for a file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the file relative to the team's storage root | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=true and idempotentHint=true, the description adds the key behavioral detail that the URL is 'signed', implying temporary authenticated access. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single clear sentence with no filler. Every word contributes to meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with well-documented parameters and supportive annotations, the description is largely sufficient. It could optionally mention the return type or expiration behavior, but these are reasonably inferred from 'signed download URL'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both path and team_id have detailed descriptions. The tool description adds no extra parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Generate a signed download URL for a file' uses a specific verb ('Generate') and resource ('signed download URL'), clearly distinguishing it from file-related siblings like getFileContent (retrieves content) and createFileUploadUrl (creates upload URL). The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context implies use for downloading a file via a signed link, but there is no explicit guidance on when to choose this over getFileContent or other file access tools. 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.
getLegacyClarityProcessGet Legacy Clarity ProcessARead-onlyIdempotentInspect
Get a legacy v1 Clarity process with process metadata, generated analysis, transformation guidance, generation progress, and captures. Use this for rows from listClarityProcesses where version=1; v2 rows should use getClarityProcess and snapshot detail tools.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful context about the return payload (metadata, analysis, guidance, progress, captures) beyond the annotations, plus the legacy version distinction. This gives the agent a richer picture of behavior, though it doesn't cover error handling or auth details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no filler. The first sentence states the action and content; the second gives precise usage differentiation. Every word earns its place, and the critical version-related guidance 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?
Given the tool has one parameter, no output schema, and strong annotations, the description covers the essential context: what is returned, when to use it, and how it differs from alternatives. No additional details are necessary for effective selection and 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 lists a single 'id' parameter with uuid format but provides 0% description coverage. The description compensates by linking 'id' to rows from listClarityProcesses with version=1, telling the agent which id to supply. Since the parameter is a simple uuid and the context is clear, this is adequate without redundant detail.
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 'Get a legacy v1 Clarity process' and enumerates the included components (process metadata, generated analysis, transformation guidance, generation progress, and captures). It explicitly distinguishes this from the sibling getClarityProcess by specifying the legacy/v1 scope, making its 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 provides explicit when-to-use guidance: 'Use this for rows from listClarityProcesses where version=1'. It also names the alternative for v2 rows: 'v2 rows should use getClarityProcess and snapshot detail tools.' This clearly orients the agent relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNotificationGet NotificationARead-onlyIdempotentInspect
Get a single notification by id for the authenticated user. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The notification's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond this: authentication scope and the 404 conditional on feature availability, which is meaningful behavioral disclosure for a simple 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?
Single sentence, front-loaded with the verb and resource, and every clause adds essential context. No wasted words or repetition.
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-by-id tool with no output schema, the description covers purpose, auth scope, feature prerequisite, and error behavior. This is complete for the tool's complexity and sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter 'id' with full coverage (100%). The description adds no additional parameter detail beyond repeating 'by id', so it receives the baseline score for schema-covered 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?
Description uses a specific verb ('Get') and resource ('a single notification by id'), clearly distinguishing it from sibling tools that fetch batches, counts, or feeds. The scope ('for the authenticated user') adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context by requiring the Notification Center feature and specifying a 404 response when disabled. However, it does not explicitly contrast with alternatives like listNotifications or getNotificationBatch, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNotificationBatchGet Notification BatchARead-onlyIdempotentInspect
Get a single notification batch by id for the authenticated user, with per-type live-member counts, unread count, and worst severity. Serves cold deep links and sidebar retention for batches the caller can no longer see in the feed. Counts every live member by default; the optional type/severity/minSeverity filters narrow them to matching members only, exactly as the feed narrows a batch row it returns under the same filters. Requires the Notification Center feature; returns 404 when it is not enabled for the team, the batch does not exist, it belongs to another recipient/team, or no live member matches the given filters.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The notification batch's unique identifier | |
| type | No | Count only live members of this type. Omit to count every live member. | |
| agents | No | When 'mine', 404 unless the batch's agent is one the authenticated user created. Pass it alongside the feed's My agents filter so a retained batch cannot come back narrowed on type and severity but not on ownership. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| severity | No | Count only live members with exactly this severity. Mutually exclusive with minSeverity. One of: info, warning, critical, success. | |
| minSeverity | No | Count only live members at or above this urgency. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is already covered. The description adds genuinely valuable context beyond those: the default 'count every live member' behavior, how filters narrow counts, the exact 404 conditions (feature disabled, missing batch, wrong recipient/team, no matching live member), and the team_id auth nuances (API-key pinning vs OAuth multi-team). This is real behavioral disclosure, not a restatement of the annotations. No contradiction present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and return shape, and every sentence contributes new information. It is on the longer side (roughly 90 words) and the filter-narrowing point is made twice near the end, so it is dense but slightly redundant. Strong structure, marginally over-worded.
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 correctly carries the burden of explaining the return shape (per-type live-member counts, unread count, worst severity). It covers prerequisites, auth contexts, 404 semantics, and the effect of every filter. All six parameters are documented in the schema at 100% coverage. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaning beyond the schema by tying the type/severity/minSeverity filters to the feed's narrowing behavior ('exactly as the feed narrows a batch row') and clarifying that filters affect only the counts, not which batch is returned. This raises it above baseline, though the bulk of parameter detail legitimately lives 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?
The description names a specific verb ('Get'), resource ('notification batch by id'), scope ('for the authenticated user'), and the concrete fields returned (per-type live-member counts, unread count, worst severity). It names its niche use cases (cold deep links, sidebar retention) and distinguishes itself from feed-returned batches, so an agent can tell it apart from siblings like getNotificationFeed, getNotification, and listNotifications 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?
The description gives clear context for when to use it — for batches the caller can no longer see in the feed — and states the prerequisite (Notification Center feature) plus the full set of 404 conditions. It implicitly marks the feed as the alternative path but does not name a specific sibling tool or an explicit when-not-to-use instruction, so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNotificationCountsGet Notification CountsARead-onlyIdempotentInspect
Per-type notification counts for the authenticated user's current team. Narrow with unread, and with either severity (counts only that exact severity) or minSeverity (counts that urgency and above) — the two are mutually exclusive and a request carrying both is rejected with 400. Pass the same filters the feed is showing, so the counts describe the list the reader would land on. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| agents | No | When 'mine', only count notifications for agents the authenticated user created (plus connection_broken, which is always counted), so the counts match a feed filtered the same way. | |
| unread | No | If true, only count unread notifications. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| severity | No | Only count notifications with exactly this severity, so the counts match a feed filtered the same way. Mutually exclusive with minSeverity. | |
| minSeverity | No | Only count notifications at or above this urgency, so the counts match a feed filtered the same way. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only and idempotent. The description adds valuable behavioral context: mutual exclusivity of severity and minSeverity, 400 rejection for both, 404 when Notification Center is disabled, and the requirement to match feed filters. This goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose first, then filter behavior, then feature requirement. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, no output schema, and read-only annotations. The description explains the core behavior, error cases, and filter alignment. It doesn't clarify what 'type' means (e.g., severity levels vs notification categories), but the schema and context make it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have rich descriptions in the schema (100% coverage), so the baseline is 3. The description reinforces the mutual exclusivity but adds minimal new parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns per-type notification counts for the authenticated user's current team, using a specific verb and resource. It distinguishes from sibling notification tools by focusing on counts, not feed items or individual notifications.
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 when to use the tool and how to align filters with the feed, including the mutually exclusive severity/minSeverity options. It doesn't explicitly name alternatives like getUnreadNotificationCount, but the context is clear enough for an agent to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNotificationFeedGet Notification FeedARead-onlyIdempotentInspect
List the notification feed for the authenticated user's current team, most recent activity first. Each item is either an individual notification or a notification batch (a per-agent group of job_issue/eval_issue/job_done/schedule_issue notifications). Filter with type, unread, and either severity (exact match) or minSeverity (threshold; the two are mutually exclusive); paginate with limit/cursor. Either severity filter also narrows a surfaced batch's counts to its qualifying members, and hides a batch with no qualifying live member. The feed is eventually consistent — a batch's counts can lag a concurrent write by one page fetch. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Only return individual notifications of this type and batches with at least one live member of it. | |
| limit | No | ||
| agents | No | When 'mine', only return notifications for agents the authenticated user created. connection_broken notifications are always returned regardless, because they are not about an agent: a broken connection is only notified to the people who can act on it or escalate it, so filtering by agent authorship would hide it from the reader it was addressed to. | |
| cursor | No | ||
| unread | No | If true, only return unread individual notifications and batches with at least one unread live member. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| severity | No | Only return individual notifications with exactly this severity, and batches with at least one live member of it. A batch's counts then describe only those members. Mutually exclusive with minSeverity. One of: info, warning, critical, success. | |
| minSeverity | No | Only return individual notifications at or above this urgency, and batches with at least one live member at or above it. A batch's counts and worst severity then describe only its members at or above the threshold. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, which the description does not contradict - it describes a list operation. Beyond that, the description exposes genuinely valuable non-obvious behavior: the batch semantics (per-agent grouping, counts narrowing, hiding batches with no qualifying live member) and eventual consistency lag. It also states the 404-when-feature-not-enabled case. This is strong disclosure that goes beyond the annotation surface, though it does not detail the exact return shape (no output schema exists, so shapes remain unstated).
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 economical and information-dense without padding. It front-loads the core purpose in the first sentence, then packs the filtering and batch behavior into a few sentences. No wasted clauses; each sentence adds a distinct fact (purpose, filtering modes, batch count narrowing, eventual consistency, feature requirement/404).
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, idempotent list operation with no output schema and complex filtering behavior (8 parameters, enums on 4, mutual exclusion, batching), the description covers what an agent needs: what is listed, ordering, filter semantics, batch narrowing, pagination, eventual consistency, and the 404 edge case. The return format remains unspecified, but absent an output schema that is a gap; however given the strong parameter-level detail in the schema (75% coverage) and the description's own coverage, the tool is effectively fully 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?
Schema description coverage is 75%, so the schema documents fields like type, unread, severity, minSeverity, agents, and team_id fairly well. The description still adds important cross-parameter semantics: the mutual exclusivity of severity and minSeverity, the meaning of minSeverity ordering (success < info < warning < critical, which also appears in the schema property description but is reinforced), and the order of results ('most recent activity first'). The description also clarifies the interplay between filters and batch counts, which the schema property text covers for some parameters but the description ties together. A 4 rather than 5 because team_id and cursor semantics are best explained in the schema and the description does not add much beyond what is there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('notification feed for the authenticated user's current team'), specifies order ('most recent activity first'), and explains item types. It is distinct from siblings like listNotifications and getNotificationCounts, and the opening sentence alone lets an agent understand what it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit filtering semantics (type, unread, severity vs minSeverity mutual exclusion, pagination with limit/cursor) and the eventual-consistency caveat. It does not name sibling tools like listNotifications or getNotification as alternatives, but the filtering guidance is clear enough that an agent knows when to use it; a small deduction for not mentioning 'use getNotification for a single notification' or 'use getNotificationCounts for counts only.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOrgInsightsHeadlineGet Org Insights HeadlineARead-onlyIdempotentInspect
Get org-wide headline insight KPIs (run totals, success rate, distinct active agents and users) aggregated across every team in the organization. Requires an organization Admin, Executive, or Owner role.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | The organization's unique identifier | |
| endDate | No | End of the aggregation window (ISO 8601 datetime, exclusive). Defaults to now; clamped to now. | |
| startDate | No | Start of the aggregation window (ISO 8601 datetime). Defaults to 30 days ago; clamped to at most 365 days ago. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds role requirements beyond the annotations and clarifies the aggregation scope, which is valuable context. It does not contradict the readOnlyHint or idempotentHint annotations. However, it doesn't describe return format or pagination, which is acceptable given the annotations already cover safety profiles.
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 action and resource, and contains no redundant or extraneous information. It efficiently communicates scope and role requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides purpose, scope, role requirement, and lists the specific KPIs returned, which helps an agent understand the value without an output schema. Given the simple read-only nature, good schema coverage, and annotations, the description is sufficiently complete, though it could briefly mention the sibling tools for disambiguation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have schema descriptions (100% coverage), so the description does not need to compensate. The tool description does not add parameter-specific details beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's function: retrieving org-wide headline KPIs (run totals, success rate, distinct active agents and users) aggregated across every team. It uses a specific verb and resource, and the listed KPIs distinguish it from other insight tools, though it doesn't explicitly name sibling alternatives.
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 use when org-wide headline KPIs are needed and provides a role prerequisite (Admin, Executive, or Owner). However, it doesn't explicitly contrast with sibling tools like getOrgInsightsMetrics or getOrgInsightsUsageChart, nor does it state when not to use it. The role requirement is useful guidance, but decision-making context is limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOrgInsightsMetricsGet Org Insights MetricsARead-onlyIdempotentInspect
Get org-level insights metrics (runs, assignments, schedules) broken down per team across the organization. Requires an organization Admin, Executive, or Owner role.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | The organization's unique identifier | |
| endDate | No | End of the aggregation window (ISO 8601 datetime). Defaults to now; clamped to now. | |
| startDate | No | Start of the aggregation window (ISO 8601 datetime). Defaults to 7 days ago; clamped to at most 365 days ago. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. Description adds the authorization requirement (role) and scoping behavior (per team, metric types), which are useful context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose and immediately followed by the role requirement. No redundant phrasing.
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, description still conveys the nature of the returned data (metrics per team, in categories). It covers role restrictions and scope. The date-range defaults are in the schema. Adequate for a structured read-only 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?
All three parameters are fully described in the schema (100% coverage). The description mentions metric types but doesn't add parameter-specific syntax or format details beyond what the schema provides, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' with resource 'org-level insights metrics', identifies metric types (runs, assignments, schedules) and the per-team breakdown. This clearly distinguishes it from siblings like getOrgInsightsHeadline or getOrgInsightsUsageChart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states required roles (Admin, Executive, Owner) and the org-wide per-team scope, giving clear context for when this aggregation is appropriate. Does not reference sibling tools explicitly, but the scope is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOrgInsightsUsageChartGet Org Insights Usage ChartARead-onlyIdempotentInspect
Get org-level run-volume buckets (scheduled vs on-demand) at day/week/month granularity across the organization. Requires an organization Admin, Executive, or Owner role.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | The organization's unique identifier | |
| endDate | Yes | End of the chart window (ISO 8601 datetime). Clamped to now. | |
| timezone | No | IANA timezone for bucket boundaries (e.g. America/New_York). Defaults to UTC. | |
| startDate | Yes | Start of the chart window (ISO 8601 datetime). Clamped to at most 365 days ago. | |
| granularity | Yes | Bucket size: day, week, or month |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable context beyond annotations: the required organization role (Admin/Executive/Owner) and the output concept (scheduled vs on-demand buckets). No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two tightly packed sentences: one for the core function and one for role requirements. No wasted words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only chart retrieval tool with rich annotations and schema, the description covers purpose, scope, output concept, and authorization. There is no output schema, but the return shape (run-volume buckets by granularity) is inferable. The main gap is lack of explicit mention of response structure, but it's not a critical omission given the annotations.
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 schema already explains each parameter thoroughly (ISO format, clamping, timezone default, granularity enum). The description does not add new parameter-level semantics beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource+scope: 'Get org-level run-volume buckets (scheduled vs on-demand) at day/week/month granularity across the organization.' This clearly distinguishes it from sibling tools like getOrgInsightsHeadline and getOrgInsightsMetrics by naming the exact data returned (run-volume buckets) and the granularity options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (when org-level run-volume bucket data is needed) and adds a role requirement, implying it's not for non-admin users. It does not explicitly mention alternatives or state when not to use it, but the scope is unambiguous enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProfileGet ProfileARead-onlyIdempotentInspect
Get the profile of the authenticated user (the owner of the API key).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, establishing the safety profile. The description adds useful context that the profile belongs to the API key owner, which resolves ambiguity about whose data is accessed. No contradictions are present, and the added value beyond annotations is modest but meaningful.
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, clear sentence that is front-loaded with the verb and resource. Every word contributes meaning, with no redundant or vague phrasing.
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, read-only tool with strong annotations, the description provides adequate context. It clarifies the user scope (owner of API key) but does not describe what fields the profile returns. Given the tool's simplicity and the presence of annotations, this is not 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?
The tool accepts zero parameters, so the schema is empty. The description correctly focuses on the resource rather than parameters. The baseline of 4 applies because there are no parameter semantics to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the specific resource (profile of the authenticated user), explicitly identifying the scope as the owner of the API key. This distinguishes it from other get* tools in the sibling list, 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 usage for retrieving the authenticated user's own profile but provides no explicit when-to-use guidance or comparisons with alternatives. For such a simple, unique tool, the implied context is adequate, but explicit alternative differentiation is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPulseDashboardGet Pulse DashboardARead-onlyIdempotentInspect
Get a Duvo Pulse dashboard's metadata and generation status. When status is completed and html_code_present is true, fetch the rendered HTML from GET /artifacts/{artifactId}/render; the conversation is served by GET /artifacts/{artifactId}/messages.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context by mentioning the condition-dependent downstream actions (fetching render/messages endpoints based on status and html_code_present), which is valuable beyond the annotations. There is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary purpose front-loaded and the conditional follow-up in the second sentence. Every word contributes value, with no redundancy 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 simple getter with one parameter, the description covers the key purpose, status fields (status and html_code_present), and conditional next steps. Since there is no output schema, it does not detail the full response structure, but the essential behavior is well described. Sibling context further clarifies its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single parameter artifactId with a UUID format but no description, so schema_description_coverage is 0%. The description does not explicitly define or explain artifactId; it only appears indirectly in the endpoint path. This is insufficient compensation for the lack of parameter documentation.
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 gets a Duvo Pulse dashboard's metadata and generation status, using a specific verb and resource. This distinguishes it from sibling tools like getPulseDashboardHtml (rendered HTML), getPulseDashboardPdf, and listPulseDashboards (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 guidance on when to use this tool and what to do based on the result: when status is completed and html_code_present is true, fetch the rendered HTML from a specific endpoint. It does not explicitly mention alternatives or exclusions relative to sibling MCP tools, but the conditional context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPulseDashboardAttachmentDownloadUrlGet Pulse Dashboard Attachment Download UrlARead-onlyIdempotentInspect
Mint a short-lived presigned URL to download or preview a file attached to a Duvo Pulse dashboard message. Returns 404 once the dashboard's sandbox has expired and the file is gone (about 12 hours).
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| attachmentId | Yes | The attachment to mint a download URL for |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, idempotent, and non-destructive hints. The description adds meaningful behavioral context beyond annotations: the URL is short-lived, and it returns 404 after the sandbox expires (~12 hours). This discloses failure behavior and time limits, which is valuable for an 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 consists of two sentences, front-loaded with the primary purpose and followed by a single behavioral note. Every sentence adds value with no repetition of schema or annotation details. It is appropriately 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?
For a simple read-only URL-minting tool with good annotations, the description covers the essential behavior: what it does, the return type (URL), and a key error condition (404 after expiry). It does not clarify the meaning of artifactId, but this is a minor gap given the tool's simplicity. Overall it is sufficiently complete for an agent to select and 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?
The schema documentation covers only attachmentId (50% of parameters); artifactId lacks a description in both schema and tool description. The description's phrase 'attached to a Duvo Pulse dashboard message' hints that artifactId may refer to the dashboard/message, but it does not explicitly define it. This leaves a gap in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Mint a short-lived presigned URL to download or preview a file attached to a Duvo Pulse dashboard message.' It uses a specific verb ('mint'), identifies the resource (short-lived presigned URL), and differentiates from siblings like getFileDownloadUrl and createPulseDashboardAttachmentUploadUrl by scoping to Pulse dashboard message attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when needing to download or preview a Pulse dashboard message attachment) but does not explicitly mention alternatives or exclusions. The 'short-lived' and 'attached to a Duvo Pulse dashboard message' context provides clear usage context, though it stops short of comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPulseDashboardHtmlGet Pulse Dashboard HtmlARead-onlyIdempotentInspect
Serve a Duvo Pulse dashboard's rendered HTML document (text/html, not JSON). 404 until the first generation turn has produced HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly and non-destructive, so the description adds the crucial nuance that the document is only available after the first generation turn and otherwise returns 404. It also discloses the MIME type (text/html), which is not covered by annotations. This is valuable behavioral detail beyond the structured 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?
Two short sentences with the key facts front-loaded: what is served, the format, and when it becomes available. There is no filler or repetition, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter GET-like tool, the description covers purpose, output format, and availability condition. It does not describe the success response body beyond being HTML, but no output schema exists and the agent can infer the content. The missing definition of artifactId is the main gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not explain the artifactId parameter or how to obtain it. The tool name and description imply artifactId refers to the dashboard, but this is inference rather than explicit guidance. With only one required parameter, the absence of parameter semantics is a noticeable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly uses 'Serve' as the verb and specifies the exact resource: a Duvo Pulse dashboard's rendered HTML document. It distinguishes from siblings by explicitly noting 'text/html, not JSON' and the 404-until-generated behavior. This makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it serves HTML and not JSON, which implies it should be used when the agent needs the rendered HTML rather than dashboard data. It does not explicitly name alternatives like getPulseDashboard or exportPulseDashboardHtml, but the content-type distinction provides clear context. Lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPulseDashboardPdfGet Pulse Dashboard PdfARead-onlyIdempotentInspect
Render a Duvo Pulse dashboard to a PDF document (application/pdf, not JSON). 404 until the first generation turn has produced HTML; 409 for an openui dashboard, whose substrate this exporter cannot render.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | light | |
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context: the output is a PDF (not JSON), and errors 404/409 occur under specific conditions. This goes beyond what annotations provide, though it does not cover auth needs 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?
Two sentences, each earning its place: the first states the core purpose and output format; the second adds critical error-case details. No filler, no repetition. The description is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a required UUID parameter and an optional enum, the description lacks parameter explanations. It covers output type and two error conditions but omits prerequisites (e.g., dashboard existence) and does not compensate for the missing schema descriptions. The agent would need to infer or guess the meaning of 'artifactId'.
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 'artifactId' (the dashboard ID) or 'theme' (light/dark) at all. The description adds no meaning beyond the raw schema fields, leaving the agent without guidance on parameter purpose or usage.
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 renders a Duvo Pulse dashboard to a PDF document with MIME type application/pdf, distinguishing it from JSON outputs. It also specifies HTTP status codes (404, 409) that clarify state-dependent behavior, adding specificity beyond a generic verb-resource pair.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when a PDF is needed) and includes error conditions (404 before HTML exists, 409 for openui dashboards), but it does not explicitly compare with sibling tools like getPulseDashboardHtml or exportPulseDashboardHtml. Usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPulseDashboardVersionHtmlGet Pulse Dashboard Version HtmlARead-onlyIdempotentInspect
Serve a specific version's rendered HTML document for a Duvo Pulse dashboard (text/html, requires edit access).
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| revisionId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable context beyond annotations: the output format ('text/html') and the access requirement ('requires edit access'), which help the agent anticipate invocation results. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb 'Serve', and includes all essential information (resource, version scoping, output type, access requirement) without any 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 simple read-only tool with two parameters, no output schema, and good annotations, the description covers the key aspects: what is returned (rendered HTML), the version scoping, and the access requirement. It could potentially describe return behavior in more detail, but 'Serve' and 'text/html' sufficiently convey the output. Overall, the description is complete enough for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter description coverage, requiring the description to compensate. The description mentions 'a specific version' which implies revisionId identifies the version, and 'Duvo Pulse dashboard' maps to artifactId, but it does not explicitly define either parameter. The parameter names are somewhat self-explanatory in context, but the description could be clearer about the exact roles of artifactId and revisionId.
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 ('serve') and resource ('a specific version's rendered HTML document for a Duvo Pulse dashboard'), and distinguishes from siblings by emphasizing 'specific version' and MIME type 'text/html'. It effectively conveys the tool's unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this is for a specific version of a Pulse Dashboard, implying it should be used when a particular revision's HTML is needed. It notes 'requires edit access' as a prerequisite, but does not explicitly state alternatives or when not to use it (e.g., use getPulseDashboardHtml for the current version).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getQueueGet QueueARead-onlyIdempotentInspect
Get a queue by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond what is inferred from the name. It does not contradict annotations, but also does not enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no superfluous content. It conveys the essential action and target resource efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and no output schema, the description is adequate. It could potentially mention return behavior (e.g., not found handling) but given the low complexity and existing annotations, it is mostly 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 100% and the parameter queue_id already has a description in the schema. The description's mention of 'by ID' adds minimal semantic value beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a queue by ID' clearly states the specific verb and resource, distinguishing it from siblings like createQueue, deleteQueue, updateQueue, and listQueues. It unambiguously identifies the tool's function.
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 explicit. The description indicates you need a queue ID, but does not explicitly state when to use this over listQueues or mention any alternatives. The context is clear enough but lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRevisionGet RevisionCRead-onlyIdempotentInspect
Get a revision by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier | |
| build_id | Yes | The build's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds no extra behavioral context. It doesn't mention what happens on missing revisions, whether the pair of IDs must be consistent, or any other runtime behavior beyond the plain 'get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded, and easy to parse. However, the phrase 'by ID' is somewhat redundant with the tool name and could be replaced with more useful context, though it remains appropriately 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?
For a simple read tool with good annotations and full schema coverage, the description is minimally adequate but leaves several gaps. It doesn't explain what a revision is, how the two IDs relate, or what the return value looks like. Since there is no output schema, a bit more description about the returned object would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both agent_id and build_id, so the schema carries the parameter meaning. The description's 'by ID' adds no additional semantic information beyond the schema fields.
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 'Get a revision by ID' uses a clear verb+resource pattern, but it doesn't specify which of the two IDs (agent_id or build_id) is meant, and it doesn't distinguish this from sibling revision getters like getSkillRevision. It is clear but lacks 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?
No guidance is provided about when to use this tool versus alternatives. There is no mention of related tools such as listAgentRevisions or getRevisionCaseQueueSetup, and no context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRevisionCaseQueueSetupGet Revision Case Queue SetupARead-onlyIdempotentInspect
Check that this build's case-queue integration slots are wired up correctly. Returns, per case-queue-producer/consumer slot, how many queues are linked, plus whether any queue is available to bind (scoped to the agent's automation on a migrated team, team-wide otherwise). A slot with linked_queue_count of 0 is attached but points at no queue and will fail at runtime — link a queue with replaceRevisionIntegrationQueues before starting work.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description meaningfully adds behavioral context: the return is per slot, includes linked_queue_count and bind availability, and scoping depends on whether the team is migrated. It also discloses the practical consequence of a zero-count slot, which helps agents act on the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and focused, with no filler. It front-loads the core purpose, then provides the key business rule and actionable follow-up in clear, structured prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only nature, two UUID parameters, and annotations covering safety, the description is complete enough to invoke correctly. It communicates the expected return shape, important edge-case behavior, and the associated remediation step—more than sufficient for an agent to select and act on this 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?
Input schema coverage is 100% with descriptive names and uuid formats for agent_id and build_id, so the structured schema already documents the parameters. The description does not add parameter-specific meaning beyond implying that the setup is scoped to a build and related automation, which is appropriate but not a major improvement over 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 states a specific action ('Check that this build's case-queue integration slots are wired up correctly') and clearly defines the resource: per-slot case-queue integration wiring for a build. It distinguishes itself from related tools like listRevisionIntegrationQueues by focusing on setup correctness and linked/available queue summaries, and it even references replaceRevisionIntegrationQueues as the fixer counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use it to verify case-queue integration wiring before starting work. It also explicitly identifies when follow-up is needed ('A slot with linked_queue_count of 0 ... will fail at runtime') and names the corrective tool (replaceRevisionIntegrationQueues), which provides a concrete routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRunGet RunARead-onlyIdempotentInspect
Get information about an agent run. Can be polled to check status.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | The run's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the practical behavioral trait that this is pollable, reinforcing idempotency and clarifying its use in status-checking workflows. It doesn't contradict annotations and adds a small but useful nudge beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is just two short sentences, front-loaded with the core action and then a practical usage hint. Every word earns its place; there is no filler, repetition of the title, or redundant schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple read-only get-by-ID tool with rich annotations and a self-contained schema. The description explains what the tool does and explicitly notes polling use, which is enough for an agent to invoke it correctly. It could specify which fields of 'information' are returned, but for a straightforward fetch operation this is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter run_id is fully described with type, format, UUID pattern, and description 'The run's unique identifier'. The description adds no additional meaning about parameters, so the baseline of 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('information about an agent run'), and adds that it can be polled to check status. This clearly distinguishes it from sibling tools like listRuns (which lists runs) and getRunEvaluation (which gets evaluation details).
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 'Can be polled to check status' gives clear context for when to use this tool: when you need to retrieve information about a single run, likely by repeatedly calling it during polling. It doesn't explicitly name alternatives or exclusions, but the context is unambiguous enough for an agent to choose it over listRuns or stopRun.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRunEvaluationGet Run EvaluationBRead-onlyIdempotentInspect
Get the latest evaluation analysis for a specific agent run (Run).
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | The run's unique identifier (Run ID) | |
| agentId | Yes | The agent's unique identifier (Agent ID) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the 'latest' scoping nuance but does not describe return format, pagination, or what 'evaluation analysis' contains, which is significant given no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple read operation with good annotations and full parameter documentation, but the description lacks details about the return value (evaluation analysis) and what 'latest' means operationally. With no output schema, this leaves a meaningful gap in agent understanding.
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 fully documents both required parameters (agentId, runId). The description adds no additional parameter semantics beyond what is already in the schema, matching the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('evaluation analysis for a specific agent run'). It includes a scope qualifier ('latest') but does not explicitly distinguish itself from closely related sibling tools like getEvalScores or getRun.
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. There is no mention of exclusions or specific contexts, leaving the agent 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.
getSecretGet SecretARead-onlyIdempotentInspect
Get an env-var secret by id. Returns metadata and env var keys; secret values are never exposed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds important context: it returns metadata and env var keys, and explicitly states secret values are never exposed. This goes beyond the annotations to clarify safety and return 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 two sentences with no redundant words. The first sentence front-loads the core purpose, and the second adds a crucial safety note. Very efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and existing annotations, the description covers the essential purpose and return value semantics. It lacks details about metadata structure or error conditions, but for a targeted get-by-id operation it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description only mentions 'by id'. While this clarifies the purpose of the id parameter, it adds little beyond the schema's UUID format. Since there is only one self-descriptive parameter, the lack of detail is acceptable but not compensating.
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 'env-var secret', scoped by 'id'. This distinguishes it from sibling tools like listSecrets or updateSecret, as it specifies retrieval of a single secret.
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 'by id' implies this tool is used when you have a secret ID, but there is no explicit guidance on when to use this versus alternatives like listSecrets, nor any exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSkillFileContentGet Skill File ContentARead-onlyIdempotentInspect
Get the content of a file in a skill.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Relative path to the file inside the skill, e.g. SKILL.md. | |
| skill_id | Yes | Skill ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, ensuring the agent knows this is a safe, non-destructive operation. The description adds no further behavioral context (e.g., format of content, size limits, path restrictions), but the safety profile is fully covered by annotations, so a neutral score is appropriate. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler words: 'Get the content of a file in a skill.' It is front-loaded and every word earns its place, achieving maximum clarity in minimal 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?
The tool is simple and both parameters are well-defined in the schema, with annotations covering the safety profile. The description sufficiently communicates the core operation. However, it does not explicitly clarify the return format (e.g., raw text vs. encoded) or handle edge cases like binary files, and without an output schema, these details are left unspecified. Still, given the simplicity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'path' and 'skill_id' fully documented (e.g., 'Relative path to the file inside the skill', 'Skill ID'). The description provides no additional parameter semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'Get the content of a file in a skill.' It uses a specific verb ('Get'), a clear resource ('content of a file'), and scope ('in a skill'), which distinguishes it from sibling tools like getFileContent or getSkillRevisionFileContent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need file content from a skill) but provides no explicit guidance on alternatives or exclusions. It does not mention that getSkillRevisionFileContent is for revision files or that getFileContent is the generic version, leaving the agent to infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSkillRevisionFileContentGet Skill Revision File ContentARead-onlyIdempotentInspect
Get the content of a text file in a skill revision.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Relative path to the file inside the revision, e.g. SKILL.md. | |
| skill_revision_id | Yes | Skill revision ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds a useful behavioral nuance: it only works for text files, implying binary files are not supported. This provides context beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded. It directly states the action and scope without 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?
For a simple read-only, two-parameter tool with no output schema, the description covers the essential purpose and the text-file restriction. It doesn't detail return format or error cases, but given the simplicity and annotations, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both parameters (path with example, skill_revision_id as UUID). The tool description does not add any additional semantic meaning beyond what the schema already provides, 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 the action: get the content of a text file within a skill revision. It specifies both the resource (text file) and the scope (skill revision), which differentiates it from sibling tools like getSkillFileContent (current file) and getFileContent (generic file).
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 guidance on when to use this tool versus alternatives. It does not mention related tools like listSkillRevisionFiles or getSkillFileContent, nor does it provide any exclusions or usage context beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTeamGet TeamARead-onlyIdempotentInspect
Get a team by ID. The caller must be scoped to the requested team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the scoping constraint ('caller must be scoped') but does not detail return format or error behavior. The schema supplements with auth context, but that is structured data, so the description itself provides only modest added insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action ('Get a team by ID') and followed by one key precondition. Zero filler 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 one-parameter read-only getter with strong annotations and a fully documented schema, the description covers the essential behavior. It lacks an explicit return description, but no output schema exists to mandate one; overall it is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the team_id parameter has a rich description explaining API-key pinning and OAuth multi-team behavior. The tool description itself adds no additional parameter semantics, so the baseline of 3 applies; 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 begins with 'Get a team by ID,' a specific verb and resource. It clearly distinguishes from sibling tools like listMyTeams and listOrgTeams by focusing on fetching a single team by ID, leaving no ambiguity about the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the caller must be scoped to the requested team, providing a clear precondition. The schema's team_id parameter description further explains API-key vs OAuth behavior, but the main description does not explicitly compare against alternatives. This is adequate context for a simple getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTeamInviteLinkGet Team Invite LinkARead-onlyIdempotentInspect
Get the team's shareable invite link — the one URL anyone can use to join the team, as opposed to a per-person invitation. Returns hasLink: false when no link has been created. Requires the Manager role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| frontendUrl | No | Deprecated and ignored. The link is built from the server's configured frontend URL so a caller can't choose the host in a Duvo-branded email. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail beyond the annotations, including the return value when no link exists ('Returns hasLink: false when no link has been created') and the authorization requirement ('Requires the Manager role or above'). Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint: false, so these additions are valuable 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 two sentences, front-loaded with the main purpose, and each sentence adds essential information (role requirement, return behavior). There is no fluff or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with no output schema, the description covers the essential behavioral aspects: what it returns, when no link exists, and required permissions. It does not mention the deprecated frontendUrl parameter, but that is already covered in the schema, so the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% and both parameters already have detailed descriptions. The tool description does not add any parameter-specific information, so it neither compensates nor degrades beyond the baseline of 3 for well-documented schemas.
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 'Get the team's shareable invite link' with a specific verb and resource, and explicitly contrasts it with per-person invitations ('as opposed to a per-person invitation'), which distinguishes it from sibling tools like createTeamInviteLink and sendTeamInviteEmail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by contrasting the shareable link with a per-person invitation and specifies the required role ('Requires the Manager role or above'), but it does not explicitly name alternative tools or state when not to use it. This is clear context without explicit exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getUnreadNotificationCountGet Unread Notification CountARead-onlyIdempotentInspect
Get the unread notification count for the authenticated user's current team. Each notification batch with unread members counts as 1, regardless of its member count. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds valuable behavioral context: the batch counting semantics and the 404 error when the feature is disabled. This goes beyond annotation 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?
Three sentences, each serving a distinct purpose: what it does, how counting works, and the error condition. Information is front-loaded and there is no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and strong annotations, the description covers the core behavior, the unusual counting rule, and the error case. No output schema exists, so return format is not required.
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 a detailed description of the optional team_id parameter, including fallback behavior and OAuth context (100% coverage). The tool description adds no additional parameter information, so the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the unread notification count for the authenticated user's current team, and includes a specific counting rule (each batch counts as 1). This distinguishes it from sibling tools like listNotifications or getNotificationCounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear precondition (Notification Center feature must be enabled) and the resulting 404 error. However, it does not explicitly contrast with alternative notification tools or state when to prefer this over getNotificationCounts, so usage guidance is implied but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initiateClarityPhoneInterviewInitiate Clarity Phone InterviewBInspect
Initiate a phone call interview for a clarity process via ElevenLabs
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| language | No | ||
| phoneNumber | Yes | ||
| extraCaptureRequestId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds the fact that the call is initiated 'via ElevenLabs', which is additional context about the service used. However, it doesn't disclose what happens after the call is initiated, whether the call is synchronous or asynchronous, what side effects occur (e.g., does it trigger a notification?), or what happens on failure. For a non-readonly action with no idempotency guarantee, more behavioral disclosure would be valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose. No wasted words, no redundancy with the title.
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 initiates an external phone call (likely with cost and side effects), the description is too sparse. It doesn't explain what happens after the call is initiated, how the interview is conducted, whether the caller needs specific permissions, or what the language parameter maps to (e.g., the language spoken in the call). There's no output schema and no return value documentation, leaving the agent to guess at the outcome.
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% (1 of 4 parameters documented in schema descriptions). The description adds no parameter-level detail beyond what the schema provides. The 'language' parameter has an enum but no description, 'extraCaptureRequestId' has no description, and 'phoneNumber' has only a regex pattern. The description does not clarify the format or purpose of 'extraCaptureRequestId' nor explain what 'id' refers to beyond the schema's 'The clarity process ID'.
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 ('Initiate a phone call interview for a clarity process via ElevenLabs'). The verb 'initiate' is distinct from other clarity-related tools like 'getClarityOrganizationInterview' or 'deleteClarityOrganizationInterview'. However, the description doesn't explicitly differentiate itself from other interview-related tools like 'inviteClarityMeetingNotetaker' or the various interview getters/deleters, and 'clarity process' is not further defined.
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 to start a phone interview within a clarity process, but it doesn't state when to use it versus alternatives. It doesn't mention that this is specifically for phone-based (ElevenLabs) interviews, nor does it reference any of the sibling tools (e.g., 'inviteClarityMeetingNotetaker') as alternatives. No exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inviteClarityMeetingNotetakerInvite Clarity Meeting NotetakerAInspect
Invite the in-meeting notetaker bot (Recall.ai) to a live meeting; the recording lands as a 'meeting' capture on the process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| meetingUrl | Yes | ||
| extraCaptureRequestId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false – so the agent knows it is a non-idempotent mutation. The description adds that the bot joins 'live' meetings, which implies real-time interaction and that the recording is stored as a 'meeting' capture, providing behavioral context beyond annotations. However, it does not specify if multiple invites are possible, or what happens if the meeting is already being recorded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that clearly conveys the tool's action and outcome. It is appropriately front-loaded with the action. Could arguably include a brief note on prerequisites or parameter format, but for the information provided, it is concise and without 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?
With 3 parameters, no output schema, and no enums, the description provides the core action and outcome but omits details like behavior on duplicate invites, timeout constraints, or error scenarios (e.g., invalid meeting URL). The presence of sibling tools like 'inviteClarityOrganizationNotetaker' suggests different scopes, but the description doesn't clarify scope of 'inviteClarityMeetingNotetaker' (individual meeting vs. organization-wide). Adequate but with noticeable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (33%); two required parameters (id, meetingUrl) are described in the schema but the description adds no additional semantic meaning to them. The optional 'extraCaptureRequestId' is undocumented in the description, so agents must rely solely on the schema. Baseline 3 since the description adds no extra parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Invite' targeting the 'in-meeting notetaker bot' to a 'live meeting', and clarifies the downstream effect ('the recording lands as a 'meeting' capture on the process'). This clearly distinguishes it from sibling tools like 'inviteClarityOrganizationNotetaker' or 'initiateClarityPhoneInterview', which serve different invitation contexts.
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 a user wants to record a live meeting via Recall.ai, but does not explicitly state when NOT to use it (e.g., meeting already has a notetaker, or if offline). No guidance on prerequisites (e.g., user must be in the meeting) or alternatives among the many sibling tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inviteClarityOrganizationNotetakerInvite Clarity Organization NotetakerCInspect
Invite the in-meeting notetaker bot (Recall.ai) to a live meeting; the recording lands as an organization Clarity interview
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| title | No | ||
| meetingUrl | Yes | ||
| extraCaptureRequestId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly (write), non-idempotent, non-destructive. The description adds context that the recording lands as an organization Clarity interview. However, it does not disclose side effects like potential duplicate invites, required bot pre-installation, or response behavior, leaving 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 a single sentence, concise but overly brief. It sacrifices necessary detail (parameter roles, usage context) for brevity, making it minimally acceptable but not well-structured for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters with zero schema description coverage and no output schema, the description is significantly incomplete. It omits parameter explanations, return value, error scenarios, and behavioral nuances, leaving the agent unable to correctly invoke the tool without guessing.
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% with four parameters (orgId, meetingUrl, title, extraCaptureRequestId). The description mentions 'to a live meeting' hinting at meetingUrl but provides no explanation for any parameter. It fails to add meaning beyond the schema, which is critical given the absence of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool invites a notetaker bot to a live meeting and the recording becomes an organization Clarity interview. The verb 'invite' and resource 'in-meeting notetaker bot' are specific. However, it does not explicitly differentiate from the sibling 'inviteClarityMeetingNotetaker' beyond the organization-level destination hint, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives. There is no mention of prerequisites (e.g., meeting must be live, user permissions), when not to use it, or how it differs from similar invite tools like 'inviteClarityMeetingNotetaker' or 'initiateClarityPhoneInterview'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inviteOrgMemberInvite Org MemberAInspect
Invite a person to an organization you administer, optionally assigning them to a team in that organization. Requires an organization Admin, Executive, or Owner role. You cannot grant a role higher than your own.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| Yes | |||
| orgId | Yes | Organization ID | |
| teamId | No | ||
| sendEmail | No | Email the invitation to the recipient. `false` always suppresses the email. When omitted, the legacy opt-in applies instead: the email is sent only if the deprecated `frontendUrl` is present. Omit both to create the invitation without notifying anyone. | |
| frontendUrl | No | Deprecated. Use `sendEmail` instead. Kept because its presence is the legacy opt-in for sending the invitation email; the value never sets the link host, which is always the server's configured frontend URL. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (not read-only, not destructive), the description discloses auth requirements (Admin/Executive/Owner) and an important limitation (cannot grant a role higher than own). This adds meaningful behavioral context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences deliver the purpose and key constraints with no redundancy. Every sentence adds value, and the description is 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?
The description covers the essential purpose, permissions, and limitation, and the schema fills in parameter details. It lacks explicit mention of the invitation workflow or return value, but those are not required given no output schema and the straightforward nature of 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?
With 50% schema coverage, the description compensates by explaining the optional team assignment (teamId) and the role constraints for 'role'. The remaining params (orgId, email) are self-explanatory by name, and schema covers sendEmail/frontendUrl 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 states the tool invites a person to an organization administered by the user, with optional team assignment, distinguishing it from bulk invite or team invite link tools. The verb 'invite' and resource 'person to organization' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about required roles and the constraint of not granting a higher role than the user, but it does not explicitly explain when to use this tool versus sibling tools like bulkCreateTeamInvites or createTeamInviteLink. Usage is implied by the purpose rather than explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listActiveClarityExportsList Active Clarity ExportsARead-onlyIdempotentInspect
List active (queued or running) Clarity export jobs for the current user
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, which cover safety. The description adds scope ('for the current user') but does not elaborate on behavioral details like return format, pagination, or rate limits. With annotations providing the safety profile, the description's additional value is marginal but not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and resource, and contains no unnecessary words. It is perfectly concise for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one optional parameter, no output schema, clear annotations), the description is complete: it states the purpose, scope, and the fact that only active jobs are included. No additional information is needed for the agent to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the single 'team_id' parameter is well-documented in the schema with details about API key vs OAuth usage. The tool description does not add any parameter-specific semantics, but since the schema already fully explains the parameter, 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 explicitly states 'List active (queued or running) Clarity export jobs for the current user', which provides a specific verb (list), resource (active Clarity export jobs), and scope (current user). This clearly distinguishes it from sibling tools like 'getClarityExport' (singular) and 'startClarityExport'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for viewing active exports for the current user, but does not explicitly state when to use it versus alternatives (e.g., for completed exports or other users). There is no guidance on exclusions or prerequisites, so the usage context is clear but lacks explicit comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentCaseTriggersList Agent Case TriggersARead-onlyIdempotentInspect
List the case triggers configured for an agent. Each trigger automatically dispatches the agent to run cases added to a queue.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds context about what case triggers are (they auto-dispatch the agent), which is useful but not rich behavioral detail about the list operation itself, such as pagination or ordering. This aligns with a baseline of 3 when annotations cover the core safety traits.
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 action verb 'List' and immediately followed by the object. Every sentence earns its place: the second explains what a case trigger is, which is valuable context. There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple, single-parameter read-only tool with full schema coverage and clear annotations. The description sufficiently covers the tool's purpose and domain semantics. No output schema exists, but for a straightforward list operation, the description provides all necessary context without requiring explanation of return values.
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% because agent_id has a complete description ('The agent's unique identifier'). The description does not add any parameter-specific meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with a clear resource: 'the case triggers configured for an agent.' It distinguishes this tool from siblings like listAgentTriggers and getAgentCaseTrigger by explicitly narrowing to 'case triggers' and further explains their purpose, leaving no ambiguity about what is being listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what the tool does and the semantics of case triggers (they automatically dispatch the agent to run cases added to a queue). However, it does not explicitly state when to use this tool over alternatives such as listAgentTriggers or getAgentCaseTrigger. Still, the context is clear enough for an 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.
listAgentFoldersList Agent FoldersARead-onlyIdempotentInspect
List all agent folders for the authenticated team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the team scoping constraint and confirms a read operation, but does not elaborate on return format or pagination behavior. This is consistent with the annotations, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or redundancy. It immediately states the action and scope, making it optimally concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and good annotations, the description is sufficient. It states what is listed and for whom, and the schema covers the parameter. It does not describe return values or pagination, but these are not critical for a straightforward list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with a detailed description of the team_id parameter, including when to omit it, API key pinning, and OAuth behavior. The tool description adds no parameter information, so it relies entirely on the schema, which is already comprehensive.
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 'agent folders' and scope 'for the authenticated team'. This clearly distinguishes it from sibling tools like createAgentFolder, deleteAgentFolder, and updateAgentFolder, and also from listAgents.
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 states that this lists agent folders for the authenticated team, providing clear context. It does not explicitly mention alternatives or when-not-to-use, but the simple read-only nature and sibling tool names make the usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentMemoryFilesList Agent Memory FilesARead-onlyIdempotentInspect
List the memory files stored for an agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no additional behavioral context, such as response format, filtering, or the nature of memory files, but it does not contradict the annotations either.
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, short and front-loaded with the verb 'List'. Every word earns its place, with no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and rich annotations, the description is minimally viable. However, without an output schema, it does not explain what the response contains (e.g., file names, metadata, or contents), leaving some ambiguity about the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter agent_id with a description, format, and pattern, achieving 100% schema description coverage. The description adds no parameter-specific information, but the schema already provides sufficient 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 uses the specific verb 'List' with the resource 'memory files' scoped to 'an agent', making the tool's action and target unambiguous. It clearly distinguishes itself from sibling tools like getAgentMemoryFile (which retrieves a single file) and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as getAgentMemoryFile or other list tools. The description simply states what it does without providing context, exclusions, or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentRevisionsList Agent RevisionsBRead-onlyIdempotentInspect
List revisions for an agent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of revisions per page (1-100, default 20) | |
| offset | No | Number of revisions to skip | |
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this operation as read-only, idempotent, and non-destructive, but the description adds no additional context about pagination, ordering, or return shape. It simply restates the action with no extra behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence consisting of five words, with no redundant information or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with well-documented parameters and annotations, the description is minimally sufficient. However, the absence of an output schema means the description could have mentioned what kind of revision data is returned (e.g., summaries, metadata), so it's 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?
The input schema provides 100% coverage with clear descriptions for all three parameters (limit, offset, agent_id). The description contributes no additional parameter information, but none is needed given the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and specific resource 'revisions for an agent', clearly distinguishing it from sibling tools like getRevision and listSkillRevisions. However, it doesn't explicitly mention alternatives, so it's clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 getRevision or listSkillRevisions. The agent must infer usage 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.
listAgentsList AgentsARead-onlyIdempotentInspect
List agents for your team.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of agents per page (1-100, default 20) | |
| offset | No | Number of agents to skip | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| automation_id | No | Only return agents belonging to this automation. | |
| include_schedules | No | Include the authenticated user's schedules for each agent in the response. Schedules are per-user, so this only returns schedules the current user owns. | false |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe read. The description adds the team-scoping constraint ('for your team'), but does not disclose pagination behavior or response format. This is acceptable for a non-destructive list operation but adds limited behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is directly front-loaded with the action and resource. No unnecessary words or repetition of schema details. Perfectly economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple list operation, rich schema coverage (including team_id constraints and include_schedules semantics), and clear read-only annotations, the one-line description is largely sufficient. It could arguably mention the response is a paginated list, but that is implied by the tool name and not 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 100%, with detailed descriptions for all five parameters, including specific UUID formats and team_id nuances. The description itself adds no parameter information, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list') and resource ('agents'), with a scope ('for your team'). It clearly identifies the tool's function and is distinct from sibling tools like listAgentSchedules or listQueueAgents, 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?
No guidance is provided about when to use this tool versus alternatives. The description does not mention that getAgent is for single agents, or that listAgentSchedules is for schedules, nor any exclusions. This leaves the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentSchedulesList Agent SchedulesARead-onlyIdempotentInspect
List all schedules configured for an agent. Returns the schedules you own on this agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds a key behavioral detail: the results are scoped to schedules 'you own on this agent', which is useful context about ownership filtering. However, it does not disclose pagination, ordering, or the exact shape of the returned schedule objects, leaving 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 two concise sentences with no filler. It leads with the action verb 'List', specifies the resource ('schedules'), the scope ('for an agent'), and adds meaningful ownership detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, read-only list tool with one parameter and clear annotations, the description is largely complete. It states the resource scope and ownership filter, which is sufficient for selection and invocation. The lack of an output schema is not fully compensated by details about returned schedule fields, but this is a minor gap given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter agent_id already described as 'The agent's unique identifier'. The description does not add any additional semantic detail about the parameter beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'schedules' and scope 'for an agent'. It also clarifies ownership ('you own on this agent'), which distinguishes it from schedule-related mutation tools like createSchedule, updateSchedule, and deleteSchedule. No other sibling tool lists agent schedules, so this 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 when to use the tool: whenever you need to see the schedules configured for an agent and owned by you. It does not explicitly exclude alternatives or state when-not-to-use, but the read-only list intent is clear from the context and the sibling tool set (no other list-schedule equivalent exists). Clear context, though lacking explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentSlackBoundWorkspacesList Slack Workspaces Bound To An AgentARead-onlyIdempotentInspect
List the Slack workspaces bound to an agent build that you can create channel triggers for. Creating a Slack channel trigger for any other workspace is rejected, so start here to pick a valid slack_team_id and integration_instance_id.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier | |
| build_id | Yes | The agent build (revision) whose bound connections to list |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only and idempotent. The description adds valuable domain context about workspace binding constraints and validation behavior, which goes beyond the safety hints. However, it does not disclose potential output format or pagination, so a small gap remains.
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, front-loaded with the core action and purpose. Every clause contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description covers the essential context: the binding constraint, the rejection behavior, and what fields to extract from the results. It lacks explicit return-shape details, but with no output schema required, the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both agent_id and build_id. The description reinforces the purpose of the parameters by linking them to the output fields (slack_team_id, integration_instance_id), but it does not add new syntactic or semantic detail 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 uses a specific verb ('List') and a precise resource ('Slack workspaces bound to an agent build'), immediately distinguishing it from related tools like listAgentSlackTriggers. It also states the purpose ('that you can create channel triggers for'), making its role unmistakable.
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 explains when to use the tool: 'start here to pick a valid slack_team_id and integration_instance_id' before creating a trigger. It also warns about the alternative ('Creating a Slack channel trigger for any other workspace is rejected'), giving clear exclusions and rationale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentSlackTriggersList Slack Channel TriggersARead-onlyIdempotentInspect
List the Slack channel triggers you own on an agent (Agent in the Duvo UI), oldest first. Each trigger's filter_config carries the watched channelId, channelName, Slack workspaceId, and matchRule. Capped at 100 triggers per agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive; the description adds ordering ('oldest first'), a hard cap ('Capped at 100 triggers per agent'), and the structure of `filter_config`, giving meaningful behavioral context beyond what 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?
Three sentences, front-loaded with purpose, followed by return-field details and a limit. 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 one parameter and no output schema, the description covers purpose, scoping ('you own'), ordering, limit, and the key returned fields. It's sufficiently complete; the only minor gap is that it doesn't explain pagination or what happens beyond 100, but the cap is explicitly stated.
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 fully documents agent_id with a description (100% coverage). The description adds only the clarification that 'agent' refers to an agent in the Duvo UI, which is minor; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('Slack channel triggers you own on an agent'), adds ordering ('oldest first'), and clearly distinguishes it from sibling trigger-list tools like listAgentTriggers and listAgentCaseTriggers.
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 scenario (needing Slack channel triggers for a specific agent) but does not explicitly mention alternatives or when-not-to-use, such as 'for all trigger types use listAgentTriggers.' Thus usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentSuggestionsList Agent SuggestionsARead-onlyIdempotentInspect
List an Agent's suggestions. status=pending is the inbox; status=history is consumed/dismissed/auto-cleared. Reads lazily auto-clear stale pending items.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| status | No | pending | |
| agent_id | Yes | The Agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Reads lazily auto-clear stale pending items,' implying that a read operation triggers auto-clearing of stale items—a destructive side effect. This contradicts the annotations readOnlyHint=true and destructiveHint=false, which assert no mutation occurs. Therefore the description directly contradicts 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 short and front-loaded with the core purpose. However, the phrase 'Reads lazily auto-clear stale pending items' is grammatically awkward and ambiguous, reducing clarity. It earns its place as behavioral insight but could be phrased better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the two status states and auto-clear behavior, but does not describe the return format or pagination behavior. With no output schema, this leaves some gaps. The contradiction with annotations also undermines overall completeness. It is minimally adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics for the `status` parameter, explaining that pending is the inbox and history contains consumed/dismissed/auto-cleared items. This goes beyond the schema's bare enum. Other parameters are either self-explanatory (limit, offset) or already described in the schema (agent_id), so the description compensates adequately.
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 'List an Agent's suggestions' with a specific verb and resource. It further clarifies the two status modes (pending=inbox, history=consumed/dismissed/auto-cleared), distinguishing this list operation from getAgentSuggestion and other agent-related 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 explains when to use status=pending vs status=history, giving context for the common use cases. Although it doesn't explicitly name sibling alternatives, the status semantics provide enough guidance for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentTriggersList Agent TriggersARead-onlyIdempotentInspect
List the trigger definitions the authenticated user owns on an agent (Agent in the Duvo UI). Triggers start a Run automatically when an external event fires (e.g. an email arrives or a Linear issue is created).
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the list is scoped to the authenticated user's ownership and defines what triggers are, giving useful behavioral context beyond the annotations, though it does not mention return format or pagination.
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: the first states the core function with ownership and resource scope, the second explains what triggers are with examples. 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?
For a simple list operation with one parameter and no output schema, the description provides purpose, scope, and domain context. It is mostly complete, though it lacks explicit details about the response structure (e.g., fields of trigger definitions) or pagination, which would make it 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 has 100% coverage for the single parameter agentId with a clear description. The tool description does not add any parameter-specific semantics, so the baseline of 3 is appropriate since the schema carries the parameter documentation.
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 (List), the resource (trigger definitions), and the scope (owned by the authenticated user on an agent). It also explains what triggers are, distinguishing this generic list tool from sibling tools like listAgentCaseTriggers or listAgentSlackTriggers.
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 need to list trigger definitions for an agent, but it does not explicitly compare with alternatives such as listAgentCaseTriggers or listAgentSlackTriggers. It provides domain context (triggers start runs on external events) but no 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAgentTriggerTypesList Agent Trigger TypesARead-onlyIdempotentInspect
List the trigger types available for an agent, grouped by integration. Use the returned integration_slug and trigger_type values when creating a trigger.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context (grouping by integration, use of returned values for creation) but does not disclose additional behavioral traits like completeness guarantees or response formatting, so it provides only moderate added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and includes only the essential secondary instruction about using the output. There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only tool with a single parameter and no output schema, the description covers the purpose, the output grouping, and the downstream usage. It is sufficiently complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (agentId has a clear description), so the baseline is 3. The description does not add any further explanation of the parameter's meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the resource ('trigger types available for an agent') with a clear scope ('grouped by integration'). It also differentiates from sibling tools like listAgentTriggers by emphasizing the returned values are for creating triggers, not listing existing configurations.
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 ('when creating a trigger') and what to do with the output. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAvailableClarityProcessLabelsList Available Clarity Process LabelsBRead-onlyIdempotentInspect
List process tags available for a process.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| limit | No | ||
| offset | No | ||
| search | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the read-only safety profile. The description adds the 'available for a process' scoping but does not disclose pagination, search behavior, or what 'available' means. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler words. It is front-loaded and appropriately sized, even though the brevity contributes to missing 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 tool with pagination and search parameters and no output schema, the description omits return format, pagination behavior, and the definition of 'available'. It is too sparse relative to the tool's complexity and the existence of similar label-listing 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?
The input schema has 4 parameters with 0% description coverage. The description only implies that 'id' identifies a process, but does not explain limit, offset, or search semantics. It fails to compensate for the schema's missing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List process tags available for a process' with a clear verb ('List') and resource ('process tags'). The word 'available' hints at assignable labels, but it does not explicitly distinguish this from sibling tools like listClarityProcessLabels or listClarityProcessAssignedLabels, so it is not 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?
No guidance is given on when to use this tool versus alternatives. The description does not mention when to prefer this over listClarityProcessLabels or listClarityProcessAssignedLabels, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCaseAttachmentsList Case AttachmentsARead-onlyIdempotentInspect
List the files attached to a case, oldest first. Includes attachments whose upload failed, so a missing source document is visible rather than silent.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier | |
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and destructiveHint false. The description adds behavioral facts beyond those annotations: results are ordered oldest first, and failed uploads are included rather than silently hidden. This is valuable transparency for an agent deciding whether to trust this listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action is front-loaded, and the important caveat about failed uploads is delivered in a single additional sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with two well-documented UUID parameters and no output schema, the description is complete enough: it states what is returned, the ordering, and the key edge-case behavior around failed uploads. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters at 100% with clear descriptions for queue_id and case_id. The description adds no parameter-level detail, so the baseline of 3 is appropriate because the schema already does the necessary 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 description states a specific verb and resource: 'List the files attached to a case.' It also adds ordering ('oldest first') and a noteworthy inclusion of failed uploads, making the tool's scope unmistakable and distinct from related tools like getCaseAttachmentDownloadUrl or listCases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case clear: retrieve all attachments for a case, including failed uploads so missing documents are visible. It does not explicitly name sibling alternatives or state when not to use this tool, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCaseLabelsList Case LabelsARead-onlyIdempotentInspect
List all labels assigned to a case.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of labels per page (1-1000, default 1000). | |
| offset | No | Zero-based offset for pagination. | |
| case_id | Yes | The case's unique identifier | |
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the scope 'assigned to a case', which is useful, but it does not mention pagination behavior or return format. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the core function efficiently and appropriately.
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 and has a rich schema and annotations, but the description's 'list all' may mislead regarding pagination, and it does not mention the required queue_id/case_id combination or return format. It leaves some ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter (limit, offset, case_id, queue_id) fully described. The description adds no additional parameter semantics; it merely restates the case_id scope implicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource 'labels assigned to a case', making the tool's function unmistakable. It distinguishes from sibling tools like listQueueLabels or listClarityProcessLabels by scoping to cases.
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. With many sibling list and label-related tools, the absence of any contextual direction or exclusions is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCaseRunRecentMessagesList Case Run Recent MessagesARead-onlyIdempotentInspect
Return the latest qualifying messages (assistant text + tool calls) for a Run on a case, newest last. Used to populate the live body of an active Run card in the case Activity timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of qualifying messages to return. Defaults to 3, must be between 1 and 10. | |
| run_id | Yes | The agent run's unique identifier | |
| case_id | Yes | The case's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context beyond that by specifying message types ('assistant text + tool calls') and ordering ('newest last'). It doesn't describe the exact return structure, but the added filter details are useful and do not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and every phrase earns its place: it states the action, the resource, the filtering criteria, the ordering, and the use case. No waste 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 simple read-only tool with 3 parameters and strong annotations, the description is mostly complete. It covers purpose, message types, ordering, and use context. Since there is no output schema, a more explicit mention of the return format (e.g., list of message objects) could improve clarity, but the description already implies a list of messages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter (case_id, run_id, limit) has its own description. The tool description does not add parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Return' and identifies the exact resource: 'latest qualifying messages (assistant text + tool calls) for a Run on a case'. It also specifies ordering ('newest last'), distinguishing it from the sibling listRunMessages which likely returns all messages.
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: 'Used to populate the live body of an active Run card in the case Activity timeline.' This tells an agent when to use it, but it does not explicitly name alternatives or say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCaseRunsList Case RunsARead-onlyIdempotentInspect
List Runs (agent runs) that have claimed or received handover of a case, newest first. Capped at 50 ownership events.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral details beyond annotations: ordering 'newest first' and a limit 'Capped at 50 ownership events,' which are important for an agent to know. It doesn't mention pagination or return format, but the added cap and ordering justify a score above baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core action front-loaded. The parenthetical 'agent runs' clarifies the resource, and the second sentence states the cap directly. There is zero filler or repetition of what the schema already provides.
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 operation with one parameter and no output schema, the description covers the selection criteria (claimed or received handover), ordering, and limit. It leaves the definition of 'ownership events' slightly open, but for a straightforward list tool this is adequately complete, especially with strong annotations.
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 100% coverage for the single parameter case_id, including a clear description ('The case's unique identifier'). The tool description does not add any additional parameter-level meaning, so the schema carries the full burden, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'List' and clearly identifies the resource as 'Runs (agent runs)' with a specific qualifying condition: 'that have claimed or received handover of a case.' It also specifies ordering ('newest first') and a cap ('Capped at 50 ownership events'), which distinguishes it from broader sibling tools like listRuns or getRun.
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 a use case—when you need runs related to a case via ownership events—but it does not explicitly compare itself to alternatives like listRuns or mention when not to use this tool. The context is clear but not explicit about exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCasesList CasesARead-onlyIdempotentInspect
List cases in a queue. Supports status, date-range, and free-text filters via query params. Set count_only=true to skip Case row selection and transformation. The normal response shape is returned with cases: [] and the matching total. For label filters, use POST /v2/queues/:queue_id/cases/search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of cases per page (1-100, default 20). | |
| offset | No | Zero-based offset for pagination. | |
| search | No | Full-text search across case title and data. | |
| status | No | Filter by one or more status buckets (comma-separated). Values: all, pending, processing, needs_input, postponed, needs_review, resolved, canceled. `processing` covers both a case actively being worked and one waiting on its evaluation. | |
| sort_by | No | Field to sort by. Default: created_at. | created_at |
| priority | No | Filter by one or more priority levels (comma-separated). Values: none, medium, high. | |
| queue_id | Yes | The queue's unique identifier | |
| count_only | No | Skip row selection and enrichment. The normal list response shape is returned with an empty row array and the matching total. | false |
| sort_order | No | Sort direction. Default: desc. | desc |
| created_at_to | No | Return only cases created before this ISO-8601 timestamp. The upper bound is exclusive. | |
| updated_at_to | No | Return only cases updated before this ISO-8601 timestamp. The upper bound is exclusive. | |
| issue_severity | No | Filter by highest failing rubric severity (comma-separated). Values: critical, medium. Severity is a facet within the issues outcome, so it returns nothing when combined with a status bucket that excludes issues. `low` is not selectable: an all-low verdict is stored as success, so no case carries it. | |
| created_at_from | No | Return only cases created at or after an ISO-8601 timestamp or a lookback such as 24h or 7d. | |
| updated_at_from | No | Return only cases updated at or after an ISO-8601 timestamp or a lookback such as 24h or 7d. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds useful behavioral details: count_only skips row selection/transformation and the response shape includes cases: [] and total. This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences deliver the core purpose, key behavioral nuance (count_only), and the alternative for label filters. No redundancy or filler; information is front-loaded and directly 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?
Despite 14 parameters and no output schema, the description summarizes the main filter capabilities, explains count_only's effect on response shape, and points to the search endpoint for label filters. It could detail the case fields in the response, but for a list operation the essentials are 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 all 14 parameters are individually documented. The description only provides a high-level grouping of filter types (status, date-range, free-text) and mentions count_only behavior briefly, which adds marginal value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List cases in a queue' with a specific verb and resource, and distinguishes itself from relevant siblings by noting that label filters should use the search endpoint. It also implicitly differentiates from getCase (single case) and createCases (creation).
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 directs users to use POST /v2/queues/:queue_id/cases/search for label filters, providing a clear alternative for a specific use case. It also implies general usage for status, date-range, and free-text filters, which covers the main scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityArtifactChatConversationsList Clarity Artifact Chat ConversationsARead-onlyIdempotentInspect
List the current user's recent non-deleted artifact-chat conversations for a Clarity v2 process and snapshot kind.
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes | The Clarity process id | |
| snapshot_kind | Yes | Artifact kind to list conversations for |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false. The description adds behavioral traits beyond annotations: it specifies 'recent' (implying temporal ordering), 'non-deleted' (filtration), and 'current user's' (scope). It does not disclose pagination, max count, or ordering, but the added context is valuable and consistent with 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, well-structured sentence that front-loads the verb and resource. Every word is meaningful and non-redundant. No filler or irrelevant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters fully covered by schema, good annotations, and no output schema, the description sufficiently covers what the tool does and its inputs. It adds scope and filtration context. However, it omits details about the return structure (e.g., fields in the conversation list), which would be helpful for an agent since there is no output schema. Still, the description is complete enough for most selection and invocation 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 100%: both process_id and snapshot_kind have descriptions in the schema. The description does not add new parameter semantics beyond restating 'for a Clarity v2 process and snapshot kind'. Since the schema fully documents the parameters, the description adds no extra meaning, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'artifact-chat conversations', and specifies scope: 'current user's recent non-deleted' and conditioning on 'Clarity v2 process and snapshot kind'. This uniquely identifies the tool's function and distinguishes it from sibling tools like deleteClarityArtifactChatConversation and getClarityArtifactChatMessages.
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 (when you need conversations for a given process and snapshot kind) but does not provide explicit guidance on when to use this tool versus alternatives (e.g., getClarityArtifactChatMessages for messages within a conversation, or listClarityProcessSnapshots for snapshots). No exclusion criteria or when-not-to-use advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityExtraCaptureRequestsList Clarity Extra Capture RequestsARead-onlyIdempotentInspect
List active extra-capture requests for a given transformation proposal of a Clarity v2 process. The caller is expected to know the proposal id from the V2 read model and skip the call when no proposal exists yet.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results per page (1-100, default 20) | |
| offset | No | Number of results to skip (default 0) | |
| process_id | Yes | The clarity process id | |
| transformation_proposal_id | Yes | The transformation proposal id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds useful behavioral context: it filters to 'active' requests and explains that the caller must obtain the proposal id from the V2 read model, implying a precondition. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the tool's purpose, and contains no redundant information. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose, the target resource, and a key prerequisite. Given the simple list tool, no output schema, and adequate annotations, it is reasonably complete. It doesn't explain what 'extra-capture requests' are, but this may be domain-standard and not required for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal value beyond schema: it implies that process_id and transformation_proposal_id are related to a Clarity v2 process, but doesn't elaborate on limit/offset or format details. It does not fully compensate for any missing contextual 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 tool lists 'active extra-capture requests' for a specific 'transformation proposal of a Clarity v2 process.' This specific verb+resource+scope distinguishes it from sibling tools like listClarityLandscapeCaptures or getClarityCapture.
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 prerequisite: the caller must know the proposal id from the V2 read model, and explicitly advises skipping the call when no proposal exists. This is a when-not condition, but no explicit alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityFoldersList Clarity FoldersARead-onlyIdempotentInspect
List the team's process folders with process and suggestion counts
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety and idempotency. The description adds minor behavioral context by mentioning that the response includes process and suggestion counts, but it does not clarify other traits like team scope behavior or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no extraneous words. It front-loads the verb and resource, making the purpose immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions output contents (process and suggestion counts), which is helpful given the lack of an output schema. However, it does not clarify team scope for callers (e.g., that OAuth users must pass a team_id) or whether results are paginated/sorted. The schema covers team_id behavior, so completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with a detailed description for team_id that explains fallback behavior for API keys and required passing for OAuth. The tool description adds no additional parameter-level information, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), the resource (team's process folders), and the specific output details (with process and suggestion counts). This effectively distinguishes it from sibling tools like listClarityProcesses, listClarityProcessLabels, or createClarityFolder.
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 that this is the appropriate tool for viewing folder-level summaries, nor does it contrast with similar list tools like listClarityProcesses or listCases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityLandscapeCapturesList Clarity Landscape CapturesARead-onlyIdempotentInspect
List the organization's Process Landscape captures. By default, only captures eligible to seed new process proposals are returned; excluded captures can be included for inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of captures to return (1-200, default 100) | |
| orgId | Yes | ||
| include_excluded | No | Include captures excluded from Process Landscape analysis | false |
| includeTranscripts | No | Include full capture transcripts (large); off by default. Pass the literal string 'true' or 'false' (z.coerce.boolean treats any non-empty value, including 'false', as true). | false |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: the default eligibility filter behavior, the 'include_excluded' option for inspection, and the note about including transcripts being large (via the includeTranscripts param description). This clearly explains what the tool does and what to expect, exceeding what annotations alone 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, extremely concise, and front-loaded with the core purpose. It adds the key behavioral nuance (default eligibility filter) and the opt-in for excluded captures without any wasted words. This is a model of efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list operation with a readOnlyHint and simple parameters, the description covers the essential context: what is being listed, the default scope, and the option to broaden scope. The schema provides parameter details, annotations cover safety, and there is no output schema to explain. The only minor gap is not explicitly mentioning pagination or that transcripts are large (that's in the param description), but it's sufficient for an agent to invoke 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 75%, and the description adds context for the main semantic parameter (include_excluded) by explaining 'excluded' refers to captures excluded from Process Landscape analysis, linking to the eligibility concept. The description also clarifies the default behavior regarding eligible captures, which helps interpret the include_excluded parameter and the overall purpose of the limit parameter. However, it doesn't deeply explain each parameter, but the schema itself is fairly descriptive, so the description provides enough added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the organization's Process Landscape captures, which is specific and distinguishes it from other list tools like listClarityProcesses. It also adds a meaningful default behavior detail (eligibility filtering) that goes beyond a simple listing, separating it from generic list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly communicates when to use this tool by explaining the default filter (only captures eligible to seed new process proposals) and the option to include excluded captures for inspection. It doesn't explicitly mention when not to use it or suggest alternatives, but the context is clear enough for an agent to decide appropriately, especially given the sibling tool list includes related get/list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityLandscapeNodeInterviewsList Clarity Landscape Node InterviewsCRead-onlyIdempotentInspect
List Clarity interviews linked to a process folder
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of interviews per page (1-100, default 50) | |
| orgId | Yes | The organization ID | |
| nodeId | Yes | The clarity process folder node ID | |
| offset | No | Number of interviews to skip |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to restate safety. However, it adds no behavioral context beyond the annotation: no mention of pagination behavior, permissions, or what constitutes a 'Clarity interview' in the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no waste. It front-loads the verb and resource. While very brief, it achieves minimal clarity 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?
There is no output schema, so the description should clarify what the tool returns (e.g., a list of interview objects). It also doesn't explain how limit/offset control pagination or what happens when there are no interviews. Given the simplicity of a list tool, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 4 parameters have schema descriptions (100% coverage). The tool description adds no additional semantic value beyond what the schema provides. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Clarity interviews' linked to a process folder. It differentiates from sibling tools like listClarityOrganizationInterviews by specifying the node context. However, it does not explicitly contrast with similar list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like listClarityOrganizationInterviews or listClarityTeamInterviews. The description lacks context about prerequisites, exclusion criteria, or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityLandscapeNodePeopleList Clarity Landscape Node PeopleARead-onlyIdempotentInspect
List the people involved in the process behind one process landscape node. To read the people across the whole landscape in one request, use getClarityHierarchyPeople instead.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| nodeId | Yes | A process landscape node that is linked to a real process. | |
| teamId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, covering the core behavioral traits. The description adds scope context (single node vs. whole landscape) but does not disclose additional behavioral details like pagination, rate limits, or data freshness. With annotations present, the description adds minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The purpose is front-loaded, and the alternative tool reference is efficiently placed in the second sentence. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three parameters, good annotations, and no output schema, the description covers the essential functionality and usage boundaries. It does not describe the return format or potential empty results, but given the tool's clarity, it is nearly complete. A minor gap is the lack of indication that results are a list of people.
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 33% (only nodeId has a description). The tool description does not elaborate on the meaning of orgId, nodeId, or teamId beyond what the schema provides. Given the low coverage, the description should compensate but does not, leaving potential confusion about parameter roles.
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 'List the people involved in the process behind one process landscape node' with a specific verb and resource. It also explicitly distinguishes from the sibling tool 'getClarityHierarchyPeople' by noting the alternative for whole-landscape queries, 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 provides clear guidance on when to use this tool (for a single node) and when to use the alternative (getClarityHierarchyPeople for whole landscape). It does not list prerequisites or exclusions beyond the nodeId schema note, but the context is sufficient for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityOrganizationInterviewsList Clarity Organization InterviewsCRead-onlyIdempotentInspect
List Clarity interviews across an organization
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| orgId | Yes | ||
| scope | No | ||
| offset | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral details beyond these, such as pagination behavior (offset/limit) or whether results are sorted. With annotations covering safety, a 3 is appropriate for not adding value beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is under- specified for a tool with 4 parameters. It front-loads the verb and resource but sacrifices necessary detail. It is not wasteful, but brevity here comes at the cost of 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?
Given the complexity (4 params, no output schema, numerous sibling list tools), the description is incomplete. It omits pagination, scope semantics, and return value details. It does not differentiate from listClarityTeamInterviews or explain what 'organization interviews' are, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameter meaning. It only mentions 'across an organization', which weakly hints at the orgId parameter but does not clarify limit, offset, or scope. The description fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'List' and identifies the resource as 'Clarity interviews across an organization', which clearly states what the tool does. However, it does not differentiate from sibling tools like listClarityTeamInterviews or listClarityLandscapeNodeInterviews, reducing clarity in a crowded toolset.
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. The description only states the basic function, omitting context about scope filtering or when to prefer this over listClarityTeamInterviews, leaving the agent without decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityProcessAssignedLabelsList Clarity Process Assigned LabelsCRead-onlyIdempotentInspect
List process tags on a process.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint, but the description adds no additional behavioral details, such as whether inherited labels are included or what happens with invalid process IDs.
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 short sentence is concise, but it is under-specified and lacks any structural efficiency for conveying purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description is too minimal. It does not clarify return value or how this differs from the generic label list tool, making it incomplete in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single id parameter with no description (0% coverage). The description does not explain that id refers to the process ID, leaving the user to infer from the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'List process tags on a process' using a specific verb and resource. It clearly indicates a read operation, though it could better distinguish from sibling listClarityProcessLabels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus sibling listClarityProcessLabels or listAvailableClarityProcessLabels. Context must be inferred 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.
listClarityProcessesList Clarity ProcessesARead-onlyIdempotentInspect
List Clarity processes for the current team, most recently updated first. Returns lightweight metadata (capture counts, contributors, status) suitable for building a picker; the per-process read model is available via GET /v2/teams/:team_id/clarity-v2/processes/:process_id for v2 rows and GET /v2/teams/:team_id/clarity/processes/:id for legacy v1 rows. Both v1 (legacy) and v2 processes are returned by default; use search, status, and version to narrow discovery. Capped at 100 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of processes per page (1-100, default 50) | |
| offset | No | Number of processes to skip (default 0) | |
| search | No | Case-insensitive search across process names | |
| status | No | Filter by process lifecycle status | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| version | No | Filter by Clarity process schema version: 1 legacy, 2 v2 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnly and idempotent, lowering the bar. The description adds valuable context beyond these hints: the 100-per-page cap, default inclusion of both legacy v1 and v2 processes, the lightweight metadata fields (capture counts, contributors, status), and the 'most recently updated first' ordering. This transparently sets expectations for what the agent will receive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause earns its place: purpose, ordering, return content, alternative endpoints, default versions, filter hints, and page cap. It is front-loaded with the core 'List Clarity processes' phrase and uses semicolons to pack related information compactly without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema and rich annotations, the description is complete enough: it describes the lightweight return metadata (capture counts, contributors, status), ordering, pagination cap, default v1/v2 behavior, and filter options. It even points to full read-model endpoints for v1/v2 rows, covering what an agent needs to decide whether this tool suffices or a fetch of full details is required.
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% (all six parameters have descriptions), so the baseline is 3. The description adds semantic value by explicitly naming 'search, status, and version' as the narrowing filters and clarifying that 'v1 and v2 are returned by default', which helps the agent choose parameters correctly without rereading the schema. It also relates limit/offset to pagination via the cap 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 states the exact action (list), the resource (Clarity processes), the scope (current team), and the ordering ('most recently updated first'). It also distinguishes itself from full-detail get operations by specifying it returns 'lightweight metadata' and gives read-model endpoints for v1/v2 full rows.
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: 'suitable for building a picker' and points to alternative endpoints for per-process read models, implying when not to use this list tool. It also explains that v1/v2 are returned by default and how to narrow discovery with search, status, and version. However, it doesn't explicitly differentiate from the sibling tool listClarityProcessSummaries or provide explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityProcessLabelsList Clarity Process LabelsBRead-onlyIdempotentInspect
List process tags available in an organization.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| orgId | Yes | ||
| offset | No | ||
| search | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe read operation. The description adds minimal context about organizational scope but fails to disclose return format, pagination behavior, or any filtering semantics beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant wording. It is as concise as possible while still stating 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?
Given the existence of many Clarity Process tools and no output schema, the description is too sparse. It lacks guidance on return values, pagination, search behavior, and how this tool differs from similarly named siblings like listAvailableClarityProcessLabels.
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 implies the orgId parameter via 'in an organization' but ignores limit, offset, and search parameters, leaving their semantics entirely to the schema's bare types.
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 'List process tags available in an organization' with a specific verb (list) and resource (process tags/scopes). It is clear but does not differentiate from the similarly named sibling tool 'listAvailableClarityProcessLabels', which may cause confusion.
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 information is provided about when to use this tool versus alternatives such as listAvailableClarityProcessLabels or listClarityProcessAssignedLabels. The description offers no usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityProcessLinksList Clarity Process LinksARead-onlyIdempotentInspect
List process-to-process links in the organization's Clarity landscape that are visible within the caller's team access scope. Use node_id to find links touching a specific process node.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of links per page (1-500, default 100) | |
| orgId | Yes | ||
| offset | No | Number of links to skip (default 0) | |
| node_id | No | Only return links that touch this hierarchy process node |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds behavioral context beyond this by stating the 'caller's team access scope' filtering and the node_id filtering behavior, which are not present in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose and scope, followed by a focused parameter hint. No redundancy or filler; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with annotations and schema descriptions for pagination and node_id, the description sufficiently covers the purpose, scope, and key filter. It does not describe the return format, but no output schema exists, and the tool is simple enough that this is a minor gap. The undocumented orgId is a slight omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 3 of 4 parameters with descriptions (limit, offset, node_id), and the description adds a brief node_id hint that reinforces the schema but does not add substantial new meaning. The orgId parameter remains unexplained in both schema and description, keeping this at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'process-to-process links' with an explicit scope ('visible within the caller's team access scope'). It distinguishes itself from sibling tools like listClarityProcesses and createClarityProcessLink by focusing on links and their access-scoped visibility.
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 by defining the accessible scope and offers a specific usage hint for the node_id parameter ('Use `node_id` to find links touching a specific process node'). It does not explicitly mention alternatives or exclusions, but the purpose is specific enough to infer when it applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityProcessMembersList Clarity Process MembersARead-onlyIdempotentInspect
List users with accepted access to a clarity process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clarity process ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, clarifying it is a safe read operation. The description adds no further behavioral context (e.g., pagination, permissions needed, or rate limits). Since annotations carry the safety profile, a 3 is appropriate for minimal additional value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose without any redundant or extraneous details. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward read-only list tool with a single well-documented parameter, the description plus annotations provide adequate context. However, there is no mention of return format (e.g., user details) or pagination, which is common for list tools. Given the lack of output schema, this gap slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to detail parameters. The description adds no extra meaning to the 'id' parameter beyond what the schema already provides (UUID format, required). Baseline 3 is suitable.
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 'List users with accepted access to a clarity process', specifying the exact verb (list), the resource (users with accepted access), and the target (clarity process). This effectively distinguishes it from siblings like 'listClarityLandscapeNodePeople' or 'removeClarityProcessMember'.
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. Siblings like 'listClarityProcessMembers' and 'addClarityLandscapeNodePerson' imply related operations, but there is no explicit when-to-use or when-not-to-use context. The agent is left to infer usage 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.
listClarityProcessSnapshotsList Clarity Process SnapshotsBRead-onlyIdempotentInspect
List lightweight Clarity v2 process snapshots for one kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Snapshot kind to list | |
| limit | No | ||
| offset | No | ||
| process_id | Yes | The clarity process id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds 'lightweight' and 'v2' context but does not mention response shape, pagination behavior, or how snapshot kinds differ, so value beyond annotations is limited.
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 a clear verb and resource. It contains no filler or redundant content, earning every word.
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 simple list operation with annotations covering read-only behavior, but there is no output schema and the description does not mention return fields, pagination, or the distinction between snapshot kinds. It is adequate for a minimal list tool but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes process_id and kind (with enum); 'for one kind' reinforces the kind filter but adds little new semantic value. Limit and offset are self-explanatory, but at 50% schema description coverage, the description does not fully document parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'Clarity v2 process snapshots' with the constraint 'for one kind.' This clearly differentiates it from singular getClarityProcessSnapshot and broader listClarityProcesses, though it does not explicitly name those alternatives.
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 alternative guidance is provided. The phrase 'for one kind' hints at the required 'kind' parameter, but the description does not explain when to prefer this over sibling tools like listClarityProcesses or getClarityProcessSnapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityProcessSummariesList Clarity Process SummariesARead-onlyIdempotentInspect
Cross-process portfolio digest for every completed Clarity process on the team: per-process summary, SWOT, projected impact, and a step skeleton (role, system, and flow edges) — without step prose or source excerpts. Paginated (default 5, max 10). Use this to answer portfolio-wide questions in one pass; fetch a single process's full detail via getClarityProcessSnapshot only for the few that matter.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Processes per page (1-10, default 5). Keeps the response under the MCP output cap. | |
| detail | No | skeleton = + per-step role/system/flow edges (default); summary = summary+SWOT+impact only (cheaper, for pure ranking). | skeleton |
| offset | No | Processes to skip (default 0). | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| include_current_steps | No | Include the as-is (current) step skeleton too. Default false = proposed (to-be) steps only. Pass the literal string 'true' or 'false' (z.coerce.boolean treats any non-empty value, including 'false', as true). | false |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds behavioral context beyond annotations by specifying the scope ('every completed Clarity process'), what is excluded ('without step prose or source excerpts'), and pagination behavior (default 5, max 10). This provides useful, non-obvious operational 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?
Two sentences, front-loaded with the core purpose, then key attributes and usage guidance. No redundant or filler content; every sentence contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context for a list tool with 5 parameters: it explains the output contents, pagination, and the distinction from a single-process detail tool. It doesn't describe the exact response structure but this is compensated by the schema's parameter explanations and the absence of an output schema.
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 marginal value by clarifying the 'skeleton' output components (role, system, flow edges) and reaffirming pagination defaults, but these are largely covered by the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: a 'cross-process portfolio digest' for completed Clarity processes, listing summaries, SWOT, projected impact, and step skeletons. It explicitly distinguishes itself from siblings by noting it excludes step prose/source excerpts and contrasts with getClarityProcessSnapshot for single-process detail.
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 usage guidance is provided: use for portfolio-wide questions in one pass, and use getClarityProcessSnapshot only for the few processes that need full detail. This clearly delineates when to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listClarityTeamInterviewsList Clarity Team InterviewsCRead-onlyIdempotentInspect
List team-level Clarity interviews
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of interviews per page (1-100, default 50) | |
| offset | No | Number of interviews to skip | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. However, the description adds no behavioral context beyond that—no mention of pagination behavior (despite limit/offset parameters), ordering, or what happens when team_id is omitted. For a list tool with no output schema, this is a notable 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. It places the verb 'List' first, which is good for scanning. However, the brevity sacrifices necessary details—it could be expanded slightly 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?
Given that there is no output schema and the tool has three parameters including a nuanced team_id semantics, the description is insufficient. It fails to specify what fields are returned, how pagination works, or the behavior of team_id for different authentication types. Sibling tools with similar names add ambiguity that the description does not resolve.
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 three parameters. The description does not add any meaning beyond the schema—it does not explain how 'team-level' relates to the team_id field or clarify the difference between omitting team_id (API keys) vs. providing it (OAuth). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'Clarity interviews' at a 'team-level', which is a specific verb and resource. However, it does not distinguish this from sibling tools like listClarityOrganizationInterviews or listClarityLandscapeNodeInterviews—the only differentiator is the word 'team-level', which is ambiguous without reference to the team_id parameter.
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. The description does not mention when to prefer this over listClarityOrganizationInterviews or listClarityLandscapeNodeInterviews, nor does it explain the role of the team_id parameter in scoping the listing. Usage must be inferred from the tool name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listConnectionsList ConnectionsARead-onlyIdempotentInspect
List the authenticated user's connections (connected integration instances) for the current team. Includes team-shared instances visible to the caller when the org-level Connections sharing setting is on. Filter by integration type with the type query parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| limit | No | ||
| offset | No | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds non-obvious behavior: team-shared instances are included only when the org-level Connections sharing setting is on. This goes beyond annotation metadata without contradicting 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?
The description is two sentences, front-loaded with the main purpose, and contains no redundant or filler information. Every sentence provides meaningful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core listing behavior, team scope, and the sharing condition. It does not explain pagination behavior or return-field details, but the limit/offset schema constraints and the absence of an output schema make this acceptable. Overall it is reasonably complete for a read-only list 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 only 25% (only team_id has a description). The prose adds meaning for the `type` parameter ('Filter by integration type'), but limit and offset are left to be inferred from their names and constraints. The description does not compensate for the low coverage across all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List the authenticated user's connections (connected integration instances) for the current team.' It uses a specific verb and resource and clarifies the term 'connections.' However, it does not explicitly distinguish this from the similarly named sibling tool listIntegrations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about the current team and team-shared instances, but does not explicitly state when to use this tool versus alternatives like listIntegrations. No when-not-to-use guidance is given; usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCredentialsList credentials for user and teamARead-onlyIdempotentInspect
List browser-login credentials visible to the caller for the current team — team-shared (user_id IS NULL) plus the caller's own personal logins. Optionally filter by domain. Passwords and OTP secrets are never returned; only metadata flags indicating whether they are set.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| userId | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds critical transparency by stating that passwords and OTP secrets are never returned and only metadata flags are provided, which is important for setting agent expectations about sensitive 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?
The description is two sentences, front-loaded with the main purpose, and includes only essential details about filtering and sensitive data. No redundant information or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema, the description covers the return values (metadata flags), the data scope, and the optional filter. However, it fails to explain the required 'userId' parameter, leaving the agent without clear guidance on a mandatory input. This keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only team_id is documented). The description adds meaning for the 'domain' parameter as an optional filter, but the required 'userId' parameter is left unexplained in both the schema and description. This is a significant gap, as the description does not compensate for the low 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 tool lists browser-login credentials for the caller's current team, specifically team-shared and personal logins. It distinguishes itself from sibling tools like listSecrets or listRevisionLogins by specifying the credential type and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use the tool: to list credentials visible to the caller for the current team, with an optional domain filter. It does not explicitly list alternatives or exclusions, but the purpose is unambiguous and separates it from sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listFilesList FilesBRead-onlyIdempotentInspect
List files for the current team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds the 'current team' scoping but no behavioral details like return format or pagination. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It clearly conveys the action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description is adequate given rich annotations and full schema coverage. However, without an output schema, it would benefit from noting what is returned (e.g., file metadata vs content) or pagination 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 coverage is 100% and team_id has a detailed description covering API key vs OAuth behavior. The tool description does not additionally explain parameters, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (list) and resource (files), with scope ('for the current team'). It does not explicitly distinguish from sibling list tools like listSandboxFiles or specify whether it returns metadata or content, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as listSandboxFiles or getFileContent. The schema's team_id NOTE explains parameter usage but does not help an agent choose among tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listIntegrationsList IntegrationsARead-onlyIdempotentInspect
List the team's integration catalog: built-in integration types plus any custom connection types defined for the team. OAuth authorization flows are browser-based and cannot be performed via this API; use the Duvo dashboard to complete OAuth-based connections.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| limit | No | ||
| offset | No | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context about OAuth browser-based flows being ineligible via the API and the team-scoped nature of the catalog, which goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose and scope with specificity, and the second provides an essential limitation. No redundant information, and the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with good annotations, the description covers the purpose, the scope of items returned, and a key limitation (OAuth flows). It does not explain pagination or response structure, but the schema provides limit/offset constraints, and the lack of an output schema reduces the need to describe return values.
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 team_id has a description). The tool description mentions 'team's integration catalog', which maps to team_id, but does not clarify the meaning of type, limit, or offset. With low schema coverage, the description fails to compensate for these undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('team's integration catalog') and details the scope ('built-in integration types plus any custom connection types'), which distinguishes it from sibling tools like listConnections or listPluginCatalog.
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 states what the tool does and explicitly notes that OAuth flows cannot be performed via this API, directing users to the Duvo dashboard for that case. However, it does not explicitly name alternative tools for other scenarios, so it stops short of 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.
listMyOrganizationsList My OrganizationsARead-onlyIdempotentInspect
List the organizations the current user belongs to, with their role (organization:member, organization:admin, organization:owner, or organization:executive) and member count in each. Use this to check whether the user has an admin-or-above role before calling organization-scoped endpoints, which reject lower roles with 403.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only and idempotent. The description adds valuable context by enumerating the returned role values and explaining the 403 rejection behavior of downstream endpoints, but does not elaborate on response format or potential pagination. Still, for a parameterless simple list, it exceeds the baseline expected from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, perfectly front-loaded with the primary purpose followed by actionable usage guidance. No filler words or redundant restating of the tool name or title.
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, read-only list tool with no output schema, the description covers what the tool returns, how to interpret role values, and when to use it as a preflight check. This is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the description has no parameter details to explain. It compensates by clarifying the output semantics (role and member count), which is the key information an agent needs. This matches the baseline for zero-param tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the organizations the current user belongs to and specifies the output includes role and member count. The explicit role enumeration (organization:member, admin, owner, executive) distinguishes it from sibling tools like listMyTeams and listOrgTeams.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use-case guidance: 'Use this to check whether the user has an admin-or-above role before calling organization-scoped endpoints, which reject lower roles with 403.' This tells the agent exactly when to invoke the tool and why, meeting the highest bar for usage clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listMyTeamsList My TeamsARead-onlyIdempotentInspect
List teams the authenticated caller can act on. Team-scoped API keys see only the key's team; managed Ask Duvo keys stay within their origin boundary; human user-scoped API keys and OAuth callers see every team they're a member of.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description goes beyond by explaining scoping behavior for team-scoped keys, managed Ask Duvo keys, and user/OAuth callers. It does not discuss ordering, pagination, or empty-result behavior, but for a read-only parameterless list operation the disclosed credential scoping is the most valuable behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. The primary purpose appears immediately, and each clause adds meaningful scoping detail that 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 parameterless listing tool with read-only annotations, the description covers the essential context: what is listed and whose perspective determines the results. It does not describe the return shape, but the absence of an output schema is partially mitigated by the straightforward name and purpose. A brief note on the result format or explicit default ordering would make it 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?
There are zero parameters and the schema fully covers them, so there is nothing for the description to add about parameter semantics. The 0-parameter baseline of 4 applies here; the description appropriately focuses on behavior rather than 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 resource ('List teams the authenticated caller can act on') and clearly distinguishes this from organization-scoped or team-scoped alternatives like listOrgTeams. It also explains how the result set depends on the caller's credential type, leaving no ambiguity about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this tool is appropriate by defining which callers see which teams, and by emphasizing 'can act on' rather than merely 'is a member of.' However, it does not explicitly name sibling tools as alternatives or state when not to use this tool, which would make the routing completely explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listNotificationsList NotificationsARead-onlyIdempotentInspect
List notifications for the authenticated user's current team, most recent first. Filter with type, unread, severity or minSeverity (mutually exclusive), important, agentRunId, or processId; paginate with limit/cursor. Pass batchId to list only the live members of a notification batch, optionally ordered by sort=importance (only valid together with batchId). Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | importance orders by type importance then severity (only valid together with batchId); default recency. | recency |
| type | No | Only return notifications of this type. One of: connection_broken, critical_eval_issue, eval_issue, job_issue, job_done, background_job, schedule_issue. | |
| limit | No | Number of notifications per page (1-100, default 30). | |
| cursor | No | Opaque cursor from the previous page's nextCursor. Omit for the first page. | |
| unread | No | If true, only return unread notifications. | |
| batchId | No | Only return live members of this notification batch. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| severity | No | Only return notifications with this severity. One of: info, warning, critical, success. | |
| important | No | If true, only return important notifications: unresolved connection_broken rows pinned until reconnected, removed, or dismissed. | |
| processId | No | Only return notifications about this Clarity process. | |
| agentRunId | No | Only return notifications about this agent run. | |
| minSeverity | No | Only return notifications at or above this urgency. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond that: the feature-gating (404 when disabled), the ordering guarantee, and the mutual-exclusivity constraint. It does not disclose return shape (no output schema), but the annotations lower the bar, and the added context justifies a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but information-rich, front-loading the core action and then packing filter, pagination, batch, and feature constraints into three sentences without redundancy. Every clause earns its place, and the structure makes it easy for an agent 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 tool with 12 optional parameters and no output schema, the description covers the key invocation concerns: pagination, filter combinations, the batchId/sort rule, and the feature requirement. It does not describe the response envelope, but given the absence of an output schema and the presence of sibling tools for specific reads, 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 100%, so every parameter is documented in the schema with defaults, enums, and constraints. The description reinforces a few relationships (severity/minSeverity mutual exclusivity, batchId/sort coupling) but does not add substantial new meaning beyond what the schema already provides. At the high-coverage baseline, this is 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 and resource ('List notifications for the authenticated user's current team') and adds ordering ('most recent first'), making the core purpose unmistakable. It also enumerates the main filtering dimensions, which distinguishes it from more specialized siblings like getNotification or getNotificationFeed without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operational context: pagination via limit/cursor, mutual exclusivity of severity and minSeverity, and the special batchId/sort interaction ('only valid together with batchId'). It also flags a prerequisite (Notification Center feature) and the resulting 404. However, it does not explicitly contrast this tool against alternative list feeds like getNotificationFeed, so an agent might not immediately know which to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listOrgTeamsList Org TeamsARead-onlyIdempotentInspect
List teams belonging to an organization you are a member of, including your membership and role in each.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of teams per page (1-100, default 50) | |
| orgId | Yes | Organization ID | |
| offset | No | Number of teams to skip | |
| search | No | Filter teams by name (case-insensitive substring match) | |
| sortBy | No | Sort order: createdAt (newest first, default) or name (alphabetical) | createdAt |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is known. The description adds valuable context by noting that the response includes the user's membership and role in each team, and that the organization must be one the user belongs to, implying an authorization requirement. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that is front-loaded with the primary purpose ('List teams belonging to an organization') and immediately adds the membership/role qualifier. There is no redundant or filler content; 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 read-only list operation with rich schema descriptions and safety annotations, the description is nearly complete. It clarifies the org membership requirement and the inclusion of membership/role in results. However, given the presence of similar sibling tools like listMyTeams and the lack of an output schema, a brief note about pagination or a direct contrast with listMyTeams would have made it fully unambiguous. Overall, it is adequate but not exhaustive.
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 all parameters with descriptions (100% coverage), including limit, offset, search, and sortBy. The description adds semantic value to orgId by specifying that the organization must be one the user is a member of, which is not stated in the schema's simple 'Organization ID' description. This extra context justifies a score above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing teams belonging to an organization the user belongs to, and specifically mentions that membership and role are included. This differentiates it from siblings like listMyTeams, which likely lists teams across all organizations, and listMyOrganizations. The verb 'list' plus the resource 'teams' and the scope 'organization you are a member of' make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you need teams for a specific organization you belong to, and the required orgId parameter confirms this. However, it does not explicitly state alternatives or when not to use it, such as pointing to listMyTeams for cross-organization views or listMyOrganizations for org discovery. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPluginCatalogList Plugin CatalogARead-onlyIdempotentInspect
List plugins that can be referenced by name in a build's plugins array. Builds may also reference any public GitHub repository URL (https://github.com/owner/repo) as a plugin; those are not enumerated here.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds a key behavioral constraint: only named plugins are listed, not GitHub URLs. This is valuable context beyond the annotations, though it doesn't detail return format or pagination.
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 main purpose, and every sentence carries useful information. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless list tool with good annotations, the description is complete. It explains the scope, the distinction from GitHub URL plugins, and the context of the plugins array, making it sufficient for an agent to invoke 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 has zero parameters, and the schema fully reflects that (100% coverage). The description adds semantic meaning about what the list contains, which is helpful even without parameters. Baseline for 0 params is 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 clearly states the tool lists plugins that can be referenced by name in a build's plugins array, with a specific verb and resource. It also distinguishes itself from GitHub URL-based plugins, making the tool's scope 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 explains that GitHub repository URLs are not enumerated, providing context on what the tool does NOT cover. It implies when to use this tool (when you need the list of name-referenceable plugins) and clarifies a limitation, though it doesn't explicitly name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPulseDashboardConnectionsList Pulse Dashboard ConnectionsARead-onlyIdempotentInspect
List the connections (data sources) attached to a Duvo Pulse dashboard (creator only).
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond annotations by specifying that only the creator can perform this action, clarifying access control.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the action, resource, and access restriction with no wasted words. It earns its place and remains highly readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool, the description is largely complete: it states what is listed, the subject dashboard, and the creator-only constraint. It does not discuss output shape or error cases, but the tool's simplicity and annotations cover the essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies the artifactId is the identifier of a Duvo Pulse dashboard, but it does not explicitly map artifactId to the dashboard or clarify that it is not the connection ID. This is adequate but missing explicit parameter-role documentation.
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 resource ('connections / data sources attached to a Duvo Pulse dashboard'), clearly distinguishing it from siblings like listPulseDashboards and attachPulseDashboardConnection. The 'creator only' scoping adds further precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it lists connections for a Pulse dashboard and notes the creator-only restriction. It does not explicitly name alternatives or exclusion conditions, but the sibling tool names (attach/detach) make the usage context evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPulseDashboardMessagesList Pulse Dashboard MessagesARead-onlyIdempotentInspect
List the chat transcript of a Duvo Pulse dashboard's live version (requires edit access). Returns the most recent page by default, oldest first within the page; pass before (a message id from a previous page) to walk back through older messages. Messages from other version branches are not included.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of messages to return (1-500, default 50). | |
| before | No | Message id cursor: return the page of messages immediately older than this message. Omit for the most recent page. | |
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds meaningful behavioral context: the edit-access requirement, default page ordering (oldest first), pagination semantics with `before`, and the exclusion of other version branches. This goes well beyond annotation-provided facts.
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 tightly scoped sentences: first defines purpose and access, second explains pagination behavior, third states the version exclusion. No filler or repetition of schema details, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with good annotations, the description covers purpose, access, pagination, and scope. No output schema exists, so a mention of return fields could improve completeness, but it is not essential given the straightforward nature of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (limit and before have descriptions; artifactId doesn't). The description adds useful context for `before` (message id cursor from a previous page), but it does not explain the required artifactId parameter. It meets the baseline but does not fully compensate for the 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?
The description opens with a specific action ('List the chat transcript') and a clearly defined resource ('Duvo Pulse dashboard's live version'). It also distinguishes this tool from siblings like listPulseDashboardVersions by explicitly limiting scope to the live version and excluding other version branches.
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 (requires edit access), a key scope limitation (only live version, not other branches), and explains pagination usage ('pass before to walk back'). It does not explicitly name an alternative tool for other versions, so it just misses the bar for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPulseDashboardsList Pulse DashboardsARead-onlyIdempotentInspect
List your Duvo Pulse dashboards (live, agent-generated visualizations of your Duvo data), most recently updated first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results per page (1-100, default 20) | |
| scope | No | Which dashboards to return: 'created' (yours, the default), 'team' (published to your whole team by a teammate), or 'shared' (shared with you individually by a teammate). | created |
| offset | No | Number of results to skip |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful context about the nature of Pulse dashboards and the ordering, but it does not disclose additional behavioral traits such as pagination details or potential side effects, which are minor given the read-only nature.
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, compact sentence that conveys the core purpose and a key sorting detail. It contains no filler or redundant information, and the parenthetical adds value by explaining what Pulse dashboards are.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list tool with a fully documented schema and clear annotations, the description is nearly complete. It explains what is returned and the default ordering. The only minor gap is that the phrase 'your dashboards' could be misinterpreted as only dashboards created by the user, while the scope parameter also allows 'team' and 'shared' variants; however, the schema clarifies 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 description coverage is 100%, with each parameter (limit, scope, offset) fully described including defaults and enum values. The description does not add parameter-specific semantics beyond the schema, but it does give contextual meaning to 'your' dashboards and the ordering, which aligns with the default scope. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('Duvo Pulse dashboards'), with a clarifying parenthetical explaining what these are. It also distinguishes from sibling list tools by specifying 'dashboards' and the ordering ('most recently updated first').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need to list dashboards), but it does not explicitly mention alternatives or exclusions. For example, it does not say 'use getPulseDashboard for a single dashboard' or clarify when to choose this over listPulseDashboardVersions. The usage context is clear but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPulseDashboardVersionsList Pulse Dashboard VersionsARead-onlyIdempotentInspect
List the version history of a Duvo Pulse dashboard, newest first (requires edit access). Use the version id with the restore and version-render endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds beyond that: it discloses the ordering ('newest first') and a permission requirement ('requires edit access'). It also gives a practical hint about using the version id with other endpoints, which is additional 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 impressively concise: two sentences, no filler. The first sentence packs purpose, scope, ordering, and permission; the second adds actionable downstream guidance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one parameter, the description covers the essential elements: purpose, ordering, permission, and next steps. There is no output schema, but the concept of 'version history' implies a list of versions. A slightly richer description of the return values (e.g., containing timestamps or version numbers) would make it a 5, but it is complete enough for confident 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 has 0% description coverage for the single parameter artifactId. The description does not explicitly explain that artifactId refers to the dashboard's ID, but the name and format (uuid) make it fairly obvious. Still, the description could have compensated more by stating 'provide the dashboard's artifactId', so it only partially relies on schema naming.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List the version history of a Duvo Pulse dashboard'. It identifies the specific resource (Duvo Pulse dashboard), the action (list), and a key differentiator ('newest first'). It also mentions using the version id with restore and version-render endpoints, which helps distinguish it from related version-handling 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 provides useful context: it requires edit access, and it tells the agent to use the returned version id with restore and version-render endpoints. While it doesn't explicitly enumerate when not to use this tool or compare it to every sibling, the context is sufficient for typical use cases and implies this is for browsing version history rather than modifying it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listQueueAgentsList Queue AgentsARead-onlyIdempotentInspect
List agents bound to a queue as producers (agents that push cases into the queue) or consumers (agents triggered by cases in the queue).
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context by explaining the meaning of 'producers' and 'consumers,' which goes beyond the tool name and schema. It does not detail return format or pagination, but the role semantics are a meaningful addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action verb 'List' and clearly states the resource (agents bound to a queue) and the distinguishing details. Every word adds value with no 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?
The tool is simple with one well-documented parameter, no output schema, and annotations covering the safety profile. The description explains the two role types, making it sufficiently complete for an agent to understand what the tool does and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of queue_id as 'The queue's unique identifier.' The description does not need to repeat parameter details, and it does not add extra semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists agents bound to a queue, explicitly defining the two roles (producers and consumers). This distinguishes it from sibling tools like listAgents or listQueues, providing a specific verb, resource, and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you need to see agents bound to a queue categorized by role, but it does not explicitly state when to use it over alternatives or provide any exclusions. No sibling comparisons are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listQueueLabelsList Queue LabelsARead-onlyIdempotentInspect
List every label defined on a queue along with the count of cases each label is assigned to.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of labels per page (1-1000, default 1000). | |
| offset | No | Zero-based offset for pagination. | |
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the informative detail about counts of cases per label, but does not discuss pagination or error behavior. It adds some value beyond annotations without being 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?
A single, focused sentence expresses the tool's action and output content with zero unnecessary words. It is front-loaded with action and resource, making it scannable and 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?
For a simple read-only list operation with strong annotation coverage and a fully described schema (including pagination parameters), the description provides sufficient context: it states the scope (per queue) and the output (labels with counts). No output schema exists, but the description effectively conveys the expected return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter (queue_id, limit, offset) already described in the input schema. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'list' with a clear resource ('labels defined on a queue') and adds the counting detail ('count of cases each label is assigned to'). It clearly distinguishes from sibling tools like listQueues, listCaseLabels, or getQueue by specifying the queue-label context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys that this is for listing labels on a queue with counts, giving an unambiguous use context. It does not explicitly name alternatives or exclusions, but the purpose is specific enough that an agent can infer when to use it over similar list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listQueuesList QueuesCRead-onlyIdempotentInspect
List queues for your team.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of queues per page (1-250, default 250) | |
| offset | No | Number of queues to skip | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| automation_id | No | Only return queues belonging to this automation. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context beyond restating the team scope, which is already implied by authentication. It does not mention pagination behavior, return format, or ordering.
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 or redundant phrasing. It is front-loaded and wastes no words, which is ideal for conciseness even if it lacks depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four parameters including pagination controls, but the description gives no hint that pagination is relevant or what the response contains. With no output schema, the description should at least mention that the result is a paginated list. The one-sentence description is too sparse for the actual complexity of 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?
The input schema fully documents all four parameters (limit, offset, team_id, automation_id) with descriptions, so the schema carries the parameter explanation burden. The description adds no extra parameter details, but given 100% schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('queues'), so the primary purpose is unambiguous. However, it does not differentiate from sibling tools like listQueueAgents or listQueueLabels, and 'for your team' is vague about the exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of how it differs from getQueue or other list tools, nor any context about pagination or filtering that would help an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listRevisionIntegrationConnectionsList Revision Integration ConnectionsARead-onlyIdempotentInspect
List the connections you have pinned to this build's integration slot. Multi-pin is supported: you can pin multiple connections to the same slot.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID | |
| integration_id | Yes | Integration ID (catalog integration ID or slot ID from the list response) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful context about multi-pin support ('you can pin multiple connections to the same slot'), which helps interpret results. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly front-loaded with the primary purpose, and includes a useful domain-specific detail without wasting 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 operation with comprehensive annotations, a complete input schema, and no output schema, the description adequately covers the tool's purpose and a key behavioral nuance (multi-pin). The low complexity means no further details are necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, so the description does not need to explain them. The description adds no additional parameter semantics beyond the schema, justifying the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and identifies the resource as 'connections you have pinned to this build's integration slot', which clearly distinguishes it from sibling tools like listRevisionIntegrations and listConnections. The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it lists pinned connections for a specific build's integration slot, making obvious when to use it. It does not explicitly mention alternatives or exclusions, but the context is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listRevisionIntegrationQueuesList Revision Integration QueuesARead-onlyIdempotentInspect
List the queues linked to this build's case-queue integration slot. Only meaningful for case-queue-producer and case-queue-consumer integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID | |
| integration_id | Yes | Integration ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds behavioral context by specifying the integration-slot scope and the condition under which results are meaningful, going beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence. It front-loads the core function and then adds the key scoping constraint. No wasted words or redundancy with the title 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?
For a list tool with three clearly-schema'd parameters, good annotations, and no output schema, the description provides the essential scoping information. It could mention the return type (queues) but 'List the queues' already implies that. Overall it is sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters (agent_id, build_id, integration_id) with 100% coverage, so the description doesn't need to repeat parameter meanings. It provides no additional semantic detail beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the specific resource: 'queues linked to this build's case-queue integration slot.' It also scopes the tool to only case-queue-producer and case-queue-consumer integrations, distinguishing it from related list tools like listRevisionIntegrations and listRevisionIntegrationConnections.
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 'Only meaningful for case-queue-producer and case-queue-consumer integrations' explicitly tells the agent when this tool is applicable. It doesn't name alternative tools, but the constraint is clear and directional, which is strong guidance for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listRevisionIntegrationsList Revision IntegrationsARead-onlyIdempotentInspect
List integrations attached to an agent revision.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the scoping phrase 'attached to an agent revision' but provides no additional behavioral detail, such as return format, pagination, or prerequisites beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler. It front-loads the action and the key resource, making it easy to scan and immediately understandable.
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 list tool with complete schema descriptions and strong safety annotations, the description is sufficient. It clearly identifies the resource and scope. It does not describe return values or edge cases, but the low complexity and annotation coverage make this 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 100%: both agent_id and build_id have descriptions ('Agent ID', 'Build ID'). The tool description does not add further parameter-level meaning, so the schema carries the load and the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and the resource ('integrations attached to an agent revision'), making the tool's scope unambiguous. It also distinguishes this from the broader listIntegrations tool and from related tools like listRevisionIntegrationConnections and listRevisionIntegrationQueues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when you need integrations scoped to a specific agent revision—but it does not explicitly name alternatives or say when not to use it. Context from sibling tools suggests these distinctions, but the description itself provides no explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listRevisionLoginsList Revision LoginsARead-onlyIdempotentInspect
List logins attached to a specific revision (build) of an assignment. Returns metadata only — passwords and OTP secrets are never exposed.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | ||
| buildId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the bar is lower. The description adds valuable context by explicitly stating that passwords and OTP secrets are never exposed, which is a behavioral guarantee beyond the generic read-only annotation. It does not describe pagination or ordering, but this is a simple list 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 sentences, front-loaded with the action and resource, and includes a valuable safety caveat without extraneous detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with good annotations and no output schema, the description covers the core purpose and the redaction guarantee. However, it does not explain the relationship between the two required parameters or what metadata fields to expect, leaving some gaps for an agent to infer.
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 introduces the concept of 'revision (build)' but does not explicitly define what agentId or buildId represent or how they relate. The agentId parameter is not mentioned at all, leaving the agent scoping unclear.
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 clearly identifies the resource ('logins attached to a specific revision (build) of an assignment'). It distinguishes itself from sibling tools like attachRevisionLogin and listRevisionSecrets by explicitly focusing on logins and noting it returns metadata only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for reading logins on a revision, but it does not explicitly state when to use this tool versus alternatives such as listRevisionSecrets or detachRevisionLogin. There is no direct 'when to use' or 'when not to use' guidance, though the metadata-only note hints at its scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listRevisionSecretsList Revision SecretsARead-onlyIdempotentInspect
List env-var secrets attached to a specific revision (build) of an assignment. Returns metadata and env-var keys only — secret values are never exposed.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | ||
| buildId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context beyond these: it says returns only metadata and env-var keys, and that secret values are never exposed. This clarifies scope and security behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and contains no unnecessary wording. It efficiently conveys the operation and a key behavioral note.
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 operation with strong annotations, the description is largely complete. It mentions the return contents (metadata and keys only) and the non-exposure of values. However, without an output schema, it does not enumerate the exact metadata fields, which would add completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description needs to compensate. It explains the revision/build context but does not explicitly map agentId to the assignment and buildId to the revision. Parameter names are partially self-explanatory, but without explicit mapping, the semantics remain somewhat unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists env-var secrets attached to a specific revision (build) of an assignment. It uses a specific verb ('List') and resource ('env-var secrets'), and distinguishes itself from sibling tools like listSecrets (global) and attachRevisionSecret/detachRevisionSecret (mutations).
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: use this for secrets attached to a specific revision, not for all secrets globally. However, it does not explicitly name alternatives or state when not to use this tool, such as when needing secret values or when listing all secrets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listRunMessagesList Run MessagesARead-onlyIdempotentInspect
Get paginated messages for an agent run. Messages are returned in chronological order.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of messages per page (1-50, default 20) | |
| offset | No | Number of messages to skip | |
| run_id | Yes | The run's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral details: pagination and chronological ordering of messages. This goes beyond the structured annotations and clarifies the expected output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence states the purpose and resource, the second adds ordering detail. Highly scannable and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated read operation, the description, annotations, and fully documented schema are sufficient. The chronological order is disclosed, and no output schema is needed to explain return values for this straightforward list endpoint. It is complete for an agent to select and 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%, with all three parameters (limit, offset, run_id) fully documented including defaults and ranges. The description itself does not add parameter-specific semantics beyond indicating pagination, which is already implied by limit/offset. The schema does the heavy lifting here, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get paginated messages for an agent run.' It identifies the specific resource (messages) and scope (for an agent run). While it distinguishes itself from tools like getRun (which retrieves run metadata), it does not explicitly differentiate from the sibling listCaseRunRecentMessages, so it misses the full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you need all messages for a specific run in paginated chronological order, but it gives no explicit guidance on when to prefer this over alternatives like listCaseRunRecentMessages or getRun. It lacks a direct 'when to use / when not to use' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listRunsList RunsARead-onlyIdempotentInspect
List runs for the current team. Supports filtering by agent, user, queue, status, etc. Messages, evaluation data, and queue metadata are included where available. Set count_only=true to skip Run row selection and enrichment. The normal response shape is returned with data: [] and the matching total.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of runs per page (1-100, default 20) | |
| since | No | Return runs completed at or after this ISO-8601 timestamp. Runs that have not completed are excluded. | |
| until | No | Return runs completed before this ISO-8601 timestamp. The upper bound is exclusive. Runs that have not completed are excluded. | |
| offset | No | Number of runs to skip | |
| search | No | Full-text search across run titles and case titles | |
| source | No | Filter to runs created from this source (e.g. api, schedule) | |
| status | No | Filter to runs with this status | |
| sort_by | No | Field to sort by (default created_at) | created_at |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| user_id | No | Filter to runs owned by this user; non-superadmin callers are scoped to themselves regardless of this value | |
| agent_id | No | Filter to runs for this agent | |
| digest_id | No | ||
| count_only | No | Skip row selection and enrichment. The normal list response shape is returned with an empty row array and the matching total. | false |
| has_issues | No | If true, only return runs that have evaluation issues | |
| sort_order | No | Sort direction (default desc) | desc |
| automation_id | No | Filter to runs whose agent belongs to this automation | |
| case_queue_id | No | Filter to runs associated with this queue | |
| issue_severity | No | If set, only return runs whose latest successful evaluation has at least one failing rubric with this severity (critical | medium | low). Implies has_issues; legacy evaluations without severity companion fields do not match this filter. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent, and the description adds meaningful behavioral context: inclusion of messages, evaluation data, and queue metadata, and the count_only=true behavior that skips row selection/enrichment while returning the normal shape with data: []. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, and each sentence adds distinct information (scope+filtering, included data, count_only behavior). No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 18 parameters, no output schema, and rich annotations, the description covers the main behavioral surface: team scope, filter dimensions, included metadata, count_only shortcut, and response shape. It could mention pagination/offset but the schema handles that, so the description is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 94%, so the schema already documents the 18 parameters. The description adds no new parameter information beyond restating the count_only behavior, which the schema also covers. 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?
Description clearly states 'List runs for the current team' with a specific verb and resource, and enumerates filtering dimensions (agent, user, queue, status). It is distinct from siblings like listCaseRuns, though it does not explicitly call out the boundary (all team runs vs case-scoped runs), so it lacks explicit 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?
No explicit when/when-not guidance or alternative tool names are provided. The description implies usage for team-wide run listing with filters, but does not mention cases where listCaseRuns or getRun would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSandboxFilesList Sandbox FilesBRead-onlyIdempotentInspect
List files in a sandbox directory.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Directory to list files from (defaults to /workspace) | /workspace |
| sandbox_id | Yes | The sandbox's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds no additional behavioral context (e.g., pagination, output format), but it is consistent with 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 sentence with no redundancy. It is front-loaded with the action ('List') and the target ('files in a sandbox directory'), making it highly concise 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 simple list operation with two well-documented parameters and strong annotations, the description is largely complete. However, it does not describe the return format or pagination behavior, which, given the absence of an output schema, is a minor gap but not significant for this straightforward 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%: both path and sandbox_id have descriptive text. The description itself does not add parameter semantics beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('files in a sandbox directory'), clearly identifying the tool's function. It differentiates from the sibling 'listFiles' by specifying sandbox scope, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like listFiles or getFileContent. The description is purely functional and does not mention scenarios, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSecretsList SecretsARead-onlyIdempotentInspect
List env-var secrets visible to the caller — team-shared (user_id IS NULL) plus the caller's own personal entries. Returns metadata and env-var keys only; secret values are never exposed.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description goes beyond by stating that secret values are never exposed and that only metadata and keys are returned. This is a critical behavioral guarantee not present in 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 two sentences, front-loads the core action, and adds a concise security-focused second sentence. Every word earns its place with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description covers scope, return contents, and security. It omits pagination or sorting, but these are not critical for this tool's simplicity; still, a 4 acknowledges the slight 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 schema description covers the single optional parameter (team_id) with full detail, including fallback and rejection behavior. The tool description does not need to add parameter explanation, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'env-var secrets', and the exact scope (team-shared plus caller's personal entries). This distinguishes it from siblings like getSecret (single secret), listRevisionSecrets (revision-scoped), and deleteSecret.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what is returned and who can see which secrets, implying when to use it. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSkillAssignmentsList Skill AssignmentsARead-onlyIdempotentInspect
List the agents in the current team whose live build references the given skill. Used to warn users that editing a skill will affect every agent that uses it.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful context by specifying the scope ('current team') and the nuance that 'live build references' matter, plus the consequence that editing affects all referencing agents. This goes beyond the structured metadata without contradicting 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?
Two sentences, front-loaded with the action and resource, and the second sentence explains the purpose. No filler or repetition; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description adequately covers what, why, and scope. It lacks explicit return format details, but the phrase 'List the agents' sufficiently conveys the expected output shape for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter, skill_id, described as 'Skill ID.' The description refers to 'the given skill' but adds no additional semantic detail beyond the schema. With full schema coverage, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('List') and resource ('agents in the current team whose live build references the given skill'), which differentiates it from sibling tools like listAgents or listSkills. It also explains the purpose (warning users about editing a skill's impact), making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Used to warn users that editing a skill will affect every agent that uses it.' This gives actionable context for when to invoke the tool, though it does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSkillFilesList Skill FilesARead-onlyIdempotentInspect
List all files in a skill.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds no additional behavioral context (e.g., return format, pagination, ordering), but it does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise, front-loaded sentence that states the action and scope without waste. 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?
Tool is simple with one parameter and read-only annotations, but there is no output schema to describe the return format. The description is adequate for basic understanding but leaves ambiguity about what 'files' includes (e.g., subdirectories, metadata) and pagination 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% for the single skill_id parameter with type and description. The description's 'in a skill' loosely maps to the parameter but adds no new meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all files in a skill' uses a specific verb ('List') and resource ('files in a skill'), clearly distinguishing it from sibling tools like listFiles or listSkillRevisionFiles by scope. The 'all' qualifier clarifies it returns the complete set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as listSkillRevisionFiles or listFiles. The description only states what it does without exclusions or mention of alternative tools for other file-listing scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSkillRevisionFilesList Skill Revision FilesARead-onlyIdempotentInspect
List the files in a skill revision, one page at a time. When has_more is true, pass next_cursor back as cursor to fetch the next page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of files to return per page (1-1000, default 100) | |
| cursor | No | Opaque continuation token from a previous response's `next_cursor`. Omit for the first page. | |
| skill_revision_id | Yes | Skill revision ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description does not need to restate safety. It adds valuable behavioral context about pagination (has_more/next_cursor), which is not covered by annotations or schema.
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, followed by a concise, actionable pagination note. No wasted words or redundant 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?
The tool's behavior is fully covered for a simple listing operation: pagination mechanism specified, and the schema/annotations cover parameters and safety. No output schema exists, but the response structure (files, has_more, next_cursor) is implied by the pagination note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters (limit, cursor, skill_revision_id). The description does not add parameter-level meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('files in a skill revision'), clearly distinguishing it from siblings like listSkillFiles (files in a skill) and listSkillRevisions (revision metadata). The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit pagination usage instructions (use `next_cursor` as `cursor` when `has_more` is true), which is critical for this tool. It does not explicitly name alternatives or exclusions, but the context makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSkillRevisionsList Skill RevisionsARead-onlyIdempotentInspect
List a skill's version history. Each revision is a snapshot of the skill's files; at most one is active (live) at a time, plus at most one open draft.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of revisions per page (1-100, default 20) | |
| offset | No | Number of revisions to skip | |
| skill_id | Yes | Skill ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral context beyond annotations: each revision is a snapshot, and there is at most one active (live) revision plus at most one open draft. This helps the agent understand the data model without overrepeating annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences, front-loaded with the primary purpose, and every clause adds meaning. No fluff or redundancy with the 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?
For a straightforward paginated list tool with no output schema, the description explains the core domain concept (revision snapshots, active/draft) and is sufficient given the schema and annotations. It does not describe return format or ordering, but those are not essential for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters (skill_id, limit, offset) with descriptions, so schema coverage is 100%. The description does not add any parameter-specific meaning beyond the schema, so it meets the baseline but does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List a skill's version history.' It identifies the resource (skill revisions) and the action (list), and adds a distinguishing detail about snapshots and the active/draft model. This differentiates it from sibling tools like listAgentRevisions or getRevision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to view a skill's version history) and provides useful domain context about revisions being snapshots with an active and a draft. However, it does not explicitly name alternatives or state when not to use this tool versus other list/get revision tools, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSkillsList SkillsARead-onlyIdempotentInspect
List all skills for the current team, including system skills.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context about scope ('current team') and content ('including system skills'), but does not disclose return format or pagination. This is similar to the TDQS 4.3 example where annotations carry safety info.
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 entire description is a single clear sentence with no wasted words. It is highly concise and immediately communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with one optional parameter and no output schema. The description covers what is listed and the scope. It does not mention return values, but given the low complexity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself provides detailed explanation of team_id (including fallback and OAuth behavior). The description adds no parameter-specific information, so it does not exceed the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and clearly names the resource ('skills') with scope ('for the current team') and inclusion ('including system skills'). This distinguishes it from siblings like listSystemSkills and listSkillAssignments.
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 clear context that this lists all skills for the current team, including system skills, which implies when to use it. However, it does not explicitly mention alternatives or conditions for exclusion, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSystemSkillsList System SkillsARead-onlyIdempotentInspect
List all system skills (skills available to all teams).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint, idempotentHint, and destructiveHint. The description adds no further behavioral context such as permissions, pagination, or output structure, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is precise and front-loaded, with no filler words. It fully conveys the tool's purpose in an efficient manner.
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, zero-parameter list operation, the description is complete. It defines the scope of the result and requires no additional context; annotations cover the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema covers everything and the description does not need to add parameter semantics. The baseline for zero-parameter tools is 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 clearly states the tool lists system skills and defines them as 'skills available to all teams', making the purpose unambiguous. This distinguishes it from sibling tools like listSkills.
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 by defining what system skills are, implying when to use this tool. It does not explicitly mention alternatives or exclusions, but the scope is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listTeamInvitesList Team InvitesARead-onlyIdempotentInspect
List a team's pending invitations — everyone invited who has not yet accepted or declined. Pass processId to list the pending invitations for a single Clarity process instead.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| processId | No | List the pending invitations for this Clarity process instead of the team's own invitations. Requires the process creator or a team admin. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context by defining what counts as 'pending' and explaining the process-scoped alternative, which goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose and a concise alternative usage. No wasted words; 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 read-only listing tool with robust annotations, the description fully explains the default behavior, the process-scoped variant, and the meaning of 'pending'. No pagination or return details are necessary given the simplicity.
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 already include detailed descriptions. The prose adds the `processId` alternative, but it largely restates what the schema already conveys, so the added value is marginal.
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 resource ('team's pending invitations'), clearly distinguishing it from invite creation/deletion tools. It also defines the scope precisely as those who have not yet accepted or declined.
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 the tool's purpose and provides an explicit alternative mode via `processId`. It does not explicitly contrast with sibling tools like `createTeamInvite` or `bulkCreateTeamInvites`, but the context makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listTeamMembersList Team MembersARead-onlyIdempotentInspect
List members of a team. The authenticated session or API key must be scoped to the requested team.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of members per page (1-100, default 50) | |
| offset | No | Number of members to skip | |
| search | No | Optional case-insensitive name or email search | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds the auth scoping constraint but does not mention pagination behavior or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that is front-loaded and without 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 read-only list operation with full schema descriptions and safety annotations, the description is adequate. It lacks explicit mention of paginated response, but the schema covers parameter semantics and the annotations cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (limit, offset, search, team_id) already described clearly. The tool description adds no additional parameter semantics 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 states 'List members of a team' with a specific verb and resource, clearly distinguishing it from sibling list tools like listMyTeams or listTeamInvites.
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 guidance on when to use versus alternatives. The authentication note is a prerequisite, not a usage guide. Usage is implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markAllNotificationsReadMark All Notifications ReadAIdempotentInspect
Mark all notifications as read for the authenticated user's current team. Returns the count of notifications that were updated. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotent, non-destructive), the description adds the return count and the 404 failure mode when the feature is disabled. It also clarifies that it operates on the user's current team, which is useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and scope, then return value, then prerequisite/error. Every sentence is essential and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with a single optional parameter, the description covers action, scope, return value, and a key error condition. The absence of an output schema is compensated by mentioning the return count.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of the single parameter (team_id) with a detailed explanation of its optionality and auth behavior. The description adds no new parameter-specific meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely states the action ('mark all notifications as read'), the scope ('for the authenticated user's current team'), and the return value. It clearly distinguishes from sibling tools like markNotificationRead (single) and markNotificationBatchRead (selected batch).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to mark all notifications read) and provides a prerequisite (Notification Center feature). It does not explicitly name alternatives, but the contrast with single/batch siblings is evident from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markNotificationBatchReadMark Notification Batch ReadAIdempotentInspect
Mark every unread live member of a notification batch as read for the authenticated user. Pass types to narrow the mark-read to those member types, and severity (exact) or minSeverity (threshold, mutually exclusive with severity) to narrow it by urgency — e.g. the page's active filters; omit them to mark every live member. Narrowing matters when the batch card was rendered under a filter: the rows marked read should be the rows the card counted. Returns the count of members that were updated. Requires the Notification Center feature; returns 404 when it is not enabled for the team or the batch does not exist or belongs to another recipient/team.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The notification batch's unique identifier | |
| types | No | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| severity | No | ||
| minSeverity | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation indicates readOnly=false, idempotent=true, destructive=false. The description expands on this by specifying that only 'unread live members' are affected, returning the count of updated members, and detailing error conditions (404 when feature disabled, batch missing, or belonging to another). It adds scope and error behavior 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 front-loaded with the core action, then progresses to parameter usage, return value, and requirements. It is moderately long but each sentence contributes necessary context, 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?
For a tool with 5 parameters, no output schema, and moderate complexity, the description covers all parameters, the return value, and error conditions. It omits a definition of 'live member' but that is likely a domain concept. The description is complete for the agent 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?
Schema description coverage is only 40% (id and team_id have descriptions). The description compensates by explaining the semantic roles of types, severity, minSeverity, and their mutual exclusion, plus the behavior when omitted (mark all live members). This adds meaningful guidance beyond 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?
The description clearly states the action: 'Mark every unread live member of a notification batch as read for the authenticated user.' It specifies the verb (mark), resource (notification batch), and scope (unread live members). However, it does not explicitly differentiate from sibling tools like markAllNotificationsRead or markNotificationRead; the distinction is implicit via 'batch' and 'live member' rather than explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use filtering parameters: 'Narrowing matters when the batch card was rendered under a filter: the rows marked read should be the rows the card counted.' It explains parameter usage (types, severity, minSeverity) and when to omit them, but does not explicitly state when to use this tool instead of single-notification or global-mark alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markNotificationReadMark Notification ReadAIdempotentInspect
Mark a notification as read for the authenticated user. Idempotent — calling it again on an already-read notification still returns success. Requires the Notification Center feature; returns 404 when it is not enabled for the team.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The notification's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and readOnlyHint=false, but the description adds specific behavioral details: repeated calls on already-read notifications succeed, and the 404 response when Notification Center is disabled. This goes beyond the annotation hints and gives useful operational 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 with no redundancy. The first sentence states the core purpose, the second adds idempotency and error condition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers purpose, idempotency, and feature dependency. It gives the agent enough information to select and invoke the tool correctly without ambiguity.
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 fully documents the single parameter 'id' with a clear description, and the tool description does not add further parameter-level detail. Since schema coverage is 100%, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark a notification as read'), the target ('for the authenticated user'), and distinguishes from sibling tools by focusing on a single notification. The sibling list includes markAllNotificationsRead and markNotificationBatchRead, making the single-notification scope 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?
Provides clear context: it marks a single notification as read and is idempotent. It also notes the Notification Center feature requirement and the 404 error when disabled, giving the agent precondition knowledge. However, it does not explicitly contrast with alternatives like markAllNotificationsRead or markNotificationBatchRead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moveAgentMove AgentAInspect
Move an agent (and its connected workspace) to a different team. Pass dry_run=true to preview the closure without applying changes.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | When true, preview the closure and warnings without applying any changes. | |
| agent_id | Yes | The ID of the agent to move. | |
| target_team_id | Yes | The ID of the team to move the agent into. | |
| bypass_standalone_gate | No | When true, move the agent together with every connected queue, trigger, and handover peer instead of rejecting a non-standalone agent. Defaults to false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) provide little safety context, so the description carries the burden. It mentions moving the connected workspace and previewing 'closure' but doesn't explain what closure does, side effects, or that it may reject non-standalone agents unless bypass_standalone_gate is set. Some behavioral info exists but is 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 two concise sentences. It front-loads the primary action and then provides the crucial dry_run preview note. 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 mutation tool with 4 params and no output schema, the description covers the core action and the dry_run option, but leaves gaps: what 'closure' means, the standalone gate behavior, and the full scope of consequences. The param descriptions partially compensate, but the main description doesn't provide complete operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents dry_run, agent_id, target_team_id, and bypass_standalone_gate. The description only adds context about the connected workspace, which isn't a parameter-level nuance. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Move'), resource ('an agent'), and target ('to a different team'), clearly distinguishing this from siblings like moveAgentsToFolder (which moves agents to a folder) and movePulseDashboard. It also adds scope ('and its connected workspace') which uniquely identifies this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool (moving an agent to another team) and explicitly instructs to pass dry_run=true to preview closure without applying changes. It doesn't mention alternatives or exclusions, but the primary use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moveAgentsToFolderMove Agents To FolderAInspect
Move one or more agents (assignments) into a folder, or to the root level.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| agent_ids | Yes | IDs of the agents (assignments) to move. Must be unique. | |
| folder_id | Yes | Destination folder ID. Pass null to move the agents to the root level. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given annotations already declare this as a non-read-only operation, the description adds the clarification that agents are '(assignments)' and that moving to root is possible via null folder. However, it doesn't disclose potential side effects, partial-failure behavior, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the action and includes the essential scope and destination. No redundant 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?
The tool is simple with detailed schema and annotations, but the description lacks usage context and fails to differentiate from the sibling 'moveAgent'. For a mutating tool, it could mention what happens on conflict or error, but the core functionality is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are fully documented in the schema. The description's mention of 'one or more' aligns with agent_ids minItems and 'root level' aligns with folder_id null, but adds no additional meaning 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 uses the specific verb 'move' and identifies the resource as 'one or more agents (assignments)' and the destination as 'a folder, or to the root level'. It distinguishes from the sibling 'moveAgent' by indicating batch operation and folder destination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'moveAgent' or 'updateAgentFolder'. It doesn't state prerequisites, exclusions, or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moveClarityProcessesToFolderMove Clarity Processes To FolderAInspect
Move processes into a folder (or back to Unfiled)
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| folderId | Yes | Destination folder ID, or null to move back to Unfiled. | |
| processIds | Yes | Clarity process IDs to move. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds that processes can be moved to Unfiled (by passing null folderId), which is a key behavioral trait. However, it does not disclose side effects (e.g., whether processes are automatically unassigned from users upon moving, or if previous folder associations are lost), nor does it explain what happens to the process's position in the folder. With destructiveHint=false, the agent might assume no data loss, but the description could be more transparent about changes to process organization state.
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, short sentence that front-loads the core action and destination options. 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?
Given the tool has 3 parameters with full schema coverage, no output schema, and no nested objects, the description is adequate but not complete. It explains the core action and the Unfiled option (via null folderId), but it does not explain the result of the operation (e.g., what happens to process ordering, whether a confirmation is returned, or if the process disappears from its previous folder immediately). With no output schema, more behavioral context would help the agent understand the outcome.
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 (team_id, folderId, processIds) have detailed descriptions in the input schema with 100% coverage, explaining UUID formats, fallback behavior, and special values like null for Unfiled. The description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Move processes into a folder (or back to Unfiled)' clearly states the verb ('move'), resource ('processes'), and destination ('folder' or 'Unfiled'). It distinguishes well from sibling tools like moveAgent or movePulseDashboard which move 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 usage context: moving processes to a folder or back to Unfiled. However, it does not explicitly state when to use this tool versus alternatives like setupClarityFoldersFromLandscape, reorderClarityFolders, or fileSuggestedClarityProcesses. Some implicit guidance is present but no direct exclusion or comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
movePulseDashboardMove Pulse DashboardAInspect
Move a Pulse dashboard from the team in the URL to another team, keeping only its latest revision (chat history and older revisions are deleted). The caller must be a Manager or above on both teams. Pass dryRun=true to preview which Connections reconnect vs drop without applying changes.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | When true, only previews the move: reports which Connections would reconnect vs drop without changing anything. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| artifactId | Yes | ||
| targetTeamId | Yes | ID of the destination team the dashboard moves to. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that older revisions and chat history are deleted, which directly contradicts the annotations' destructiveHint=false. This is a clear annotation contradiction, and the mixed signals reduce trust in the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and front-loaded with the core action, followed by critical details (deletion, permissions, dryRun) without unnecessary elaboration. 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?
The description covers permissions, destructive behavior, and the dryRun preview option, which are essential for safe use. However, it lacks information about the return value/format, especially what dryRun returns or how the move result is communicated, which matters since no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 75% of parameters with descriptions, and the tool description adds meaningful context for dryRun (preview reconnect vs drop) and implicitly clarifies the source/destination roles of team_id and targetTeamId. However, artifactId is undocumented in both the description and the schema, and the description does not fully compensate for the param semantics gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool moves a Pulse dashboard between teams, specifies the source as 'the team in the URL', and notes the key behavior of keeping only the latest revision. It distinguishes itself from sibling tools like duplicatePulseDashboard by emphasizing the move action and the deletion of older revisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (moving a dashboard to another team) and includes caller requirements (Manager or above on both teams) and guidance for using dryRun to preview effects. However, it does not explicitly contrast with alternatives such as duplicatePulseDashboard or deletePulseDashboard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
organizeClarityProcessLandscapeOrganize Clarity Process LandscapeAInspect
Start an asynchronous organization pass over the organization's unfiled processes, placing them into the Process Landscape where possible (organization admin+). Results appear progressively; started is false when there is nothing to organize.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| instructions | No | Deprecated: ignored. The organize pass takes no instructions. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds valuable behavioral context: the operation is asynchronous, results appear progressively, and the 'started' field is false when nothing to organize. This goes beyond annotations without contradicting them. However, it does not describe what happens to processes that cannot be placed or how to track the operation's completion.
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, each earning its place. The first sentence states the action, scope, and permission. The second adds critical behavioral details (async, progressive results, started flag). No wasted words or redundant 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?
Given the tool's asynchronous nature and no output schema, the description covers the essential operational behavior (async, progressive, started flag). It lacks details on the full return structure, error handling, or how to poll for completion, but these are reasonable gaps for a tool that likely returns a status object. The description is nearly complete for its 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 50% (one of two parameters has a description). The description adds no extra meaning to the orgId parameter beyond the schema's format/pattern; it only implies a permission requirement. The instructions parameter is deprecated and ignored, so no value needed. The description does not compensate for the lack of parameter-specific details, meeting the baseline for moderate 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-resource pair ('organize' + 'Clarity Process Landscape') and clearly defines the scope: 'unfiled processes' placed into the landscape. It distinguishes itself from siblings like 'generateClarityProcessLandscape' (which likely creates the landscape structure) and 'proposeClarityLandscapeProcess' (which proposes a single process) by specifying the bulk, asynchronous organization of unfiled items.
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 the permission requirement ('organization admin+') and the asynchronous nature with progressive results. It implies the tool is used when there are unfiled processes to organize, but does not provide explicit when-not or alternative tools (e.g., 'fileSuggestedClarityProcesses' for individual suggestions). The context is clear but lacks direct exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinRevisionIntegrationConnectionPin Revision Integration ConnectionAInspect
Pin one of your connections (from GET /v2/teams/:team_id/connections) to this build's integration slot. Multi-pin is supported: a single user can pin multiple connections to the same slot.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID | |
| connection_id | Yes | ID of one of your connections (from GET /v2/teams/:team_id/connections) to pin to this slot | |
| integration_id | Yes | Integration ID (catalog integration ID or slot ID from the list response) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, and non-destructive behavior. The description adds useful context beyond annotations: multi-pin is supported (a single user can pin multiple connections to the same slot) and the connection must come from the listed GET endpoint. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states the action and target; the second adds a key behavioral detail (multi-pin). Excellent structure and 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?
The description, combined with full schema coverage, provides enough context for an agent: what resource to pin, where to pin it, and the source of valid connections. It does not explain return values or errors, but there is no output schema and the operation is straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all four parameters described, including the nuance that integration_id can be a catalog ID or slot ID. The description echoes the source endpoint for connection_id but adds no new parameter-level semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Pin') and clearly identifies the resource: 'one of your connections ... to this build's integration slot'. It references the source endpoint (GET /v2/teams/:team_id/connections), which distinguishes it from sibling tools like unpinRevisionIntegrationConnection.
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 by noting that the operation pins a connection obtained from a specific endpoint to a build's integration slot. It does not explicitly list alternatives or exclusions, but the context is sufficient to infer when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postprocessClaritySnapshotPostprocess Clarity SnapshotAInspect
Re-run postprocessing agents on an existing v2 clarity snapshot. Targets either the current-process snapshot or the transformation-proposal snapshot, identified by id in the body. Flips the process status to generating and returns 202 immediately; agents run asynchronously and flip the status back to review once they settle.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | The snapshot kind to post-process. | |
| process_id | Yes | The clarity process id | |
| current_process_id | No | Required when type is `current_process`. | |
| transformation_proposal_id | No | Required when type is `transformation_proposal`. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutation (readOnlyHint false) and non-idempotent (idempotentHint false). The description adds valuable behavioral context: it flips status to 'generating', returns 202 immediately, and runs agents asynchronously before flipping back to 'review'. This explains the lifecycle and async nature, which the annotations alone do not cover. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying essential information: purpose, target types, and behavioral flow (status changes, async, immediate return). No redundancy or filler. Ideas are front-loaded: the first sentence is the most critical for intent. Perfectly efficient for the complexity involved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, target types, and key behavioral traits, but misses details about how to track the async process (e.g., response body, if any, or polling mechanism). It also glosses over the conditional id requirement ('identified by id in the body' is vague relative to the schema's conditional fields). Given the tool's moderate complexity (4 params, async, no output schema), these gaps lower completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all four parameters described. The description adds no new parameter-level details beyond the schema; it merely reiterates that the tool targets two snapshot kinds 'identified by id in the body'. This is consistent with the schema's conditional requirements but does not explain, for example, that type determines which id field is needed. 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 'Re-run postprocessing agents on an existing v2 clarity snapshot' – a specific verb+resource combination. It distinguishes from related tools like generateClarityProcessSnapshot (which creates new snapshots) by emphasizing the 're-run' and 'existing' aspects. The two target snapshot types are explicitly listed, leaving no ambiguity about what the tool acts 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?
The description provides context about when to use it (to re-run agents on existing snapshots of two specific types) but does not offer explicit when-not-to-use guidance or compare with sibling tools. For example, it doesn't mention that 'generateClarityProcessSnapshot' should be used to create a fresh snapshot instead. This leaves the agent without clear decision criteria against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postRunMessagePost Run MessageAInspect
Post a message to an agent run. This will persist the message and resume the agent execution if the run is in a resumable state (waiting, completed, or interrupted).
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | The run's unique identifier | |
| message | Yes | The message content to send to the agent |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-idempotent, non-destructive operation. The description adds behavioral value by explaining the persistence and conditional resumption of the run, which is beyond what the annotations provide. It does not cover error handling or auth, but the additional context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, front-loaded with the main action, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description covers the primary action and side effects (persist, resume). It does not explain return values or error scenarios, but given the simplicity, the information is largely sufficient 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% with descriptions for both run_id and message. The description does not add extra parameter-level detail beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool posts a message to an agent run, using a specific verb and resource. It also distinguishes this from sibling tools like sendPulseDashboardMessage by referencing 'agent run' specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides useful context by noting that the message persists and resumes execution if the run is in a resumable state (waiting, completed, or interrupted). This implies when to use it, but does not explicitly mention alternatives or when not to use it beyond the resumable-state caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
previewAgentCaseTriggerConflictsPreview Agent Case Trigger ConflictsARead-onlyIdempotentInspect
Preview which other agents would conflict with this agent's case trigger if it pointed at the given queue. Does not modify the trigger.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent's unique identifier | |
| case_queue_id | Yes | The queue to check for conflicts against |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context beyond these: it clarifies the hypothetical nature ('if it pointed at the given queue') and reinforces non-modification ('Does not modify the trigger'). It does not detail the output format, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, and no extraneous words. The second sentence efficiently clarifies the read-only nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no nested objects, no output schema), the description fully covers the purpose, the scenario, and side-effect-free behavior. It is complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both agent_id and case_queue_id. The description refers to 'this agent's case trigger' and 'given queue,' linking to the parameters, but it adds minimal new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Preview' and identifies the exact resource: 'which other agents would conflict with this agent's case trigger if it pointed at the given queue.' This clearly distinguishes it from sibling tools like createAgentCaseTrigger or updateAgentCaseTrigger that mutate triggers.
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 use when considering repointing a case trigger to a queue, but it does not explicitly state when to use it or name alternative tools. The phrase 'Does not modify the trigger' provides an exclusion of side effects but no direct comparison to related update/create tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probeMcpServerProbe an MCP server for available toolsAInspect
Probe an MCP server URL and list the tools it exposes. Useful as a dry-run before creating a connection — verifies the URL is reachable, that authentication headers (if any) are correct, and surfaces the tool catalog. Performs no writes; sits alongside /v2/teams/:team_id/connections/oauth/mcp/check (which probes the same URL for OAuth support).
| Name | Required | Description | Default |
|---|---|---|---|
| headers | No | Optional HTTP headers for authentication (raw server_url mode only) | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| server_url | No | Raw MCP server URL to probe (for custom MCP servers) | |
| integration_slug | No | Catalog integration slug. The backend resolves the MCP server URL and dummy auth headers server-side — no server_url or headers needed. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation Contradiction: The description explicitly states 'Performs no writes', but annotations declare readOnlyHint=false. This is a direct conflict about whether the tool mutates state. The description also adds some behavioral context (verifies reachability/auth), but the contradiction undermines trust and forces a score of 1 per the rubric.
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 main purpose, then supporting use case and a sibling pointer. No fluff or repetition of schema 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 simple probe tool with no output schema, the description covers purpose, use case, safety claim, and sibling alternative. It's largely complete for selection and invocation, but the annotation contradiction creates a credibility gap. Still, given the schema richness, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for all four parameters (headers, team_id, server_url, integration_slug) with 100% coverage. The description adds little beyond schema content—mentions auth headers and URL reachability but no new parameter semantics. Baseline 3 applies because the schema carries the burden.
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: 'Probe an MCP server URL and list the tools it exposes.' It clearly distinguishes this from the sibling OAuth check by naming the alternative endpoint and its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool ('useful as a dry-run before creating a connection') and what it verifies (reachability, auth headers, tool catalog). It also mentions the OAuth check alternative, providing sibling differentiation. However, it doesn't explicitly state when not to use this tool versus the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promoteClarityProcessSnapshotPromote Clarity Process SnapshotCInspect
Promote a draft or historic Clarity v2 snapshot to live for its kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Snapshot kind to list | |
| process_id | Yes | The clarity process id | |
| snapshot_id | Yes | Snapshot id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating but non-destructive operation (destructiveHint: false). The description adds no further behavioral context—such as whether existing live snapshots are replaced, whether the draft is deleted, or if the promotion is reversible. Given the presence of annotations, the description's contribution is minimal.
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 of 12 words with no wasted text. It efficiently states the action and the resource. However, its conciseness comes at the cost of missing essential usage and behavioral details that could be added without becoming verbose.
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 lack of an output schema and the presence of many sibling snapshot tools, the description is insufficiently complete. It does not explain the effect on the source snapshot, what 'live' means, or how the agent should handle potential errors or prerequisites. The agent lacks enough context to use this tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The tool description does not elaborate on parameter meanings or relationships. While the schema covers the basics, the description misses an opportunity to clarify that 'kind' must be one of the two enum values and how they affect promotion. Baseline of 3 is appropriate as 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 uses a specific verb 'promote' and identifies the resource as 'draft or historic Clarity v2 snapshot' with a target state 'live'. It distinguishes from sibling snapshot tools like generate, save, or revert by implying a state transition, though it does not explicitly contrast 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?
The description provides no guidance on when to use this tool versus alternatives like saveClarityProcessSnapshot, revertClarityProcessSnapshot, or generateClarityProcessSnapshot. No prerequisites, exclusions, or context are given, leaving the agent to infer the appropriate usage 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.
promoteRevisionPromote RevisionAInspect
Promote a draft or historic revision to the live version. The live revision is the one used by triggers and new runs. Fails if the revision is already live, or if a draft revision still has an active builder run.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | The build's unique identifier | |
| revision_name | No | Optional display name to set on the promoted revision. | |
| revision_description | No | Optional description for the promoted revision. Pass null to clear an existing description. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutation (readOnlyHint false) and non-idempotence. The description adds valuable behavior: it promotes a revision to live, defines the live revision's significance, and discloses two failure scenarios (already live, or draft with active builder run). This goes beyond the basic annotation flags.
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 primary action, and each sentence adds meaningful detail. There is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately covers the tool's purpose, effect, and key failure conditions. It does not mention reversibility or what happens to the previous live revision, but that is not essential for invoking the tool correctly. It feels complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully described in the input schema. The description does not add extra meaning beyond what the schema already provides, but it does not need to because of the high coverage. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb (Promote) and clearly identifies the resource (draft or historic revision) and target state (live version). It also distinguishes from the sibling tool promoteSkillRevision by focusing on build revisions, and explains what 'live' means (used by triggers and new 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?
The description clearly implies when to use this tool: when you need to make a draft or historic revision live. It provides context about the live revision's role and failure conditions, but does not explicitly name alternatives or say when not to use it, which keeps it a step below full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promoteSkillRevisionPromote Skill RevisionAIdempotentInspect
Make a skill revision the active (live) one. The previously active revision becomes historic and can be re-activated later. Idempotent: promoting the already-active revision succeeds rather than erroring, and still applies any revision_name / revision_description supplied in the body.
| Name | Required | Description | Default |
|---|---|---|---|
| revision_name | No | Optional display name to set on the promoted revision. | |
| skill_revision_id | Yes | Skill revision ID. | |
| revision_description | No | Optional description for the promoted revision. Pass null to clear an existing description. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint annotation, the description discloses key state transitions: the previously active revision becomes historic and can be re-activated later, and even a no-op promotion still applies supplied revision_name/revision_description. This meaningfully enriches the annotation with specific side-effect details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states purpose, the second covers idempotency and side effects. There is no filler or repetition, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool, the description covers purpose, state changes, and edge-case behavior effectively, aided by a thorough schema and relevant annotations. It does not mention return values or permissions, but those are less critical here given the straightforward operation and lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, so the schema already documents their meaning. The description only references revision_name and revision_description in the context of idempotent behavior, adding no new parameter-level semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('Make') and resource ('skill revision'), states the outcome (active/live), and explains that the previously active revision becomes historic. This clearly identifies the tool's unique role among siblings like promoteRevision or createSkillRevision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this when you want a skill revision to become the active/live version. It does not explicitly name alternative tools or exclusions, but the scope and behavioral caveats give sufficient guidance for when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proposeClarityLandscapeProcessPropose Clarity Landscape ProcessAInspect
Create a manual process in the organization's Process Landscape, either as an unassigned proposal or atomically assigned to an eligible team.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| orgId | Yes | ||
| teamId | No | ||
| parentId | No | ||
| description | No | One short paragraph (1-3 sentences) saying why this process belongs in the landscape. Use only what you saw in the captures. Say what the process is (don't just repeat the name), show proof it really happens, and name where you heard it - be as specific as the captures allow, like "a warehouse lead said so in their interview" or "it came up in two returns recordings". Use only facts from the captures: never make up sources, people, dates, quotes, or numbers, and don't stretch what was said. If you have no real proof the process happens, don't propose it. | |
| materializationMode | No | Use "proposal" to record a process the organization plausibly needs, owned by `teamId` for review, WITHOUT creating a real process record. `teamId` is then required. Chat-scoped discovery agents may use proposal mode for their pinned team; direct human and API callers require Manager-or-above authority for that team. A proposal is idempotent: an equivalent live proposal under the same parent is returned untouched rather than duplicated. Defaults to "auto", which materializes a real process when `teamId` is set — except in a landscape-onboarding chat, which may only propose, and so defaults to "proposal". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The materializationMode schema description discloses substantial behavior beyond the three sparse annotations: proposal mode creates no real process record, proposals are idempotent ('returned untouched rather than duplicated'), authority requirements vary by caller type, and defaults shift in onboarding chats. This adds genuine context that the annotations (readOnly=false, idempotent=false, destructive=false) do not provide. The write semantics align with readOnlyHint=false; the proposal-level idempotency nuance does not contradict the tool-level idempotentHint=false, so no contradiction is flagged.
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 main description is a single front-loaded sentence that wastes no words. The two long parameter descriptions are dense but each sentence carries operational meaning (mode semantics, authority levels, idempotency, anti-fabrication guardrails). The materializationMode text could be restructured for easier parsing, but nothing is 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?
With no output schema and only three boolean annotations, the description carries most of the burden, and it covers the mode/authority/idempotency story well. However, meaningful gaps remain for a creation tool in a complex domain: what makes a team 'eligible,' what `parentId` refers to, and what the tool returns (the created proposal/process) are all unaddressed.
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% (2 of 6 params described), but the two hardest params carry rich semantics: `description` gets detailed sourcing/anti-fabrication guidance, and `materializationMode` explains its enum values, defaults, and authority implications. `teamId` is contextualized in the materializationMode text as the owner-for-review, and `name`/`orgId` are inferable from the tool's purpose, leaving only `parentId` meaningfully 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+resource ('Create a manual process in the organization's Process Landscape') and immediately distinguishes the two operating modes: unassigned proposal vs. atomically assigned to an eligible team. It partially differentiates from siblings like createClarityProcess and addClarityLandscapeNodePerson through the proposal/assignment framing, but it never names those alternatives explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The main description offers no when-to-use guidance, but the materializationMode schema description provides meaningful context: chat-scoped discovery agents may use proposal mode for their pinned team, direct human/API callers require Manager-or-above authority, and landscape-onboarding chats are restricted to proposals. There is no explicit when/when-not guidance against alternatives like createClarityProcess, and the eligibility criteria for an 'eligible team' are never defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publishPulseDashboardPublish Pulse DashboardAInspect
Publish (share) a Duvo Pulse dashboard to your whole team or your whole organization, or revert it to private (creator only). When publishing, set permission to 'view' (teammates see the dashboard) or 'edit' (teammates can also iterate on it); organization-wide viewers outside the team always get view-only access.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| permission | No | ||
| visibility | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals a key behavioral constraint: 'organization-wide viewers outside the team always get view-only access.' This nuance is not present in the annotations and is critical for setting expectations. It also clarifies the mutation semantics by describing publishing and reverting to private, consistent with readOnlyHint=false.
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 focused sentences, front-loaded with the primary action and then adding specific details in the second sentence. No filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior, parameter semantics, and an important edge case (org viewers always view-only). It does not mention the return value or any prerequisites, but since there is no output schema and the schema params are well covered, this is sufficient 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?
With zero schema descriptions, the description compensates by explaining the visibility enum ('whole team', 'whole organization', 'private') and permission enum ('view' vs 'edit') with their user-visible effects. It also explains the interaction between visibility and permission for org-wide viewing. The artifactId parameter is self-evident as the target dashboard identifier.
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 'Publish (share) a Duvo Pulse dashboard' which clearly identifies the action and resource. It distinguishes this from related tools like createPulseDashboard, updatePulseDashboard, and deletePulseDashboard by focusing on the sharing/visibility lifecycle. The mention of 'revert it to private' further clarifies its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: whenever you need to share a dashboard with team/organization or control its visibility. It explains the effect on different audiences (team vs org, view vs edit), which helps an agent match user intent. However, it does not explicitly name alternative tools or state when not to use this in favor of updatePulseDashboard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refreshPulseDashboardRefresh Pulse DashboardAInspect
Trigger an on-demand data refresh of a Duvo Pulse dashboard. The dashboard regenerates its connection-sourced values in the background — poll GET /artifacts/{artifactId} for status.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds the background/asynchronous nature of the refresh and the need to poll the artifact endpoint for status, which is valuable behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the key action ('Trigger an on-demand data refresh'). Every word is informative, 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?
The tool is simple (one parameter, no output schema) and the description covers the core behavior, the asynchronous nature, and the follow-up polling action. It does not discuss edge cases like potential conflicts with an in-progress refresh, but for a simple refresh tool this is 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 schema has a single artifactId parameter with uuid format but no description (0% coverage). The description indirectly references artifactId in the polling endpoint, implying it is the dashboard's artifact ID, but does not explicitly define it. Given the simplicity of the parameter, this is partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Trigger' with the resource 'a Duvo Pulse dashboard' and explains the effect ('regenerates its connection-sourced values in the background'). This clearly distinguishes it from read (getPulseDashboard), update (updatePulseDashboard), or create operations in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: performing an on-demand refresh of a dashboard's connection-sourced values. It also instructs to poll GET /artifacts/{artifactId} for status, which is a usage guideline. However, it does not explicitly mention when not to use it or alternatives like getPulseDashboard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rejectAgentSuggestionReject Agent SuggestionBInspect
Dismiss a pending suggestion.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The suggestion's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate that this tool is not read-only, not idempotent, and not destructive. The description adds the behavioral constraint that it deals with 'pending' suggestions, which is useful. However, it does not disclose whether the dismissal is reversible, what happens to the suggestion after dismissal, or any permissions needed. The added value over annotations is minimal but present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys the operation ('Dismiss') and the resource ('a pending suggestion'), earning its place without 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?
For a simple tool with one parameter and no output schema, the description provides the basic operation. However, it lacks details about side effects (e.g., whether the suggestion is permanently removed), prerequisites beyond being pending, and the tool's relationship to other suggestion-related tools. The annotations help, but more context would make the description more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema documents the single 'id' parameter fully with 'The suggestion's unique identifier', giving 100% schema coverage. The description adds no additional meaning to the parameter, such as how to obtain the ID or any constraints, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Dismiss a pending suggestion' uses a specific verb ('Dismiss') and identifies the resource (pending suggestion). It is clear and distinct from a tautology, though it does not explicitly reference sibling tools like consumeAgentSuggestion to differentiate the rejection action from acceptance.
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 usage guidance is provided. The description does not state when to use this tool versus alternatives like consumeAgentSuggestion, nor does it mention any prerequisites or workflow context. This is a significant gap for an AI agent deciding which action to take.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
removeClarityLandscapeNodePersonRemove Clarity Landscape Node PersonADestructiveIdempotentInspect
Remove a person from the process behind a process landscape node, and revoke the process access they were granted when they were added.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| nodeId | Yes | A process landscape node that is linked to a real process. | |
| teamId | No | ||
| personId | Yes | The person entry to change, as returned by listClarityLandscapeNodePeople. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds valuable context by stating that the tool also revokes the process access that was granted when the person was added. This goes beyond the annotations and helps the agent understand the full behavioral impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core action and its consequence. No extraneous words, and the information is front-loaded. It earns its place 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 destructive, 4-parameter tool with no output schema, the description is incomplete. It does not mention return values (success/failure), error conditions, or prerequisites (e.g., person must exist on node, node must have a linked process). The agent lacks information to handle potential failures or verify the operation's outcome.
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%, with orgId and teamId lacking descriptions. The description does not add any parameter-level meaning beyond what the schema already provides. Given the gap, the description should have clarified the role of teamId (e.g., why it's optional) and explained how the parameters relate to the removal action.
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 (remove a person) and the resource (the process behind a process landscape node), and it mentions the additional effect of revoking process access. It distinguishes itself from sibling tools like addClarityLandscapeNodePerson and updateClarityLandscapeNodePerson by being the removal counterpart.
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 a person needs to be removed from a landscape node, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., updateClarityLandscapeNodePerson for changing roles) or when not to use it. No prerequisites 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.
removeClarityProcessMemberRemove Clarity Process MemberADestructiveIdempotentInspect
Remove accepted access to a clarity process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clarity process ID. | |
| invitationId | Yes | Accepted process invitation to remove. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description reinforces the destructive nature ('Remove accepted access'). However, the description adds no additional behavioral context beyond what the annotations provide, such as side effects, permissions required, or whether the removal is reversible. With annotations covering the core traits, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence: 'Remove accepted access to a clarity process'. It contains no redundant words and is structured efficiently for a simple tool. 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?
Given the tool's low complexity (two parameters, no output schema, no nested objects), the description is minimally adequate. It explains the core action but omits important context like how to obtain the 'invitationId' (e.g., via listClarityProcessMembers) or what happens if the member does not exist. The description could be more complete, but it is not critically lacking for a straightforward destructive 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?
Both parameters are fully described in the input schema (100% coverage), so the description does not need to add meaning. The schema already explains 'id' as 'Clarity process ID' and 'invitationId' as 'Accepted process invitation to remove'. The description itself does not clarify parameter formats or usage beyond the schema, meeting the baseline expectation.
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 'Remove' and the resource 'accepted access to a clarity process', which distinguishes it from similar sibling tools like 'deleteClarityProcessInviteLink' (removes pending invitations) and 'removeTeamMember' (removes a team member). It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing the invitation ID from a member list) or contrast with related tools that handle pending invitations or team membership. The agent must infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
removeRevisionIntegrationRemove Revision IntegrationADestructiveIdempotentInspect
Remove an integration from an agent revision. Removes the slot for everyone on the revision, including all per-user connection pins. Requires edit permission on the agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID | |
| integration_id | Yes | Integration ID (catalog integration ID or slot ID from the list response) | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds meaningful behavioral context by specifying what gets removed: 'the slot for everyone on the revision, including all per-user connection pins.' It also states the permission requirement, which goes beyond annotation data. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, immediately states the action, then provides the key consequences and a prerequisite. Every sentence earns its place without verbosity or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature and no output schema, the description covers the essential context: what is removed, scope (for everyone, including pins), and permission requirement. It could mention reversibility or error conditions, but the core behavior is clearly and sufficiently described for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (agent_id, build_id, integration_id, selected_automation_revision_id) with descriptions. The tool description itself does not add parameter-level meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Remove an integration from an agent revision.' It further clarifies the scope by stating it 'Removes the slot for everyone on the revision, including all per-user connection pins,' which differentiates it from sibling tools like unpinRevisionIntegrationConnection that target individual pins.
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 mentions a prerequisite ('Requires edit permission on the agent') which is useful, but it does not explicitly name alternative tools or state when not to use this tool. The behavioral note about removing 'for everyone' implies a contrast with per-user actions but does not explicitly guide the agent to choose this over unpin or detach variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
removeTeamMemberRemove Team MemberADestructiveIdempotentInspect
Remove a member from a team. Removing another member requires the Superadmin role or above; any member may remove themselves (leaving the team). The last remaining Owner cannot be removed, and a member whose Owner role is inherited from the organization can only leave voluntarily.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| memberId | Yes | Member (user) ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive and non-read-only behavior, but the description adds significant behavioral context: permission requirements, self-removal, the last-Owner invariant, and inherited Owner restrictions. This goes well beyond the structured annotations and gives the agent a clear model of side effects and constraints.
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 first, followed by essential permission and edge-case info. No filler or redundant phrasing; every clause contributes new 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?
A destructive, no-output-schema tool benefits from the stated role requirements and invariants. It is mostly complete, but does not mention what the return value or error behavior looks like on failure (e.g., trying to remove a non-existent member). Still, for the tool's simplicity, the provided context is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have rich descriptions in the schema (100% coverage), including team_id fallback behavior. The description itself does not add parameter-level meaning beyond what the schema already states, so the schema does the heavy lifting; 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?
Starts with a clear, specific verb+resource: 'Remove a member from a team.' Distinguishes from sibling tools like updateTeamMemberRole and listTeamMembers by naming the exact action and target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage context including who may remove whom (Superadmin or above, self-removal) and edge-case restrictions (last Owner, inherited Owner). Does not explicitly name alternative tools, but the role/edge-case guidance effectively tells when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renameFileRename FileBInspect
Rename a file in team storage.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| relativePath | Yes | Current path of the file relative to the team's storage root | |
| newFilenameOnly | Yes | New file name (no extension; the existing extension is preserved) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral traits beyond the annotations. Annotations indicate the operation is non-readonly, non-idempotent, and non-destructive, but the description fails to mention important details such as extension preservation or that the file's directory path remains unchanged—though these are present in the parameter 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 a single concise sentence that gets straight to the point without any filler or repetition. Every word is necessary, and it is appropriately 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?
Despite the rich input schema, the overall tool definition is incomplete. There is no output schema, and the description does not explain return values, error conditions, or side effects such as overwriting behavior. For a mutation tool, this leaves important gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, including detailed explanations for team_id, relativePath, and newFilenameOnly. The tool description itself adds no parameter-level semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Rename a file in team storage' uses a specific verb (rename) and resource (file in team storage), clearly distinguishing it from sibling tools like deleteFile or updateFileContent. The action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description simply states the action, leaving the agent to infer the appropriate context. No exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorderClarityFoldersReorder Clarity FoldersAInspect
Reorder the team's process folders to match the given id order. The payload must name every folder exactly once.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| folderIds | Yes | Every team folder ID, in the desired display order. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description doesn't contradict these. However, it doesn't disclose what happens to the folders that aren't reordered, whether the operation is reversible, or what the response looks like (no output schema). Additional behavioral context like 'Folders not included in the array are left in place' or 'This is a strict reorder—no folders are created or deleted' would be valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clear verb and constraint. It's front-loaded and efficient. Minor improvement could be adding a second sentence about expectations or side effects, but it's already well-structured for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, no output schema, and rich param descriptions, the description is nearly complete. It covers the core purpose and a critical usage constraint. Lacking is information about return value structure or error cases (e.g., what happens if folderIds contains invalid IDs). Still, it's strong for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the folderIds parameter is well-explained with min/max items and format, and team_id has detailed auth context. The description adds the behavioral constraint that every folder must be named exactly once, which complements the schema by clarifying ordering 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 tool reorders team process folders to match a given ID order, with the explicit constraint that the payload must name every folder exactly once. This is a specific verb+resource combination that distinguishes it from sibling tools like reorderClarityLandscapeAreas and updateClarityFolder.
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 the payload must name every folder exactly once, which is a critical usage guideline to prevent incomplete reorders. While it doesn't explicitly mention alternatives among siblings, the purpose is narrow enough that this directive alone is sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorderClarityLandscapeAreasReorder Clarity Landscape AreasAIdempotentInspect
Reorder a sibling group of the organization's process landscape area folders left-to-right — the top-level areas by default, or the folder children of parentId (organization admin+). This changes display order only; use setClarityLandscapeNodePlacement to move a node to a different parent.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| parentId | No | The parent area whose folder children are being reordered. Omit or pass null to reorder the top-level areas. | |
| orderedAreaIds | Yes | Every area folder in the sibling group, exactly once, in the order you want them displayed left-to-right. Read the current siblings first (getClarityProcessTree); a partial list is rejected with 400. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description aligns: 'changes display order only' confirms non-destructive behavior. It adds value by stating the action is non-reparenting (display-only) and parentId handling for null vs empty. Could be stronger by explicitly noting this is a safe operation that can be called repeatedly with same results, but idempotentHint already covers that.
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 clear sentences with zero waste. First sentence states the core action with scope condition (default or parentId), second sentence disambiguates from the sibling tool and sets expectations about what it doesn't do. Every word is functional — a model of efficient tool documentation.
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 3 parameters, 2 required, no output schema, this description covers the essential behavioral contract. It clarifies what tool to use for parent-changing, explains permission boundaries, handles the ambiguous parentId case, and gives explicit guidance on orderedAreaIds validation. The only minor gap is no return value description, but since there's no output schema and reorders typically return success/void, this is acceptable for the complexity level.
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 67%, and the description adds significant meaning for the undocumented parentId parameter (explains omit/pass null = top-level), and for orderedAreaIds adds critical guidance about getting current order first with getClarityProcessTree and the 400-error for partial lists. orgId has no description needed since schema defines it as uuid. The description compensates well 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?
The description states the verb 'Reorder', the resource 'sibling group of landscape area folders', and the scope 'left-to-right', with clear differentiation from the sibling tool 'setClarityLandscapeNodePlacement' which moves nodes to different parents. This distinguishes it perfectly from a sibling reorder tool (reorderClarityFolders) and the placement 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?
Explicitly states when to use this tool ('reorder children of parentId') vs the alternative ('setClarityLandscapeNodePlacement to move to a different parent'). Also clarifies admin+ permission needed and that this is only for display order, not structural changes. The schema description for orderedAreaIds adds critical usage rules: 'Read the current siblings first...'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replaceCaseQueueEvalRubricsReplace Case Queue Eval RubricsADestructiveInspect
Replace the entire case-level evaluation rubric set on a queue's current version (1 to 12 rubrics). Existing rubrics are removed and the supplied list becomes the new set. An empty list is refused — whole-case evaluation regenerates rubrics for an empty set at the next settlement, so a cleared set would not stay cleared; remove individual rubrics instead. Targets the queue's current version (build-set), which exists once its first Agent-processed case settles — this fails with 409 before then. Cases already judged keep their original verdicts.
| Name | Required | Description | Default |
|---|---|---|---|
| rubrics | Yes | The complete case-level rubric set for the queue's current version (at least 1 rubric). Replaces every existing rubric. | |
| queue_id | Yes | The queue's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true and readOnlyHint: false, but the description adds critical behavioral context beyond that: existing rubrics are destroyed, an empty list is refused due to regeneration semantics, the tool fails with 409 before the build-set exists, and already-judged cases retain original verdicts. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, with the core purpose front-loaded in the first sentence, followed by three sentences that each add essential caveats (empty list refusal, build-set prerequisite, verdict preservation). No filler or redundant repetition of the schema; 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 operation's complexity (destructive, conditional on current version, empty-set nuance), the description covers the critical decisions and prerequisites. It does not specify the return value or success confirmation, but with no output schema and annotations covering safety, this is a minor gap. Could mention expected response but is otherwise complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both queue_id and rubrics fully described, including nested object fields and constraints (minItems 1, maxItems 12). The description adds no additional parameter-specific meaning beyond the schema; it reiterates that rubrics is the complete replacement set but does not enrich parameter understanding further. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Replace' and the resource 'entire case-level evaluation rubric set on a queue's current version', with explicit scope (1 to 12 rubrics) and behavior (existing rubrics are removed). It distinguishes itself from sibling tools like createCaseQueueEvalRubric (adds one) and updateCaseQueueEvalRubric (updates one) by emphasizing the wholesale replacement of the set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not guidance: an empty list is refused and the explanation why, directing to 'remove individual rubrics instead' (implying deleteCaseQueueEvalRubric). Also specifies the prerequisite that the queue's current version must exist (after first Agent-processed case settles) and notes the 409 failure otherwise, helping the agent decide when to invoke this vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replaceEvalRubricsReplace Eval RubricsADestructiveInspect
Replace a build's entire Agent-specific evaluation rubric set in one call (at most 5 rubrics). Existing custom rubrics are removed and the supplied list becomes the new set; pass an empty array to clear them. Defaults to the Agent's live build; pass build_id to target a specific revision.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent's unique identifier (Assignment ID) | |
| rubrics | Yes | The complete custom rubric set for the build. Replaces every existing custom rubric; pass an empty array to clear them. | |
| build_id | No | Replace the custom rubrics on this build (revision). Defaults to the agent's live build when omitted. | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the destructive replacement semantics: 'Existing custom rubrics are removed and the supplied list becomes the new set; pass an empty array to clear them.' This goes well beyond the destructiveHint annotation by explaining exactly what happens to existing rubrics, making the tool's behavior transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and every clause delivers useful information: replacement semantics, max count, clearing behavior, and build target default. 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?
The description is complete for a destructive mutation tool: it states what happens to existing rubrics, explains the clear option, names the default target build, and mentions the optional build_id. With full schema coverage and no output schema, this sufficiently equips an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal semantic value beyond the schema: it mentions the 5-rubric cap and empty-array clearing, but the schema already documents these constraints and the build_id default. No significant additional meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Replace') and clearly identifies the resource: 'a build's entire Agent-specific evaluation rubric set'. It distinguishes itself from sibling tools like createEvalRubric or updateEvalRubric by emphasizing 'entire set in one call' and the clearing behavior.
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 when to use this tool: when you need to replace the whole rubric set, clear all rubrics with an empty array, and target a specific build revision via build_id. It does not explicitly name alternative single-rubric tools, so it misses the explicit 'when-not' guidance needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replaceRevisionIntegrationQueuesReplace Revision Integration QueuesAIdempotentInspect
Replace the set of queues linked to this build's case-queue integration slot. Send the full desired queue list — any queues not in the list will be unlinked. Requires edit permission on the agent. After linking, call getRevisionCaseQueueSetup to confirm the slot now reports linked_queue_count > 0.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID | |
| queue_ids | Yes | Full set of queue IDs to link to this slot. Replaces any existing links. | |
| integration_id | Yes | Integration ID | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral trait: 'any queues not in the list will be unlinked,' which goes beyond annotations. It also states the permission requirement. This is valuable context that complements the idempotentHint and destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences pack the core purpose, usage rule, and verification step without redundancy. Each sentence earns its place, front-loading the main 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?
The description covers the operation's effect, the permission prerequisite, and a follow-up verification step. Given no output schema, this provides enough context for correct invocation without needing to consult external resources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description only reinforces queue_ids semantics ('Send the full desired queue list'), which is already in the schema description. No significant new parameter-level meaning is added, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Replace the set of queues linked to this build's case-queue integration slot.' This uses a specific verb and resource, and the 'replace' semantics distinguish it from sibling tools like attachRevisionIntegrations.
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 clear usage context: 'Requires edit permission on the agent' and instructs to 'call getRevisionCaseQueueSetup to confirm' after linking. However, it does not explicitly contrast with alternative tools for incremental vs. full replacement, so guidance 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.
respondToHumanRequestRespond To Human RequestAInspect
Respond to a human-in-the-loop request. Use 'approved' (true/false) for approval-type requests, or 'answers' ({question: answer}) for question-type requests. Only works when the run is in 'waiting' status.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | The run's unique identifier | |
| answers | No | For question-type requests: a map of question text to answer. Multi-select answers should be comma-separated. | |
| approved | No | For approval-type requests: true to approve, false to deny | |
| request_id | Yes | The human request's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate that this is a non-read-only, non-idempotent, non-destructive mutation (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds the precondition of 'waiting' status and the parameter-selection behavior, but does not disclose what happens after responding (e.g., whether the run resumes or the request is finalized). Given the annotation coverage, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each adding distinct value: the core purpose, the two usage modes, and the only-when-waiting precondition. There is no redundancy or fluff, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool handles two distinct request types and has a precondition, all of which are covered. The absence of an output schema means return values need not be explained. The only gap is the lack of explicit information about post-response behavior (e.g., run resumption), but for an invocation-focused tool, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already has a detailed description. The description's parameter guidance (approved vs answers) largely restates the schema but clarifies the conditional relationship between the two parameters. This adds minimal new meaning beyond the schema, so a baseline score of 3 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: "Respond to a human-in-the-loop request." It distinguishes between approval-type and question-type requests, which separates it from siblings like postRunMessage or startRun. The verb 'respond' and specific resource make 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 explicit usage instructions: "Use 'approved' (true/false) for approval-type requests, or 'answers' ({question: answer}) for question-type requests." It also states a clear precondition: "Only works when the run is in 'waiting' status." While it does not explicitly name alternatives, the waiting-status constraint provides an exclusion criterion, and the parameter guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restorePulseDashboardVersionRestore Pulse Dashboard VersionAInspect
Restore a previous version of a Duvo Pulse dashboard, making it live again (requires edit access). Non-destructive — it moves the head pointer to the chosen version.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| revisionId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description goes beyond annotations by explaining the mechanism ('moves the head pointer') and confirming non-destructive behavior, which matches destructiveHint=false. Also mentions access control ('requires edit access'), adding useful operational 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 focused sentences with no filler. Front-loaded with the core action, then adds mechanism and access requirement. Every phrase contributes.
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 action with no output schema, the description covers purpose, access, and mechanism. However, it omits parameter semantics and any return value indication, making it slightly incomplete but still adequate for a straightforward restore operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of artifactId or revisionId. Though parameter names are fairly self-explanatory (dashboard ID and version ID), the description does not map them to the restoration action or clarify their roles, requiring inference.
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 'Restore', the resource 'previous version of a Duvo Pulse dashboard', and the outcome 'making it live again'. It distinguishes from sibling tools like getPulseDashboardVersionHtml (view-only) and updatePulseDashboard (modify current) by emphasizing the version-pointing action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use (to revert to a prior version) and notes a prerequisite ('requires edit access'). It does not explicitly name alternatives or exclusions, but the context of version restoration vs current editing is clear from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revertClarityProcessSnapshotRevert Clarity Process SnapshotADestructiveIdempotentInspect
Archive a Clarity v2 snapshot of either kind. If the live row is archived, the repository auto-promotes the latest historic row of the same kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Snapshot kind to list | |
| process_id | Yes | The clarity process id | |
| snapshot_id | Yes | Snapshot id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the key behavioral trait of auto-promotion when archiving a live row, adding value beyond the annotations (destructiveHint, idempotentHint). No contradictions with annotations; note the archive action aligns with destructive=true.
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 action and a crucial side effect. Every word earns its place; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering idempotency and destructiveness, the description adds the vital auto-promotion context. However, it omits details about return values, prerequisites (e.g., snapshot existence validation), and behavior when the archived snapshot is not the live row.
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 baseline is 3. The description adds minimal parameter meaning beyond the schema, only referencing 'either kind' which mirrors the enum. The schema's kind description ('Snapshot kind to list') seems inconsistent but is not addressed by the tool description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Archive a Clarity v2 snapshot of either kind' and explains the auto-promotion behavior. However, the tool name 'revert' conflicts with 'archive', which could cause confusion about the intended operation.
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 archiving snapshots, but it does not explicitly state when to use this tool versus alternatives like promoteClarityProcessSnapshot or saveClarityProcessSnapshot. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveClarityProcessSnapshotSave Clarity Process SnapshotCInspect
Save user edits as the live Clarity v2 snapshot for the selected kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Snapshot kind to list | |
| swot | No | SWOT analysis produced by the swot-analysis postprocessing agent. `undefined` = agent has not yet run; `null` = agent ran and produced no analysis. | |
| steps | Yes | ||
| summary | No | One short paragraph (3-5 sentences) describing the captured process at a glance. Surfaced at the top of the current-process tab so reviewers can orient themselves before scanning the steps. Example: "Customers order beer at the bar; the bartender greets them, picks an option matching their preference, pours and garnishes the glass, then rings the order through the POS before serving." | |
| process_id | Yes | The clarity process id | |
| projectedImpact | No | Answer-first, MECE-structured business case. 4-8 sentences of prose + one markdown assumptions table. Null when team context is insufficient to produce any quantitative or qualitative assessment. | |
| baselineSnapshotId | Yes | ||
| clarityCurrentProcessId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) establish it as a non-destructive write; the description is consistent with that and does not contradict them. However, it adds no behavioral context beyond annotations: it fails to clarify the key 'live' semantics (that saving makes it the active snapshot, effectively replacing the baseline), whether it is an upsert, or any auth/prerequisite needs. The critical 'live' behavior is left unexplained.
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 with no filler or repetition; front-loaded with the verb and core object. Efficient, though terse to the point of being under-informative on save 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?
This is a complex tool (8 parameters, a large nested steps schema, no output schema) but the description offers only a one-line gloss. It does not explain save behavior, the meaning of 'live', the role of baselineSnapshotId, or what the call returns. The schema's own descriptions compensate somewhat, but the total package leaves an agent under-equipped for this high-complexity mutation.
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 moderate (63%), so the description should add some meaning, but it provides zero parameter-level detail. The schema itself carries rich descriptions for kind, steps, swot, and projectedImpact, yet the description never maps 'user edits' to the steps parameter or 'selected kind' to the kind enum. Nothing is added 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 uses a specific verb+resource ('Save user edits as the live Clarity v2 snapshot') and scopes it by 'for the selected kind'. This distinguishes it from sibling tools like generateClarityProcessSnapshot (which produces a snapshot), promoteClarityProcessSnapshot (which formalizes one), and the get/list/revert variants. It lacks explicit detail on what 'live' means or how it relates to baselineSnapshotId, but the core action is identifiable.
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 when-to-use guidance, exclusions, or alternative tool mentions. Given the large sibling set including generateClarityProcessSnapshot, promoteClarityProcessSnapshot, and stopClarityProcessSnapshot, an agent gets no help deciding between these overlapping lifecycle tools. The phrase 'user edits' is the only implicit differentiator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchCasesSearch CasesAInspect
Search cases in a queue with rich filters (multi-status, date ranges, label-based filters). Use this when the simple query-string filters on GET /v2/queues/:queue_id/cases aren't enough. Set count_only=true to skip Case row selection, enrichment, and transformation. The normal response shape is returned with cases: [] and the matching total.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| search | No | ||
| filters | No | ||
| sort_by | No | created_at | |
| queue_id | Yes | The queue's unique identifier | |
| count_only | No | Skip Case row selection, enrichment, and transformation. The normal response shape contains an empty cases array and the matching total. | |
| sort_order | No | desc |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are neutral (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description must carry the burden of behavioral disclosure. The description mentions that setting count_only=true skips 'Case row selection, enrichment, and transformation', hinting that the default behavior may have side effects (modifying state or performing expensive operations). However, it does not clarify what these side effects are, whether the tool is rate-limited, or if it requires specific permissions. The description adds some transparency beyond annotations but leaves significant gaps, especially for a tool that might not be purely read-only.
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, each serving a distinct purpose: first states the function, second provides usage guidance with an alternative, third explains a key parameter. It is front-loaded with the purpose, and every sentence adds value without redundancy or fluff. The length is appropriate for the tool's complexity.
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 8 parameters, a nested object, no output schema, and a moderate number of sibling tools, the description is incomplete. It covers the purpose, usage alternatives, and the count_only parameter, but it fails to describe the response shape in detail (beyond the count_only case), pagination behavior (limit/offset), the search parameter, sort options, or how to use the filters object. With no output schema, the description should provide more context about the expected outcome. The absence of this information means an agent may struggle to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only queue_id and count_only have descriptions), so the description must compensate. The description explains the count_only parameter well: 'Set count_only=true to skip Case row selection, enrichment, and transformation. The normal response shape is returned with cases: [] and the matching total.' It also gives context for the filters parameter by mentioning 'rich filters (multi-status, date ranges, label-based filters)'. However, other parameters (limit, offset, search, sort_by, sort_order, and the inner structure of filters) are not described beyond what the schema provides. The description adds value for one parameter but does not fully compensate for 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's purpose: 'Search cases in a queue with rich filters'. It specifies the verb (search), resource (cases in a queue), and distinguishes from the sibling tool listCases by mentioning the simple query-string filters on GET /v2/queues/:queue_id/cases, which is a direct reference to the simpler alternative. The mention of explicit filter types (multi-status, date ranges, label-based) further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: 'Use this when the simple query-string filters on GET /v2/queues/:queue_id/cases aren't enough.' This provides clear guidance on the alternative and the context in which this tool is appropriate. It also explains the count_only option, adding a usage scenario. However, it does not explicitly state when not to use it (e.g., for simple listing) or provide prerequisites, but the guidance is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendPulseDashboardMessageSend Pulse Dashboard MessageAInspect
Send an instruction to iterate on a Duvo Pulse dashboard (e.g. 'make it a bar chart', 'filter to last 14 days'). The creator can always iterate; teammates can too when the Pulse is published to the team with edit access. The agent regenerates asynchronously — poll GET /artifacts/{artifactId} for status.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| artifactId | Yes | ||
| attachments | No | Attachments to hand the agent, uploaded beforehand via the upload-urls endpoint (max 5) | |
| from_revision_id | No | ||
| selected_element | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false, which are generic. The description adds critical behavioral details: the operation is asynchronous, requires polling GET /artifacts/{artifactId} for status, and has access control implications. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action and example, followed by usage constraints and async behavior. Every sentence adds value with no redundancy 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?
While the async behavior and access rules are covered, the tool has 5 parameters (including a complex nested object) with no output schema and low schema coverage. The description omits critical parameter semantics (e.g., what artifactId represents, purpose of from_revision_id and selected_element) and does not outline error scenarios or return values. This is insufficient 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 only 20%, and the description does not compensate. It does not explain the meaning of artifactId (beyond its use in polling), from_revision_id, or selected_element. Only the message parameter gets an example via the description's sample instruction. The nested selected_element object is completely undocumented, leaving the agent guessing.
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 sends an instruction to iterate on a Duvo Pulse dashboard, with concrete examples ('make it a bar chart', 'filter to last 14 days'). It distinguishes itself from sibling tools like answerPulseDashboardQuestion by focusing on iterative changes rather than Q&A.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: creator can always iterate, teammates only when the Pulse is published to the team with edit access. This gives clear eligibility criteria and implies when not to use (no edit access). It also notes asynchronous regeneration and polling, guiding the agent on follow-up behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendTeamInviteEmailSend Team Invite EmailAInspect
Email an invitation to its recipient. Use this to deliver an invitation created by createTeamInvite (which never sends mail on its own), or to resend one the recipient never received. The accept link is always built from the server-configured app origin.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the invitation to email. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| frontendUrl | No | Deprecated. Accepted for backward compatibility and IGNORED: the accept link is always built from the server-configured app origin, so a caller cannot point invitation emails at another host. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations define the tool as mutating and non-idempotent. The description adds valuable behavioral context beyond that: it reveals that the frontendUrl parameter is ignored and that the accept link is always server-configured. This prevents misuse. It doesn't discuss failure conditions or side effects, but the key quirk (ignored parameter) is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by usage context and a critical behavioral note. Every sentence earns its place; there is no fluff or repetition of schema 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?
For a tool with one required parameter, no output schema, and one deprecated/ignored parameter, the description covers purpose, usage timing, and the most important behavioral nuance. It is sufficiently complete for an AI agent to invoke correctly without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters with 100% coverage, setting the baseline at 3. The description adds extra meaning by explaining why the frontendUrl parameter is ignored and how the accept link is constructed, which helps the agent understand the parameter's deprecation beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Email an invitation to its recipient') with a specific verb and resource, and distinguishes itself from sibling createTeamInvite by explicitly noting that createTeamInvite does not send mail. This removes any ambiguity about the tool's 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 use cases: deliver a newly created invitation or resend one not received. It names the alternative tool (createTeamInvite) and clarifies the division of labor. It stops short of listing when-not-to-use scenarios (e.g., bulk sending), but the context is clear enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setClarityLandscapeNodePlacementSet Clarity Landscape Node PlacementAIdempotentInspect
Move a process landscape node (team manager or above for team processes; organization admin for areas)
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| nodeId | Yes | ||
| parentId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds authorization requirements (team manager or above; organization admin for areas), which is useful beyond the annotations, but it does not explain the operational impact such as whether child nodes move with the node or the meaning of a null parentId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb 'Move', and contains no redundancy. The permission details are integrated efficiently without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 3 required parameters and no output schema, the description is too sparse. It does not cover crucial hierarchy implications (e.g., whether subtree moves with node, constraints on parentId such as cannot be a descendant, or the behavior when parentId is null). The annotations mitigate some uncertainty, but the operational semantics remain underspecified.
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 schema description coverage at 0%, the description must compensate, but it does not explain any of the parameters. The property names (orgId, nodeId, parentId) are suggestive, but the description fails to clarify that parentId is the new parent, that null likely means moving to root, or the role of orgId. This leaves agents to infer critical 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 uses the specific verb 'Move' and identifies the resource as a 'process landscape node', clearly distinguishing this from sibling tools like createClarityLandscapeNode, deleteClarityLandscapeNode, and updateClarityLandscapeNode. The parenthetical adds permission context, further clarifying its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for repositioning landscape nodes and notes required permissions, but it does not explicitly state when to use this tool versus alternatives or provide exclusions. For example, it doesn't clarify the distinction from updateClarityLandscapeNode or whether this tool should be used only for reparenting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setClarityLandscapePrioritiesSet Clarity Landscape PrioritiesAIdempotentInspect
Set or clear heatmap priorities in one batch (team managers for their processes; organization admin+ across the organization)
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | Organization whose landscape is being assessed. | |
| priorities | Yes | Process priority updates applied atomically. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds context about batching and permissions, but does not disclose additional behavioral details such as what happens to existing priorities or the atomicity guarantee. This is consistent with the annotations and adds some value, but not significantly beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys the core purpose, batching behavior, and intended users without unnecessary words or redundancy. It is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with the thorough schema and annotations, provides enough context for a mutation tool. It covers purpose, permissions, and batch behavior. It does not describe return values, but no output schema is present and mutation tools typically don't require that. Minor gap: 'heatmap priorities' could be more explicitly tied to clarity process landscape, but sibling context helps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both org_id and priorities are fully described in the schema, including the meaning of null priority (clearing an assessment). The description itself does not add parameter-level detail beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set or clear heatmap priorities'), the resource ('heatmap priorities'), and the batching context ('in one batch'). It also distinguishes from sibling tools like setClarityLandscapeNodePlacement by focusing on priorities rather than placement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (for heatmap priorities) and includes role-based guidance ('team managers for their processes; organization admin+'). However, it does not explicitly mention alternatives or exclusionary cases, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setupClarityFoldersFromLandscapeSetup Clarity Folders From LandscapeAInspect
Create one linked folder per landscape group node containing this team's processes. Idempotent: groups that already have a linked folder are skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, but idempotentHint is also false. The description correctly states 'idempotent' and explains the skipping behavior, which adds valuable behavioral context that contradicts the false idempotentHint annotation (making the description more reliable). This is a useful correction beyond what 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 description is a single sentence that conveys the core action, scope, and idempotency. It is front-loaded and efficient with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter, no output schema, and the description covers purpose and idempotency well, it is fairly complete. The only gap is that it doesn't explain what happens to the 'linked folder' (e.g., whether it returns the folder ID), but for a creation tool with idempotent behavior, this is minor.
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 value by clarifying that team_id is optional (API keys are pinned) and offers guidance for OAuth callers. This goes beyond the schema's format description, justifying 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 uses a specific verb ('create') and clarifies exactly what is created ('one linked folder per landscape group node') and for what ('containing this team's processes'). The term 'setupClarityFoldersFromLandscape' is somewhat generic, but the description disambiguates it by stating the resource and scope clearly.
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 that the tool is idempotent: groups with existing linked folders are skipped, which guides the agent on when to invoke it (no risk of duplication). However, it does not explicitly mention when *not* to use it (e.g., if folders need updating rather than creating) nor provide alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startClarityExportStart Clarity ExportCInspect
Start a Clarity → SAP Signavio export job
| Name | Required | Description | Default |
|---|---|---|---|
| bpmnXml | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| processId | Yes | ||
| connectionInstanceId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states 'start a ... export job', which implies an asynchronous initiation, but it does not disclose key behavioral details: whether the job runs in the background, when it completes, how to poll for results, potential side effects, or error conditions. With annotations providing minimal safety hints (not read-only, not idempotent, not destructive), the description should compensate but fails to do so.
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, short sentence that delivers the core purpose immediately. It is concise and front-loaded, with no extraneous words. While it could be more structured with additional detail, for conciseness alone it scores well.
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 4 parameters, no output schema, and low schema coverage, the description lacks essential context. It does not explain the purpose of the parameters, the return value (likely a job ID), or any post-invocation steps. The tool initiates an asynchronous export, but the description omits all lifecycle information, making it insufficient 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 only 25% (only team_id has a schema description). The tool description does not mention any parameters, nor does it explain the meaning of bpmnXml, processId, or connectionInstanceId. Given low coverage, the description should elaborate on parameter purpose and relationships, but it provides nothing, leaving the agent to guess.
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 ('Start'), the source ('Clarity'), and the target ('SAP Signavio export job'). It uses specific verb+resource phrasing that distinguishes it from sibling tools like 'getClarityExport' or 'listActiveClarityExports', making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'getClarityExport' (to check status) or 'listActiveClarityExports' (to see running jobs). No when-not or prerequisite information is given, 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.
startNativeOAuthStart Native OAuthAInspect
Start an OAuth-based connection with a native provider (Gmail, Google Sheets, Outlook, etc.). Returns an authorization URL that must be opened in a browser by a human end-user; once they grant consent, Duvo creates the matching connection and redirects the browser to the optional return_url (or the Duvo dashboard if none is provided). Poll /v2/teams/:team_id/connections to detect the new connection.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| provider | Yes | OAuth provider slug (e.g. 'google', 'gmail', 'googlesheets', 'outlook'). Must match a configured native OAuth provider. | |
| return_url | No | Where to send the user's browser after OAuth completes. | |
| reconnect_instance_id | No | When set, the OAuth flow will update the existing connection in place rather than creating a new one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, idempotent=false), the description reveals critical behavioral traits: the URL must be opened by a human end-user, the connection is only created after consent, and the browser redirects to return_url or dashboard. It also instructs polling to detect completion, which is not captured in 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?
Three sentences, front-loaded with the core purpose, and every sentence adds actionable detail (human browser step, consent, polling). No redundant or vague phrasing.
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 complexity of an interactive OAuth flow and no output schema, the description covers the essential steps: return of authorization URL, human action required, and polling to detect the new connection. It lacks error scenarios and explicit response structure, but the core usage is 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 provides 100% parameter coverage with descriptions, so the baseline is 3. The description adds value by explaining the behavior of return_url (redirects to dashboard if omitted) and the overall flow, though reconnect_instance_id is only covered in the schema. This extra context warrants 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 opens with a specific verb and resource: "Start an OAuth-based connection with a native provider" and lists examples (Gmail, Google Sheets, Outlook). It clearly distinguishes this from sibling connection tools by emphasizing the human-browser authorization flow, which is unique to this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use this tool: for native OAuth providers requiring an interactive human consent step, and it explains the async flow (returns URL, poll connections). However, it does not explicitly name alternative tools or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startRunStart RunAInspect
Start a new agent run. Returns immediately with run info - does not wait for completion.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Optional initial message to start the run with (e.g. a trigger payload or user instruction) | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| agent_id | Yes | The agent ID to run | |
| sandbox_id | No | Optional sandbox ID with pre-uploaded files | |
| webhook_url | No | Webhook URL to POST events to (human_request, run_completed, run_failed, run_interrupted) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-read-only, non-idempotent, non-destructive. The description adds the important behavioral trait of returning immediately without waiting for completion, which is not captured in annotations. It doesn't discuss side effects or auth, but the core async behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and immediately followed by the most important behavioral caveat. 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?
The tool is simple, with full schema coverage. The description covers the key behavior (async start) but does not elaborate on what 'run info' includes or any prerequisites beyond the required agent_id. Given the lack of output schema and annotations, this is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters already have detailed descriptions. The tool description itself does not add any parameter-specific meaning. Baseline 3 applies when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Start a new agent run') and adds a key behavioral detail ('Returns immediately... does not wait for completion'). This clearly distinguishes it from sibling tools like stopRun and getRun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (starting a run) and hints at asynchronous behavior, but it does not explicitly mention alternatives or exclusions. The 'does not wait' implies you'd use other tools for monitoring, but no sibling is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stopClarityArtifactChatConversationStop Clarity Artifact Chat ConversationAInspect
Stop an in-flight artifact-chat turn. Flips the conversation back to open first so the interrupted run's late webhooks are dropped as stale, then best-effort interrupts the cc-server execution.
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes | ||
| conversation_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (readOnlyHint=false, idempotentHint=false, destructiveHint=false) but the description adds critical behavioral nuances: it explains the internal order of operations (flipping conversation to 'open' first to drop late webhooks) and labels execution as 'best-effort'. This exceeds what annotations alone convey. However, it does not specify which late webhooks are affected or what happens to partially processed data, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each adding distinct value. The first sentence states the core action and its operational consequence. The second explains the internal mechanism. No redundancy, no fluff. It earns its space fully.
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 2 parameters (both UUIDs), no output schema, and sparse annotations, the description provides enough operational context for an agent to use it correctly. It covers purpose, scope, and internal behavior. However, it could be more complete by mentioning potential failure modes or prerequisites (e.g., 'conversation must be running'). Loses one point for that 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 input schema lists two UUID parameters (process_id, conversation_id) but has 0% description coverage. The description does not explain the role of either parameter beyond what the schema already shows (their names and types). Since the schema already conveys the necessary structure and the description is silent on parameter semantics, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('stop') and explicitly names the resource ('in-flight artifact-chat turn'). The context signals confirm 0% schema description coverage, so the description must define the purpose entirely on its own—and it does so clearly and operationally.
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 states the scope ('in-flight') and hints at best-effort semantics ('best-effort interrupts'), which helps the agent decide when to call it. However, it does not explicitly exclude idle or completed conversations, nor does it name sibling tools like stopClarityProcessSnapshot or stopRun for differentiation, so it loses one point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stopClarityProcessSnapshotStop Clarity Process SnapshotAInspect
Stop an in-flight snapshot generation for the selected kind. Reads the sandbox id from the process row, kills the sandbox, flips the process back to review, and clears the sandbox marker so any late webhook from the killed run is dropped as stale.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Snapshot kind to list | |
| process_id | Yes | The clarity process id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states destructive actions: 'kills the sandbox, flips the process back to review, and clears the sandbox marker'. However, annotations set destructiveHint=false, which contradicts the described behavior. Despite the description being transparent, the contradiction forces a score of 1 per the rules.
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 first sentence states the primary purpose, and the second details the steps. Every sentence adds value, and the structure is front-loaded for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description explains the actions taken (kill sandbox, flip process, clear marker) but does not mention the return value or response format. For a straightforward action, this is largely complete, though a brief note on what the user receives back would be helpful.
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 (process_id, kind) with descriptions, achieving 100% coverage. The description does not add any additional meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('stop') and resource ('in-flight snapshot generation') and clearly distinguishes from siblings like generateClarityProcessSnapshot, getClarityProcessSnapshot, etc. It explains the exact actions taken, leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it stops an in-flight snapshot for a selected kind, which implies when to use (during generation). It does not explicitly list alternatives or when-not to use, but the purpose is clear enough given the context of sibling tools that cover other snapshot operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stopPulseDashboardMessageStop Pulse Dashboard MessageAInspect
Stop an in-flight Duvo Pulse generation turn. Requires edit access to the dashboard. Flips the dashboard to 'interrupted' and keeps any streamed-so-far reply; stopping when nothing is generating is a successful no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| partial_text | No | The assistant text streamed so far, kept in the conversation as the partial reply. Omit when calling from an API client without streaming state. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, etc.), the description discloses important behavioral traits: requires edit access, flips the dashboard to 'interrupted', preserves the streamed-so-far reply, and is a no-op when nothing is generating. This adds meaningful context not present in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, and every clause adds value. No filler or repetition of schema/annotation information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description covers purpose, side effects, permissions, and edge case behavior. It is slightly incomplete—it doesn't explicitly mention how the partial_text parameter relates to the 'streamed-so-far reply'—but the overall behavior is well explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only partial_text has a description). The tool description adds meaning to partial_text by explaining that the streamed reply is kept, but artifactId is not explicitly described. The parameter name and UUID format make it fairly clear, but the description does not fully compensate for the lack of schema detail on the required field.
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 ('Stop') and identifies the resource ('an in-flight Duvo Pulse generation turn'). It clearly distinguishes from siblings like sendPulseDashboardMessage and listPulseDashboardMessages, and explains the effect (flips dashboard to 'interrupted').
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: stopping an in-flight generation. It also states a useful edge case (no-op when nothing is generating) and a prerequisite (edit access). However, it does not explicitly mention sibling tools like stopRun as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stopRunStop RunAInspect
Stop an agent run. No-op if the run is not currently running.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | The run's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description adds value by disclosing that calling stopRun on a non-running run is a no-op, a meaningful behavioral trait not captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that are front-loaded; no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-output-schema tool, the description is complete; it states the action and the no-op behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention run_id, but the input schema covers it with a description and format, so schema does the heavy lifting; 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 'Stop an agent run' with a specific verb and resource, distinguishing it from sibling tools like startRun and getRun.
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 guidance on when to use this tool vs alternatives; the no-op note is a behavioral condition, not usage guidance. Usage is implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlinkCaseLabelsUnlink Case LabelsAInspect
Remove the given labels from a case.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The case's unique identifier | |
| queue_id | Yes | The queue's unique identifier | |
| label_ids | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutating but non-destructive operation. The description adds the scope ('from a case') but no additional behavioral details such as permissions or edge-case 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 a single, efficient sentence that conveys the core action with no unnecessary 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 unlink operation with three required parameters and no output schema, the description provides the basic purpose but lacks context about prerequisites, error behavior, or relationship to sibling label operations.
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 case_id and queue_id, but label_ids lacks a description. The description adds no parameter-level detail, relying on the tool name to convey that label_ids contains labels to remove.
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 'Remove' and identifies the resource 'labels' and target 'case'. This clearly distinguishes it from sibling tools like assignCaseLabels and unlinkClarityProcessLabels.
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 removing labels from a case, but does not explicitly state when to choose this over alternatives like assignCaseLabels or unlinkClarityProcessLabels. No exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlinkClarityProcessLabelsUnlink Clarity Process LabelsCInspect
Remove process tags from a process.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| labelIds | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, but the description adds no extra behavioral details. It does not explain what happens if a label is not already attached, whether the operation is atomic, or if it requires specific permissions. Beyond the minimal action, nothing is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundancy. It is front-loaded and easy to parse. While it could include additional useful context without becoming bloated, the brevity itself is a positive trait.
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?
This is a simple mutation tool with no output schema, but the description is still incomplete. It does not explicitly state that only the specified labels are removed (not all labels), nor does it mention that this is the inverse of assignClarityProcessLabels. These details would significantly improve completeness without making the description lengthy.
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 no parameter-specific information. The property names 'id' and 'labelIds' are self-explanatory, and the schema provides constraints (min/max items, UUID format). However, the description does not clarify that 'labelIds' is the list of labels to remove from the process, relying on inference.
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 ('Remove') and resource ('process tags from a process'). However, it uses 'tags' instead of 'labels', which is inconsistent with the tool name and sibling tools like assignClarityProcessLabels, creating minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as assignClarityProcessLabels or unlinkCaseLabels. The description does not mention context, prerequisites, or how this tool fits into a label-management workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpinRevisionIntegrationConnectionUnpin Revision Integration ConnectionADestructiveIdempotentInspect
Unpin one of your connections from this build's integration slot. The connection itself is not deleted; only the binding to this slot is removed.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent ID | |
| build_id | Yes | Build ID | |
| connection_id | Yes | Connection ID to unpin | |
| integration_id | Yes | Integration ID (catalog integration ID or slot ID from the list response) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it explicitly states that the connection itself is not deleted, clarifying what the destructiveHint=true annotation actually destroys (the binding). This is valuable non-obvious information that helps the agent understand side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the action ('Unpin') and immediately clarifies a key nuance (connection not deleted). No wasted words 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 simple unpin operation with four clearly described parameters and no output schema, the description adequately covers the core behavior and side effects. It could mention potential error cases (e.g., if connection is not currently pinned), but it is generally complete for an agent to decide and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter (agent_id, build_id, integration_id, connection_id) has a clear description in the schema. The tool description does not add additional parameter-level detail, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Unpin' with a clear resource ('one of your connections from this build's integration slot'), and distinguishes itself from sibling tools like pinRevisionIntegrationConnection by describing the opposite action. It also clarifies the scope by explicitly stating the connection is not deleted.
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 (unpinning from an integration slot) and clarifies the effect (only binding removed), but it does not explicitly state when to use this tool versus alternatives like pinRevisionIntegrationConnection or removeRevisionIntegration. No direct when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateAgentUpdate AgentCInspect
Update an agent's display name or delivery settings.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New agent display name. | |
| pinned | No | Pin the agent to the top of your agents list (true) or unpin it (false). Per-user — each viewer has their own pin. A team on Automations has no agents list for a pin to order, so a pin or unpin there is refused with a 409. | |
| agent_id | Yes | The agent's unique identifier | |
| thread_id | No | Thread id to associate with the agent, or null to clear. | |
| slack_enabled | No | Whether the agent is reachable via Slack. | |
| agentic_memory_enabled | No | Toggle agentic memory for the agent. | |
| microsoft_teams_enabled | No | Whether the agent is reachable via Microsoft Teams. | |
| computer_use_vpn_config_id | No | "direct" to durably pin direct internet (no VPN, immune to future team-default changes), a VPN config UUID to pin that network, or null to follow the team default. | |
| computer_use_sandbox_template_id | No | "standard" to durably pin the standard Duvo desktop (immune to future team-default changes), a template UUID to pin that desktop, or null to follow the team default. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) are all negative and convey no positive safety characterization, so the description carries the burden. 'Update' only restates the mutation implied by readOnlyHint=false; it does not disclose whether unspecified fields are preserved (PATCH semantics), whether toggling slack_enabled or microsoft_teams_enabled has external side effects, or what happens on the server when thread_id is changed. The only behavioral nuance (the 409 refusal for pinned on Automations teams) lives in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. But the brevity is achieved through omission: it covers at most three of the nine parameters' domains and skips pinning, memory, thread association, and computer-use configuration. This reads as under-specification rather than disciplined 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 nine parameters spanning identity, delivery channels, memory, pinning, and computer-use networking — and with no output schema and no positive annotations — the one-sentence description is inadequate. It fails to convey update semantics (partial vs full replacement), that values can be cleared (thread_id null), or what the response contains. The schema documents individual edge cases, but the tool-level context an agent needs for correct selection and 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?
Schema coverage is 100%, and several parameter descriptions are already rich (pinned explains per-user behavior and the 409 edge case; computer_use_vpn_config_id and computer_use_sandbox_template_id explain direct/pinned/default semantics). The description only loosely gestures at name and delivery channels, adding no meaning beyond what the schema provides, so the baseline 3 for full coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Update') and resource ('an agent'), which distinguishes it from createAgent, deleteAgent, and getAgent. However, it understates the tool's scope: the schema exposes nine parameters including pinned, agentic_memory_enabled, computer_use_vpn_config_id, and computer_use_sandbox_template_id, none of which are 'display name or delivery settings.' An agent reading the description could underestimate what this tool can do.
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 offers no guidance on when to use this tool versus alternatives. It never mentions createAgent for creating agents, deleteAgent for removal, or updateAgentFolder/updateAgentCaseTrigger/upsertAgentTrigger as related but distinct entry points. There is no when/when-not language or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateAgentCaseTriggerUpdate Agent Case TriggerAInspect
Update fields on a case trigger. Only the trigger creator or a builder/admin can disable an enabled trigger or change its queue, and only a builder/admin can change queue concurrency.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | No | Whether the trigger is active. Disabled triggers do not dispatch runs. | |
| agent_id | Yes | The agent's unique identifier | |
| trigger_id | Yes | The case trigger's unique identifier | |
| concurrency | No | Concurrency cap for the trigger's queue. The cap is queue-wide, so this affects every Agent working the queue, not just this trigger. Only 1 (run cases one at a time) or null (reset the whole queue's cap to the platform default) can be set here; higher caps are configured per-queue via PATCH /v2/admin/case-queues/{queueId}/concurrency. Omit to leave the current value unchanged. | |
| case_queue_id | No | Queue whose new cases should trigger this agent |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context about authorization: only the trigger creator or a builder/admin can disable an enabled trigger or change its queue, and only a builder/admin can change queue concurrency. This goes beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) and helps set expectations for side effects and permissions.
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 long and front-loads the core purpose ('Update fields on a case trigger') before adding essential permission constraints. Every sentence earns its place; there is no extraneous 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 write operation with no output schema, the description is sufficiently complete: it states the purpose, the key permission constraints, and the schema provides rich parameter details. It could mention what happens after the update or reference related tools like previewAgentCaseTriggerConflicts, but given the annotations and schema, it covers the essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with detailed descriptions for all five parameters, so the description does not need to add much. It does indirectly reference parameter behavior through the permission note (e.g., disabling via 'enabled', changing queue via 'case_queue_id', and concurrency via 'concurrency'), but these are not systematically explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates fields on a case trigger, which differentiates it from create/delete/get/list siblings. It does not enumerate the specific fields, but the schema covers those. The verb 'Update' is specific and the resource 'case trigger' is clear, though it could be more explicit about which fields are updatable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for updating existing case triggers, and the permission note provides context on who can perform certain actions. However, it does not explicitly state when to prefer this over alternatives like upsertAgentTrigger, nor does it offer exclusions or prerequisites beyond role restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateAgentFolderUpdate Agent FolderAInspect
Rename an agent folder or move it to a new parent.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New folder name | |
| folder_id | Yes | The folder's unique identifier | |
| parent_folder_id | No | New parent folder ID. Pass null to move the folder to the root level. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the specific actions (rename/move) but does not disclose additional behavioral context such as permission requirements, effect on child folders, or reversibility. With annotations present, the bar is lower, and the description is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loaded with the primary purpose. 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 mutation tool with full schema coverage and annotations, the description is sufficient. It clearly states the two operations. It could optionally mention that parent_folder_id accepts null to move to root or that rename and move can be combined, but these are already encoded in the schema. Overall, complete enough.
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 fully documents all three parameters with descriptions for name, folder_id, and parent_folder_id. The description adds no parameter-level semantics beyond what the schema already provides, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Rename') and clearly identifies the resource ('agent folder') and the two operations (rename, move to new parent). It distinguishes from sibling tools like createAgentFolder, deleteAgentFolder, and moveAgent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but provides no explicit guidance on when to use it over alternatives. Usage context is implied by the operation (renaming/moving folders), but 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.
updateCaseUpdate CaseAInspect
Edit a case's title and/or its free-form data payload. Provide at least one field. Works on pending, in-progress, and settled cases. Other attributes (status, priority, labels) have their own dedicated endpoints. Returns the updated case with its event history and approval batches.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | New free-form data payload handed to the agent when the case is claimed. | |
| title | No | New case title (1–500 characters). | |
| case_id | Yes | The case's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation nature is clear. The description adds valuable context by naming allowed case states and disclosing the return value ('updated case with its event history and approval batches'), going beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function, and each sentence adds new information (fields, constraint, scope, exclusions, return value). No filler or redundancy, making it efficient and easy to process.
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 update tool with complete schema descriptions and safety annotations, the description sufficiently covers scope, constraints, alternatives, and return value. No output schema exists, but the description explicitly states the return payload, making the tool fully 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?
Schema coverage is 100%, and both title and data have descriptive property descriptions. The description adds a constraint ('Provide at least one field') that is implicit in the schema's optionality but useful. It does not add deeper semantics beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Edit') and clearly identifies the resource (a case) and the exact fields modified ('title and/or its free-form data payload'). It distinguishes itself from siblings by explicitly stating that other case attributes (status, priority, labels) have dedicated endpoints, preventing confusion with other update 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?
Provides explicit guidance on when to use: it names the applicable case states ('pending, in-progress, and settled cases') and states the requirement to provide at least one field. It also explicitly excludes other attributes and points to their dedicated endpoints, giving clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateCaseQueueEvalRubricUpdate Case Queue Eval RubricADestructiveInspect
Edit a single case-level evaluation rubric's title and/or description. The edit produces a NEW rubric (with a new id and slug) so previously judged cases stay attributed to the original criterion; the response contains the new rubric.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Short, human-readable Pass/Fail rubric title. | |
| queue_id | Yes | The queue's unique identifier | |
| rubric_id | Yes | The case-level rubric's unique identifier | |
| description | No | A 1-2 sentence Pass condition phrased as a question. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description surfaces a non-obvious behavior beyond the annotations: the edit produces a brand-new rubric with a new id and slug, preserving attribution for previously judged cases. This is critical behavioral context that the annotations alone (readOnlyHint=false, destructiveHint=true) do not capture, and it directly informs the agent of the actual side effect.
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 front-loads the verb and resource, then packs the most important behavioral caveat (new id/slug) and response note into the remainder. No filler or redundant restatement 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 tool with only four parameters and full schema coverage, the description provides the essential behavioral nuance—new rubric identity, historical attribution, and response contents. There is no output schema, but the description covers the key return information an agent needs, making the definition complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all four parameters. The description adds little param-level detail beyond restating that title and/or description are the editable fields, which is already evident from the schema. Baseline 3 applies because the schema carries the semantic burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Edit'), a specific resource ('a single case-level evaluation rubric'), and the exact fields affected ('title and/or description'). It also distinguishes this tool from the generic updateEvalRubric by clarifying the case-level scope and from createCaseQueueEvalRubric by emphasizing that this edits an existing rubric rather than creating a fresh one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: use this when you want to edit an existing case-level rubric's title/description. It doesn't explicitly name alternative tools or state when not to use it, but the edit-versus-create and case-level scoping are enough to guide an agent in most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityFolderUpdate Clarity FolderAInspect
Rename a process folder. Renaming a landscape-linked folder permanently stops landscape name-sync.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New folder name. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| folderId | Yes | Folder to rename. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, leaving behavioral details to the description. The description discloses a critical, non-obvious side effect: 'Renaming a landscape-linked folder permanently stops landscape name-sync.' This goes well beyond what annotations provide (destructiveHint=false) and helps the agent anticipate permanent consequences. No contradiction with annotations (destructiveHint=false likely refers to the folder itself, not the sync).
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 totaling 22 words. The purpose is front-loaded in the first sentence. The second sentence adds a critical behavioral warning. No unnecessary words or redundancy. 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 rename tool with no output schema, the description covers the core purpose and a significant side effect. It does not mention prerequisites (e.g., folder must exist, user must have permissions) or what happens to the folder's contents, but these are largely implied. A small addition about existence/permissions would make it complete, but it's already clear and sufficient for an agent.
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 information about parameters beyond what is already in the schema (e.g., folderId and name are well-described in the schema). The description does not repeat or augment parameter semantics, so it stays at 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 description clearly states 'Rename a process folder' – a specific verb+resource combination. This distinguishes it from sibling tools like createClarityFolder (create), deleteClarityFolder (delete), and listClarityFolders (list). The additional note about landscape-linked folders further clarifies the specific scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: the tool is for renaming folders. It implicitly warns against using it on landscape-linked folders if you want to preserve name-sync, but does not explicitly state when-not-to-use or mention alternatives (e.g., if you need to change other properties, there is no alternative update tool for folders). The warning about permanently stopping sync is a valuable guideline, earning a 4 rather than a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityGuidanceUpdate Clarity GuidanceAInspect
Update the transformation guidance message for a clarity process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The clarity process ID | |
| content | Yes | Replacement transformation guidance for the process. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show readOnlyHint=false, idempotentHint=false, destructiveHint=false. Description adds that it updates guidance for a clarity process but doesn't disclose if it overwrites or appends, required permissions, or error cases. Minimal added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single 9-word sentence, front-loaded with action verb, no wasted words. Perfectly concise for a simple update 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?
Adequate for a simple mutation with 2 well-documented params and no output schema. Lacks detail on side effects, overwrite behavior, or confirmation of success. Could improve with a note on idempotency or return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with explicit descriptions for both parameters. Description's phrase 'transformation guidance message' mirrors schema's 'Replacement transformation guidance' adding no new meaning. Baseline 3 applies since 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?
Description uses specific verb 'update' with resource 'transformation guidance message' for a 'clarity process'. Clearly distinguishes from sibling tools like createClarityGuidance (create) and updateClarityProcess (update process itself).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use vs alternatives like createClarityGuidance. No prerequisites stated (e.g., process must exist). Agent must infer usage from the verb 'update' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityLandscapeNodeUpdate Clarity Landscape NodeAInspect
Rename a process landscape node or update its owner label (team manager or above for team processes; organization admin for areas)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| orgId | Yes | ||
| nodeId | Yes | ||
| ownerLabel | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses permission requirements and the two types of updates, adding context beyond the annotations (which only declare readOnly=false, idempotent=false, destructive=false). It does not contradict annotations, and the permission note is a valuable behavioral detail. Yet it doesn't cover potential side effects like clearing ownerLabel or behavior when both fields are omitted.
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 front-loads the action and packs the permission note into parentheses. Every word contributes to purpose or usage guidance; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple partial-update tool, the description covers the main operations and permissions. Given no output schema, return values need not be explained. However, it misses the nuance that both name and ownerLabel are optional and at least one should be provided to have an effect, and doesn't note that ownerLabel can be cleared with null. Slight 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?
With 0% schema coverage, the description compensates by linking 'rename' to the name parameter and 'owner label' to ownerLabel, and adds permission context. orgId/nodeId are not explicitly described, but their purpose as identifiers is self-evident from the names and required status. It doesn't mention that ownerLabel can be null to clear the label, which the schema allows.
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 specific verbs 'Rename' and 'update' with the resource 'process landscape node', and explicitly names the two updateable aspects (name, owner label). This clearly distinguishes it from sibling tools like createClarityLandscapeNode, deleteClarityLandscapeNode, and setClarityLandscapeNodePlacement.
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 contexts: renaming a node or updating its owner label, and adds permission prerequisites (team manager or above for team processes; org admin for areas). However, it does not explicitly state when not to use it or name alternative tools for other node operations (e.g., placement), so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityLandscapeNodePersonUpdate Clarity Landscape Node PersonAInspect
Change the role a person plays in the process behind a process landscape node (for example "Approver"). Send role: null to clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | ||
| orgId | Yes | ||
| nodeId | Yes | A process landscape node that is linked to a real process. | |
| teamId | No | ||
| personId | Yes | The person entry to change, as returned by listClarityLandscapeNodePeople. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only (readOnlyHint: false) and not idempotent, which aligns with a mutation operation. The description adds context about the mutation ('Change the role' and 'Send role: null to clear it'), but does not disclose side effects (e.g., whether it overwrites existing roles, requires specific permissions, or affects other people on the node). With annotations already marking it as non-read and non-idempotent, the description provides moderate added value but not full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a follow-up clarifying the null case. It is concise and front-loaded with the essential action. The example and clear-instructions earn its place without excess. However, it could be slightly more structured (e.g., splitting guidelines from the primary 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?
Given 5 parameters, 40% schema coverage, no output schema, and the tool being a mutation, the description is somewhat complete but falls short. It explains the role parameter's null behavior but omits context for orgId, nodeId, teamId, and personId beyond what the schema provides. The tool's behavior (e.g., what happens if personId doesn't exist, or if nodeId is invalid) is not addressed. For a mutation with moderate parameter count, more contextualization is needed.
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 40%, meaning 2 of 5 parameters (nodeId and personId) have descriptions in the schema. The tool description adds meaning beyond the schema for the 'role' parameter by explaining its semantics ('Send role: null to clear it'), which is not present in the schema. However, parameters like teamId and orgId lack any additional explanation in the description, so there is still a gap. The null-handling tip is valuable for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb ('Change') and identifies the resource ('the role a person plays in the process behind a process landscape node'). It also provides a concrete example ('Approver') and explains how to clear the role ('Send role: null'). This distinguishes it from addClarityLandscapeNodePerson (add) and removeClarityLandscapeNodePerson (remove) in the sibling list, though it does not explicitly differentiate from 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?
The description implies usage for updating or clearing a role on an existing person-node association, but it does not specify when to use this tool versus addClarityLandscapeNodePerson (for assigning a new person) or removeClarityLandscapeNodePerson (for removing a person entirely). There is no guidance on prerequisites (e.g., the person must already exist for this node) or exclusions. The null-clearing hint is helpful but incomplete for full decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityOrganizationInterviewUpdate Clarity Organization InterviewBInspect
Rename an organization landscape Clarity capture
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| title | Yes | ||
| interviewId | Yes | The organization interview ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare `readOnlyHint: false`, `idempotentHint: false`, and `destructiveHint: false`, so the description is not responsible for the entire safety profile. The word `Rename` adds that the mutation is scoped to the title, but the description does not discuss side effects, permissions, or whether anything is overwritten. No contradiction exists between the description and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler or repetition. It is front-loaded with the verb `Rename`. The only real weakness is the somewhat imprecise phrase 'organization landscape Clarity capture', which may not perfectly match the tool's actual `interview` resource.
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 three-parameter, no-output-schema rename operation, this description is nearly sufficient. The agent can identify `orgId`, `interviewId`, and `title` from available context, but the resource terminology mismatch and missing explanation of organizational relationships are small gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with only `interviewId` described in the schema. The description does not compensate by explaining `orgId` or `title`. While `orgId` is fairly self-evident from the tool name, `title` is only inferable from the word 'Rename', and the overall parameter documentation is insufficient for a low-coverage 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 names a specific action, `Rename`, and a specific resource, `organization landscape Clarity capture`. It clearly separates this tool from siblings like `getClarityOrganizationInterview`, `listClarityOrganizationInterviews`, `deleteClarityOrganizationInterview`, and `finalizeClarityOrganizationInterview`, though the wording 'capture' instead of 'interview' introduces slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The rename action implies when to use it: when an existing organization interview's title needs to change. However, the description gives no explicit exclusions or alternatives, and it does not clarify when another update tool would be more appropriate within the large set of Clarity siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityProcessUpdate Clarity ProcessAInspect
Update a Clarity process name, guidance, visibility, or completion status. Team Builders can edit names and guidance, only the creator or a team manager can change visibility, and completion requires a manager role.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clarity process id | |
| name | No | New process name | |
| status | No | Mark a review-stage process complete | |
| visibility | No | Process visibility within the team | |
| customPrompt | No | Process-specific guidance, or null to clear it |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the minimal annotations (readOnly=false, idempotent=false, destructive=false) by detailing permission requirements for each updatable field, which are important behavioral traits. However, it does not mention potential side effects (e.g., what happens when completion status is set) or error conditions, but given the annotations are minimal, the added role context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the action, the affected fields, and the permission constraints. No redundant information or verbose phrasing; it is concise and focuses on essential details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's scope given its simplicity: it lists all updatable fields, specifies permission constraints, and implies the action targets an existing process. There are no nested objects or complex outputs to explain, and the description provides sufficient context for an agent to decide when 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?
The description clarifies that 'guidance' maps to the customPrompt parameter and 'completion status' maps to status, adding meaning beyond the schema's terse field descriptions. The schema already provides enums for status and visibility, and the description explains the purpose of each field, though it does not delve into value semantics beyond what's 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?
The description clearly states the tool updates a Clarity process's name, guidance, visibility, or completion status, which precisely distinguishes it from other update tools for different entities (e.g., updateClarityFolder, updateClarityLandscapeNode). The verb 'Update' and specific fields make 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 provides role-based usage constraints (who can edit which fields) but does not explicitly mention when to use this tool versus alternatives like createClarityProcess or other update tools. It lacks explicit when-to-use or when-not-to-use guidance relative to sibling tools, though the permissions hint at limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityProcessLabelUpdate Clarity Process LabelCInspect
Update process tags for an organization.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | ||
| value | No | ||
| labelId | Yes | ||
| colorHue | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says it updates process tags, adding no context beyond the annotations (readOnlyHint=false). It does not mention propagation of changes, required permissions, or whether value and colorHue can be updated independently, leaving 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, efficient sentence with no filler. It is concise, though it could be slightly more structured to mention the updatable 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 four parameters and no output schema, this description is severely under-specified. Without an output schema, the agent cannot know what the tool returns, and the description does not cover side effects, prerequisites, or parameter 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%, and the description does not explain any of the four parameters. Neither orgId, value, labelId, nor colorHue is mentioned, so the description fails to compensate for the schema's lack of parameter documentation.
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 ('Update') and identifies the resource ('process tags'), aligning with the tool name. However, 'tags' is a vague synonym for 'labels' and does not clearly distinguish this tool from sibling tools like assignClarityProcessLabels, which also deal with process labels.
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 creating, deleting, or assigning clarity process labels. The single sentence gives no context for choosing this operation over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityProcessLinkUpdate Clarity Process LinkAInspect
Update a process-to-process link in the organization's Clarity landscape when the caller can manage both endpoint teams.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Relationship type between the source process node and target process node | |
| orgId | Yes | ||
| state | No | Whether the link is suggested by Duvo or confirmed by a user | |
| confidence | No | Confidence score from 0 to 1, or null to clear it | |
| source_node_id | No | Replacement hierarchy node id for the source process | |
| target_node_id | No | Replacement hierarchy node id for the target process | |
| process_link_id | Yes | Unique process-link identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present but only provide hints (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds valuable behavioral context beyond these hints by stating the authorization requirement ('can manage both endpoint teams'), which is not derivable from the annotations. It does not delve into side effects, but that is less critical given the annotations clarify safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, resource, and a key condition without any unnecessary words. It is concise and immediately informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters with rich schema descriptions and no output schema, the description covers the essential purpose and a critical permission gate. It does not explain the broader domain (e.g., what a Clarity landscape is), but that is likely obvious from the tool name and sibling context. The description is sufficient for an agent to understand when to invoke 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?
The schema description coverage is 86% (6 of 7 parameters have descriptions), so the schema already provides robust parameter semantics. The description text itself adds no parameter-specific meaning, only the general context. Per the rubric, the baseline for high schema coverage is 3, and the description does not raise it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') and a clear resource ('a process-to-process link in the organization's Clarity landscape'), which distinguishes it from sibling tools like createClarityProcessLink, deleteClarityProcessLink, or listClarityProcessLinks. It also adds a condition about managing endpoint teams, giving precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the context for use (updating an existing process link) and includes a relevant prerequisite ('when the caller can manage both endpoint teams'). It does not explicitly name alternatives or exclusions, but the context is unmistakable given the sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateClarityProcessSharingUpdate Clarity Process SharingCInspect
Enable or disable sharing for a clarity process
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clarity process ID. | |
| enabled | Yes | Whether public process sharing is enabled. | |
| proposalShareEnabled | No | Whether the transformation proposal is included. Public sharing must already be enabled when only changing this setting. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-readOnly, non-idempotent mutation, but the description adds no behavioral context beyond what the annotations provide. It does not mention side effects, reversibility, or required permissions. For a mutation tool, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundancy. It is appropriately concise and front-loaded, conveying the core action efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema), the description is too minimal. It does not explain what the response looks like, whether the operation is reversible, or how to properly sequence parameter changes. For a mutation with parameter dependencies, this is inadequate.
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?
Despite 100% schema description coverage, the tool description adds no value to parameter semantics. It does not explain the dependency between 'enabled' and 'proposalShareEnabled' (e.g., the sequence requirement stated in the schema's description of proposalShareEnabled). The description misses an opportunity to clarify parameter 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?
The description clearly states the verb ('Enable or disable') and the resource ('sharing for a clarity process'). It distinguishes from the sibling 'getClarityProcessSharing' (read) and 'updateClarityProcess' (broader updates). However, it doesn't mention the additional 'proposalShareEnabled' parameter, so the purpose is slightly narrow.
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 guidance on when to use this tool versus alternatives. There is no explanation of prerequisites (e.g., requiring existing sharing to be enabled before changing proposalShareEnabled) or comparison to related tools like getClarityProcessSharing. The 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.
updateClarityTeamSettingsUpdate Clarity Team SettingsCInspect
Update clarity team settings for financial calculations
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| industry | No | ||
| language | No | ||
| teamSize | No | ||
| companyName | No | ||
| annualRevenue | No | ||
| averageHourlyRate | No | ||
| emailReportsEnabled | No | ||
| emailReportIncludeSummary | No | ||
| emailReportIncludeCaptures | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a mutation (readOnlyHint false) but not destructive. The description adds no behavioral details beyond the word 'Update', such as side effects, permission requirements, or idempotency. Since annotations already cover basic safety, the description contributes minimal additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 8-word sentence, which is concise but at the expense of completeness. Given the complexity of 10 parameters and no output schema, the description is too terse to be maximally useful. It earns a baseline 3 for being brief but lacking structure and key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no output schema, and very low schema description coverage, the description is woefully incomplete. It does not explain what 'clarity team settings' encompass, how updating them affects financial calculations, or what the tool returns. The agent has to infer nearly everything from parameter names, which is insufficient.
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 10% (only team_id has a description). The tool description does not explain any of the 10 parameters, their allowed values, or their purpose. Parameter names like 'industry' and 'language' give some hint, but no semantics beyond the schema are provided. For a tool with low coverage, the description should compensate but fails to do so.
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 'Update', the resource 'clarity team settings', and the context 'for financial calculations'. It is specific enough to distinguish this from sibling tools like getClarityTeamSettings or other update tools, though it does not explicitly differentiate from alternatives.
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 offers no guidance on when to use this tool versus alternatives, such as getClarityTeamSettings for reading settings. There is no mention of prerequisites, when not to use it, or any conditions that dictate its proper invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateConnectionUpdate ConnectionAInspect
Update an existing connection. For sensitive header values, sending an empty string keeps the existing value; send a new value to overwrite. Toggling shared moves the connection between personal and team-shared.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| shared | No | ||
| headers | No | ||
| server_url | No | ||
| auth_method | No | ||
| connection_id | Yes | Connection ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it explains the empty-string semantics for sensitive header values (keep existing vs. overwrite) and the effect of toggling 'shared' (moving between personal and team-shared). These are non-obvious behaviors that the schema alone doesn't convey. Annotations only provide basic hints (readOnlyHint=false, etc.), so the description carries significant weight and handles it well, though it could mention permissions or reversibility.
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, each delivering essential information: the core action and two key behavioral nuances. It is front-loaded with the purpose and contains no filler. Every word earns its place, making it a model of 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 mutation tool with 6 parameters and no output schema, the description provides some crucial behavior (header handling, shared toggling) but omits other important context: what happens to unspecified fields (presumably unchanged), whether any fields are conditionally required, or the expected response format. With no output schema and sparse annotations, a more complete description would improve safety and correctness. The provided details are useful but not 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 schema description coverage is only 17% (only connection_id has a description), so the description must compensate. It does explain the semantics of 'headers' (empty-string behavior) and 'shared' (toggling effect), which are clearly useful. However, it leaves other fields (name, server_url, auth_method) undefined, and the nested structure of headers (secret/plaintext) is not described. This is partial compensation for a low-coverage schema, but not complete.
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 'Update an existing connection,' a specific verb+resource statement that clearly identifies the tool's function. It distinguishes from siblings like createConnection and deleteConnection by focusing on updating, and the resource is unambiguous. Though it doesn't name specific sibling tools, the scope is clear enough.
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 guidance is provided about when to use this tool versus alternatives (e.g., createConnection, deleteConnection). The intended usage is implied by the tool name and 'existing connection,' but the description gives no context, exclusions, or alternative recommendations. This falls under 'no guidance' rather than 'implied usage' because it doesn't even mention prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateCredentialUpdate credential by idAInspect
Update a login by id. At least one of password or otp_secret must remain set after the update. Editing a team-shared login or toggling sharing requires manager role.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| domain | No | ||
| shared | No | ||
| userId | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| password | No | ||
| username | No | ||
| otp_secret | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-readonly, non-idempotent, non-destructive operation. The description adds valuable constraints about password/otp_secret preservation and permission requirements that go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and critical constraints. No filler words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter update tool, the description covers key constraints and permissions, but omits explanation of the required userId field and return behavior. The schema's team_id description helps, but overall completeness is moderate.
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 13% (only team_id). The description clarifies the relationship between password and otp_secret and the role requirement for shared, but it does not explain userId, domain, or username, leaving many parameters under-documented.
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 'Update a login by id,' specifying the verb, resource, and method. It distinguishes from siblings like createCredential, deleteCredential, getCredential, and listCredentials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: at least one of password or otp_secret must remain set, and manager role is required for team-shared logins or toggling sharing. However, it does not explicitly mention alternatives or when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateEvalRubricUpdate Eval RubricADestructiveInspect
Edit a single Agent-specific evaluation rubric's title and/or description. The edit produces a NEW rubric (with a new id and slug) so previously scored Runs stay attributed to the original criterion; the response contains the new rubric.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Short, human-readable Pass/Fail rubric title. | |
| agentId | Yes | The agent's unique identifier (Assignment ID) | |
| rubricId | Yes | The custom rubric's unique identifier | |
| description | No | A 1-2 sentence Pass condition phrased as a question. | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true, but the description adds crucial non-obvious behavior: 'The edit produces a NEW rubric (with a new id and slug).' This clarifies that the original rubric is preserved for run attribution and that the response contains the new rubric. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second reveals the key side effect and response. Every word earns its place, with no filler or redundancy. It is front-loaded and 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?
Given 5 parameters and no output schema, the description effectively covers the critical side effect and response behavior. The complex selected_automation_revision_id parameter is fully documented in the schema, so the description need not repeat it. Overall, the combination of description, annotations, and schema provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 5 parameters with detailed descriptions (100% coverage), so the baseline is 3. The description adds minimal parameter-level meaning, only implying that title and description are the editable fields. No extra guidance beyond the schema is offered.
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: 'Edit a single Agent-specific evaluation rubric's title and/or description.' It clearly differentiates from sibling tools like createEvalRubric, deleteEvalRubric, and replaceEvalRubrics by emphasizing it edits only title/description and produces a new rubric. The core action and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'previously scored Runs stay attributed to the original criterion' explains why you would use this tool instead of replacing or deleting rubrics. However, it does not explicitly name alternatives or state when not to use this tool, stopping short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateFileContentUpdate File ContentCIdempotentInspect
Update the content of a text file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the file relative to the team's storage root | |
| content | Yes | New UTF-8 text content for the file | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a write operation (readOnlyHint=false), idempotent (idempotentHint=true), and non-destructive (destructiveHint=false). The description does not add any behavioral context beyond restating that it updates content; it does not disclose that this overwrites the entire file, any permission requirements, or side effects. Thus the description adds minimal value over 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, front-loaded sentence with no filler words. It is appropriately concise for a simple update operation, though it provides no structured additional details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool and the rich annotations and schema, the description is partially complete. It conveys the basic purpose but omits usage context and the overwrite behavior. The presence of good annotations and schema raises it from a 2 to a 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all three parameters (path, content, team_id), achieving 100% schema coverage. The description adds no additional parameter documentation, so it relies entirely on the schema, which is sufficient to reach a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates the content of a text file, using a specific verb ('update') and resource ('text file content'). However, it does not explicitly distinguish this tool from sibling file tools like updateSkillFile or renameFile, so clarity is good but not exceptional.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or comparison to sibling file operations like getFileContent or deleteFile. This is a complete absence of usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updatePulseDashboardUpdate Pulse DashboardAInspect
Update a Duvo Pulse dashboard's settings — rename it. Only the creator can update it.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| artifactId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not idempotent. The description adds the meaningful behavioral detail that only the creator can perform the update, which is an auth-related constraint. It does not contradict the annotations and adds useful context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose and adds the permission constraint. No wasted words, and every element adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple rename operation with only two parameters. Annotations provide safety profile, and the description covers the core behavior and the permission constraint. No output schema exists, so no need to describe return values. It is adequately complete for the task's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'title' is the new name via 'rename it', but it does not explicitly describe 'artifactId' as the dashboard identifier. The parameter semantics are partially conveyed, but the artifactId relies on inference from the tool name and uuid format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates a Dashboard and specifies the action as renaming it. This distinguishes it from sibling tools like createPulseDashboard, deletePulseDashboard, and movePulseDashboard, which have different verbs. The clarification 'rename it' removes any ambiguity about what 'settings' means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use to rename a Pulse dashboard, and it adds a critical usage prerequisite: only the creator can do it. It does not explicitly exclude alternatives or mention when not to use, but the context and permission constraint are sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateQueueUpdate QueueCInspect
Update a queue.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New queue name. Must be unique within the team. This route is refused once a team is on automation revisions, where a queue is instead renamed through its revision binding and uniqueness is checked per revision on activation. | |
| queue_id | Yes | The queue's unique identifier | |
| folder_id | No | New folder id, or null to move to the root. | |
| description | No | New description, or null to clear. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive update. The description adds no behavioral details such as required permissions, side effects, or uniqueness constraints, relying entirely on the schema's parameter notes.
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 maximally concise but at the cost of meaning; it is a single uninformative sentence that repeats the tool's name and provides no structured 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?
Despite having four parameters and an absent output schema, the description offers no context about the operation's effect, return value, or usage guidance. The schema compensates for parameter details, but the description is too thin for an agent to fully understand the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for queue_id, name, folder_id, and description. The description itself contributes no parameter information, but the schema fully documents the inputs, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a queue' restates the tool name and title without specifying which queue attributes can be changed or how this differs from sibling tools like updateQueueLabel or updateCase. It is essentially a tautology.
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. There are no hints about preconditions (e.g., automation revisions) or exclusions, so an agent cannot determine appropriate use cases from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateQueueLabelUpdate Queue LabelAInspect
Update a label's key, value, or color. Renaming key/value affects every case assigned to this label.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| value | Yes | ||
| label_id | Yes | The label's unique identifier | |
| queue_id | Yes | The queue's unique identifier | |
| color_hue | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnly=false and destructive=false. The description adds the important side-effect that renaming key/value affects every case assigned to the label, which is valuable behavioral context not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded action and a critical side-effect. No wasted words, perfectly sized for the tool's scope.
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 update operation, it covers the action and a key side-effect. Lacks return-value or error details, but with no output schema and a straightforward operation, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% (label_id, queue_id). The description mentions key, value, and color, but provides no additional semantics for color_hue beyond schema min/max, and does not clarify the meaning of key vs value. It partially compensates for low coverage but not fully.
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 'Update a label's key, value, or color', specifying the verb and resource, and distinguishes it from create/delete/list queue label siblings. The scope is clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative guidance is provided. It implies usage for updating existing labels but does not contrast with createQueueLabel or deleteQueueLabel. The context 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.
updateRevisionUpdate RevisionAInspect
Update a revision's configuration, name, description, or handover targets. Returns the updated revision.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Build configuration object | |
| build_id | Yes | The build's unique identifier | |
| revision_name | No | Optional user-defined name for this revision. Pass null to clear. | |
| handoverTargetIds | No | Agent IDs that this agent can hand over work to | |
| revision_description | No | Optional user-defined description for this revision. Pass null to clear. | |
| selected_automation_revision_id | No | The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected — it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a mutating operation (readOnlyHint=false), so the description need not restate that. It adds the fact that the updated revision is returned, which is useful. However, it does not disclose behavior around the selected_automation_revision_id semantics or potential errors; these are left to the schema parameter description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core action and fields front-loaded. The additional sentence about return value is necessary and concise. 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?
The tool is moderately complex with a nested config object and a nuanced selected_automation_revision_id behavior, but the schema's parameter descriptions cover the semantics thoroughly. The description provides a high-level action and return type, which is sufficient for invocation. It could mention differentiation from related revision tools (create/promote) for full completeness, but overall it's fairly complete given the schema.
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 6 parameters have schema descriptions, giving 100% coverage. The description recaps four of them (configuration, name, description, handover targets) but adds no new details beyond the schema. The baseline score of 3 is appropriate because the schema carries the explanatory weight.
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 'Update', the resource 'revision', and enumerates specific configurable aspects (configuration, name, description, handover targets). This distinguishes it from sibling tools like createRevision, getRevision, and promoteRevision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used when modifying an existing revision, but it does not explicitly state when to use it versus createRevision or promoteRevision, nor does it mention prerequisites or exclusions. The 'update' verb provides general context, but explicit guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateScheduleUpdate ScheduleAInspect
Update fields on an existing schedule. Only supplied fields are changed; omitted fields retain their current values. Owners may update their own schedules; team superadmins may update any schedule on agents in the current team.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | ||
| cron | No | ||
| time | No | ||
| enabled | No | ||
| agent_id | Yes | The agent's unique identifier | |
| timezone | No | ||
| frequency | No | ||
| recurring | No | ||
| schedule_id | Yes | The schedule's unique identifier | |
| day_of_month | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write/non-idempotent/non-destructive, but the description adds valuable behavior: partial update semantics ('only supplied fields are changed') and authorization constraints (owner vs team superadmin). This goes beyond 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?
Three sentences, no wasted words. Each sentence adds unique value: action, patch semantics, and permission scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core behavior and permissions, but omits return-value expectation, field interdependencies (e.g., cron vs frequency), and validation rules. For a tool with 10 parameters and no output schema, a bit more detail would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, and the description does not explain the meaning of fields like day, cron, time, timezone, or frequency. It only generalizes that omitted fields retain current values, which doesn't compensate for the undocumented 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 opens with the specific verb 'Update' and resource 'existing schedule,' clearly differentiating from sibling tools like createSchedule and deleteSchedule. The partial-update caveat further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description doesn't explicitly mention alternatives or state when not to use, but 'existing schedule' implies this is for modification, not creation or deletion. Permission context is helpful but no direct comparison with sibling tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateSecretUpdate SecretAInspect
Update an env-var secret. Send values to replace all entries, or any of rename_keys, remove_keys, add_values for a non-destructive patch. Editing a team-shared secret or toggling sharing requires manager role.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| shared | No | ||
| values | No | ||
| add_values | No | ||
| remove_keys | No | ||
| rename_keys | No | ||
| service_slug | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnly=false, destructiveHint=false, and idempotentHint=false. The description adds valuable context beyond these flags: it discloses that `values` is a full replacement (destructive to existing entries) while the patch parameters are non-destructive, and it mentions the manager role requirement for team-shared secrets. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver the essential information without fluff. The first sentence states the purpose, the second explains the two usage modes, and the third adds a role-based caveat. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and no output schema, the description captures the primary behavior and role constraints, but leaves gaps: it does not explain the effect of `name`, `shared` in detail, or what `service_slug` does. Given the complexity and lack of schema descriptions, the description could be more complete to fully guide an agent.
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 0% description coverage, so the description must compensate. It clearly explains `values`, `rename_keys`, `remove_keys`, and `add_values` semantics, but omits `name`, `shared` (only implied via 'toggling sharing'), and `service_slug` entirely. With 8 parameters, this partial coverage is not fully sufficient, but it adds meaningful value for the core operations.
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 'Update an env-var secret', which is a specific verb+resource that clearly separates this from sibling tools like createSecret, deleteSecret, and getSecret. It immediately conveys the tool's purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on how to use the tool's parameters: 'Send `values` to replace all entries, or any of `rename_keys`, `remove_keys`, `add_values` for a non-destructive patch.' It also notes role requirements for shared secrets, giving clear context. It does not explicitly name alternative tools, but the intent is clear enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateSkillFileUpdate Skill FileAIdempotentInspect
Update the content of a file in a skill, overwriting the active revision in place — the previous content is not recoverable. Prefer the non-destructive flow when you can: createSkillRevision to open a draft, updateSkillRevisionFile to edit it, promoteSkillRevision to activate it. Only team skills can be edited.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Relative path to the file inside the skill, e.g. SKILL.md. | |
| content | Yes | New UTF-8 text content for the file. | |
| skill_id | Yes | Skill ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'overwriting the active revision in place — the previous content is not recoverable,' which is a destructive behavior, but annotations declare destructiveHint: false. This is a direct contradiction. The description does add useful behavioral context, such as irrecoverability and team-only constraint, but the contradiction with annotations overrides 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?
The description is three sentences, front-loaded with the core action, and every sentence earns its place: the operation, the irrecoverability warning, the safer alternative flow, and the team-only constraint. No fluff or repetition.
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 the annotation contradiction, the description alone covers the essential context for this mutation tool: what it does, the destructive consequence, the recommended safer path, and a permission constraint. With a simple three-parameter schema and no output schema, this is sufficient and thorough.
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 100% parameter description coverage, with 'path', 'content', and 'skill_id' each documented. The tool description adds no additional parameter-level semantics beyond the schema, so the baseline of 3 applies. It slightly reinforces that 'content' is the file body, but no new information is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Update the content of a file in a skill, overwriting the active revision in place.' It specifies the exact resource and action, and effectively distinguishes itself from sibling tools by explicitly naming the non-destructive alternatives (createSkillRevision, updateSkillRevisionFile, promoteSkillRevision).
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 explicit when-to-use guidance: 'Prefer the non-destructive flow when you can,' followed by the exact alternative sequence. It also states a critical precondition: 'Only team skills can be edited.' This is clear, actionable, and directly addresses alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateSkillRevisionUpdate Skill RevisionAInspect
Rename a skill revision or change its description. Works for drafts, the active revision, and historic revisions.
| Name | Required | Description | Default |
|---|---|---|---|
| revision_name | No | Optional user-defined name for this revision. Pass null to clear. | |
| skill_revision_id | Yes | Skill revision ID. | |
| revision_description | No | Optional user-defined description for this revision. Pass null to clear. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent, non-destructive mutation. The description adds the useful context that it applies to revisions in any state, but does not disclose additional behaviors like whether existing values are overwritten or if there are permission requirements. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence clearly states the tool's action and scope. No filler or redundant wording. It is appropriately sized for the simple 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 simple update operation with complete schema coverage and annotations, the description is nearly sufficient. It could have explicitly noted that this tool only affects metadata and not file contents, especially given the sibling updateSkillRevisionFile, but the main purpose is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all three parameters, including the meaning of null to clear. The description does not reference any parameters directly, so it adds no extra parameter-level meaning; the schema is the primary source.
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 specific verbs ('Rename', 'change') and clearly identifies the resource ('a skill revision') and the fields it modifies ('name', 'description'). It also states that it works across drafts, active, and historic revisions, which distinguishes it from creation/deletion/promotion tools like createSkillRevision, deleteSkillRevision, and promoteSkillRevision.
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 implicit context by stating that it works for drafts, active revisions, and historic revisions, which tells the agent when it applies. However, it does not explicitly compare with alternative tools like promoteSkillRevision or updateSkillRevisionFile, so the usage boundaries are only implied rather than fully defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateSkillRevisionFileUpdate Skill Revision FileADestructiveIdempotentInspect
Write a text file into a skill revision. Writing into a draft leaves the active revision untouched until the draft is promoted; writing into the active revision changes what the skill runs immediately. Historic revisions are read-only: create a draft from one to edit it.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Relative path to the file inside the revision, e.g. SKILL.md. | |
| content | Yes | New UTF-8 text content for the file. | |
| skill_revision_id | Yes | Skill revision ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description details the concrete behavioral consequences: draft writes are deferred until promotion, active writes change runtime immediately, and historic revisions cannot be written. This adds valuable context 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?
Three concise sentences deliver the purpose, the behavioral nuance, and the historic-revision constraint. Every sentence earns its place with zero redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully conveys the revision-state model and the read-only constraint for historic revisions. No output schema exists, so return-value details aren't required. It could explicitly mention overwrite/upsert behavior, but the idempotentHint annotation partially covers that expectation.
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 100% of parameters with clear descriptions for path, content, and skill_revision_id. The description itself adds no parameter-specific details, but the schema already fully documents the semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource action: 'Write a text file into a skill revision.' It then distinguishes draft, active, and historic revisions, which clearly separates it from generic file-update tools like updateSkillFile and other revision-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear situational guidance: writing into a draft is safe until promotion, writing into active affects execution immediately, and historic revisions are read-only (implying a draft must be created first). It doesn't explicitly name alternative tools, but the context is sufficiently directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateSlackTriggerUpdate Slack Channel TriggerAInspect
Update a Slack channel trigger you own — repoint it at another channel, change which messages match, or pause and resume it with enabled. Only the supplied fields change. Resuming a paused trigger requires the Slack connection it runs off to still be available on the agent; changing the channel resets the trigger's seen-message state.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | No | Set to false to pause the trigger without deleting it, or true to resume it. Resuming requires the connection the trigger uses to still be available on the agent. | |
| channel_id | No | New Slack channel ID to watch. Omit to leave unchanged. | |
| is_private | No | Whether the channel is private. | |
| match_rule | No | Which channel messages fire the trigger: `{"kind":"all"}` for every message, or `{"kind":"contains","values":["invoice"]}` to match keywords. | |
| trigger_id | Yes | The Slack channel trigger's unique identifier | |
| channel_name | No | New Slack channel name, without the leading `#`. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations being sparse (only readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description adds significant behavioral detail: partial update semantics, ownership restriction, the requirement for connection availability when resuming, and the state reset on channel change. This goes well beyond the annotations and provides essential safety and side-effect information.
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: the first front-loads the full scope, the second adds critical caveats. Every sentence delivers unique value with zero fluff, and the structure is easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 6 parameters, no output schema, and no annotations beyond the basic hints, the description covers key aspects: partial updates, ownership, side effects (state reset), and a prerequisite (connection availability). It doesn't mention what the tool returns or error scenarios, but given the absence of an output schema and the richness of the schema descriptions, it is reasonably complete. A 5 would require return-value or error handling details.
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 covers all parameters with detailed descriptions (100% coverage), so the baseline is 3. The description adds extra semantic context linking parameters to behavior ('repoint it at another channel' refers to channel_id/channel_name, 'change which messages match' refers to match_rule, 'pause and resume it with enabled'). This reinforces intent and clarifies how parameters affect state, justifying 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 clearly states the verb 'Update' and the resource 'Slack channel trigger', and specifies what can be changed (channel, match rule, enabled state). It distinguishes from sibling tools like createAgentSlackTrigger or updateAgentCaseTrigger by emphasizing 'you own' and 'Slack channel trigger'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to modify an existing trigger you own. It includes implied exclusions (only your own triggers) and conditions ('Resuming a paused trigger requires the Slack connection...', 'changing the channel resets...'). However, it does not explicitly name alternatives like create or delete tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateTeamInviteUpdate Team InviteAInspect
Change the role on a pending team invitation. Only pending invitations can be updated — one already accepted or declined is rejected. Requires the Manager role or above on the invitation's own team.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the pending invitation to update. | |
| role | Yes | New team role for the invitation. One of: team:owner, team:superadmin, team:admin (deprecated), team:manager, team:builder, team:member, team:clarity-member. You cannot assign a role above your own. | |
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=false, indicating a write operation, and the description confirms this with 'Change the role.' It goes beyond annotations by disclosing failure conditions (accepted/declined invitations are rejected) and permission requirements (Manager role or above), adding valuable behavioral context 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 two sentences long and front-loaded with the core purpose. The first sentence states the action, and the second covers constraints and permissions. Every word earns its place; no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description covers the essential aspects: what the tool does, when it can be used (pending invites only), and who can use it (Manager+). It does not mention the return value or side effects, but for a simple role-update operation with good annotations and full schema coverage, this is reasonably complete. A minor gap is lack of any post-update behavior, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: each parameter (id, role, team_id) has a detailed description in the schema. The tool description does not add any further parameter-level information, so it neither improves nor degrades the schema's clarity. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Change the role on a pending team invitation.' It names the specific resource (pending team invitation) and the attribute being modified (role). This distinguishes it from sibling tools like createTeamInvite, deleteTeamInvite, listTeamInvites, and updateTeamMemberRole.
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 when-to-use guidance: 'Only pending invitations can be updated — one already accepted or declined is rejected.' It also specifies the required permission ('Requires the Manager role or above'). It does not name alternative tools, but the constraints are clear enough to guide appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateTeamMemberRoleUpdate Team Member RoleAInspect
Update an existing team member's role. Requires the Manager role or above; only an Owner may grant or remove the Owner role, and the last remaining Owner cannot be demoted. A member whose Owner role is inherited from the organization cannot be changed here.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| team_id | No | Duvo team UUID to operate on. API keys are pinned to a single team — omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here. | |
| memberId | Yes | Member (user) ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it discloses permission gating, role-grant restrictions, and edge cases. It also states that inherited Owner roles cannot be modified here, which goes beyond the annotations' simple false hints. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the primary purpose, followed by relevant constraints. Every sentence adds unique value without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity mutation tool with no output schema, the description captures key permission restrictions and edge cases. It falls slightly short by not specifying allowed role values or failure handling, but given the annotations and schema, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes team_id and memberId adequately, but the 'role' parameter is just a string with no enum or explanation. The description discusses Manager/Owner roles in context, providing some semantics, but does not enumerate valid role values or default behavior, leaving a gap for the uncovered 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?
The description clearly states the action ('Update an existing team member's role') with a specific verb and resource, and distinguishes it from siblings like removeTeamMember and listTeamMembers. It also conveys the scope of the operation, making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit prerequisites (Manager role or above) and exclusion conditions (inherited Owner cannot be changed, last Owner cannot be demoted). However, it does not explicitly reference alternative tools or contrast with other update operations, 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.
upgradeClarityProcessUpgrade Clarity ProcessBInspect
Move a v1 clarity process into v2. Rows with generated analysis are reset in place and regenerated; rows without analysis migrate in place when not generating.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only basic mutation flags (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds value by disclosing that rows with generated analysis are reset and regenerated, while rows without analysis migrate in place. This gives important behavioral context, but it omits details on reversibility, error handling, or side effects, which would be useful for a v1-to-v2 migration.
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 long, front-loaded with the core purpose, and includes additional behavioral detail without redundancy. Every sentence contributes meaning, making it efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a v1-to-v2 upgrade and the lack of annotations and output schema, the description covers the core transformation but leaves gaps: it does not clarify whether the process is mutated in place or a new version is created, nor does it address metadata or other process aspects. It is minimally adequate but not thorough.
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 required parameter 'id' has no description in the input schema (0% schema description coverage), and the tool description does not explain what the 'id' refers to or how it is used. Since the description must compensate for low schema coverage but fails to do so, this scores very low.
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: 'Move a v1 clarity process into v2.' It also explains the behavioral difference for rows with and without generated analysis. However, it does not explicitly distinguish this tool from siblings like updateClarityProcess or duplicateClarityProcess, which could serve related but different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is used for upgrading a v1 process to v2, but it provides no explicit guidance on when to use it versus alternatives, nor does it specify prerequisites or when not to use it. The context of sibling tools suggests a clear niche, but the description itself lacks explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uploadSandboxFileUpload Sandbox FileAInspect
Upload a file directly to the sandbox. Maximum file size is 10MB. For larger files, use POST /v2/sandboxes/:sandbox_id/upload-urls.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox_id | Yes | The sandbox's unique identifier |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are neutral (all false), so the description carries the disclosure burden. It adds the 10MB size limit and a reference to the upload-urls alternative, which is useful. However, it does not explain what happens on failure, whether the file overwrites existing content, or any other behavioral aspects.
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, each carrying important information: the action, the size limit, and the alternative. No wasted words and the key detail 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?
Despite having only one parameter, the missing file-content parameter makes the description incomplete for actual usage. The description provides the size limit and alternative, but without explaining how to pass the file, the tool cannot be correctly invoked.
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 only includes `sandbox_id`, with no parameter for the file content itself. The description claims a file is uploaded but provides no guidance on how to provide the file. This is a critical omission, making the tool practically non-invocable based on the given information.
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 ('Upload a file directly to the sandbox') with a specific verb and resource. It also distinguishes itself from the alternative upload-urls flow by mentioning the endpoint for larger files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides an alternative for when not to use this tool: 'For larger files, use POST /v2/sandboxes/:sandbox_id/upload-urls.' This gives an unambiguous usage condition based on file size.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsertAgentTriggerUpsert Agent TriggerAIdempotentInspect
Create or update the authenticated user's trigger for an integration on an agent. The integration must already be connected to the agent (its OAuth connection set up in the Duvo dashboard). Set enabled: false to pause a trigger without deleting it.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent's unique identifier | |
| enabled | No | Whether the trigger is active. Defaults to true. | |
| trigger_type | Yes | Trigger type within the integration (e.g. `email_received`). Discover valid values via the trigger types endpoint. | |
| filter_config | No | Integration-specific filter config (e.g. sender/subject filters). Shape comes from the integration's filter schema. | |
| integration_slug | Yes | Integration slug the trigger fires for (e.g. `gmail`, `outlook`, `linear-native`, `google-drive`). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true, readOnlyHint=false, and destructiveHint=false. The description adds context beyond these by explaining the upsert semantics, the OAuth prerequisite, and the pause-not-delete behavior for enabled:false. It does not reveal potential side effects or edge cases, but the added context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose. Every sentence adds value: the first states what it does, the second covers the prerequisite and a key behavioral option. No redundancy 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 an upsert tool with 5 parameters and no output schema, the description covers the main functionality, prerequisite, and a notable behavioral nuance. It doesn't explicitly describe the return value, but that's not critical since no output schema is provided. The coverage is 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?
Schema coverage is 100%, so the schema fully documents each parameter. The description adds a meaningful layer by explaining the 'enabled' parameter's pause behavior and noting the 'authenticated user' scope, which helps clarify ownership. This is a modest improvement over the schema 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: 'Create or update the authenticated user's trigger for an integration on an agent.' This is a specific verb+resource+scope, distinguishing it from sibling tools like createAgentSlackTrigger or createAgentCaseTrigger that target specific trigger types.
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 key prerequisite: the integration must already be connected via OAuth in the Duvo dashboard. It also gives a useful usage tip: setting enabled:false pauses a trigger without deleting it. However, it does not explicitly mention when to choose this over alternatives or when not to use it, leaving a slight gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Runtime AI governance: decision gates, human approval, hash-chained audit, compliance mapping.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Connect, monitor, and control AI agents — tasks, approvals, schedules, and governance.
Manage products, EU Digital Product Passports, operator parties, and GS1 EPCIS supply-chain events.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides four MCP servers for retail/CPG operations (ERP, supplier network, email, spreadsheet) with a staged-write safety model that requires human approval for all mutations.11Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to securely call enterprise MCP tools with tenant-scoped RBAC, human approvals, audit logging, and multi-tool workflows across customer, order, document, and ticket data.
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to investigate and resolve operational exceptions across orders, payments, inventory, and fulfillment through a multi-system truth and guarded actions.
- AlicenseAqualityBmaintenanceEnables AI agents to safely inspect and execute version-controlled operational runbooks with policy checks, dry-run planning, and out-of-band approvals.3MIT