Timix.AI
Server Details
Time tracking, live project budgets, and billing exports for service firms.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4/5 across 114 of 114 tools scored. Lowest: 2.5/5.
Multiple tools have overlapping purposes, e.g., create_time_report and log_time both create a single time entry with near-identical descriptions. There are also many similar getter/list tools that blur together, making it hard for an agent to select the right one.
Most tool names use snake_case, but verbs are inconsistent: 'list' vs 'get' for similar operations, 'manage' combines create/update/delete, and 'use_favorite' is an outlier. This pattern reduces predictability.
With 114 tools, the set is extremely large and far beyond a well-scoped server (typical 3-15). This overwhelms agents and suggests many tools could be consolidated or removed.
The tool surface covers a broad domain including customers, projects, tasks, time tracking, invoicing, and user management, but there are gaps like no list_users or direct user listing, and some operations seem redundant rather than filling missing functionality.
Available Tools
114 toolsapprove_timesheetAInspect
Approve a submitted timesheet period for a team member. The period and its time reports transition to Approved. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded — timesheet approval is PM work, not finance).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| submission_period_id | Yes | Id of the submission period to approve (from get_pending_approvals or list_approval_history). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the state transition, the confirm flag behavior (preview vs action), and role restrictions. Lacks mention of idempotency_key behavior, but that is covered in the schema. Overall good transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and effect, second provides usage and role guidance. No wasted 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?
Covers purpose, usage, roles, and behavioral effect. For a simple approval tool with three parameters and no output schema, this is sufficient. Could mention what happens after approval (e.g., notification), but 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?
Schema coverage is 100%, so parameters are already described. The description adds context that confirm must be true to perform the action, and reinforces the role requirement, 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 a specific verb 'Approve' and resource 'submitted timesheet period', clearly stating the effect 'transition to Approved'. This distinguishes it from siblings like reject_timesheet or submit_timesheet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mentions when to use (on submitted periods), the required roles (Manager/Admin/Owner, excludes Finance), and that confirm=true is needed to proceed. Does not explicitly mention alternatives or when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_user_to_customerAInspect
Assign an organization member to a billing customer so they can see that customer and all its projects. Requires the org_user_id (discover it with get_project_team or get_employee_timesheet) and the customer_id. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself (Owner is not targetable by Admin).
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | Id of the customer to assign the user to. | |
| org_user_id | Yes | Id of the OrganizationUser to assign (not the Firebase user id — use get_project_team to discover it). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description adds constraints (cannot assign Owner) and idempotency key mention, but does not detail side effects (e.g., whether it replaces or adds assignments) or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences; front-loaded purpose then requirements/constraints. 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?
Covers purpose, parameters, and constraints well. Lacks details on return value and behavior on duplicate assignment, but sufficient for 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 covers all 3 params (100%). Description adds value by clarifying org_user_id is not Firebase user ID and provides discovery methods, plus warns not to pass org 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?
Clear verb+resource: 'Assign an organization member to a billing customer'. Distinguishes from sibling 'assign_user_to_project' and 'remove_user_from_customer'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisites (org_user_id, customer_id), how to discover them, and constraint 'You cannot target a user more privileged than yourself'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_user_to_projectAInspect
Assign a member to a project so they can see it and log time against its tasks. Identify the member by email (preferred) or by org_user_id, and the project by project_id (discover ids with find_billing_work - never ask the user for an id). The organization is fixed by your context.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email of the member to assign (preferred). Provide this OR org_user_id. | ||
| project_id | Yes | Id of the project to assign the member to (required). Must be a project in your organization. | |
| org_user_id | No | Organization-user id of the member to assign. Provide this OR email. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the member will gain visibility and ability to log time, and explains idempotency key behavior. However, it does not specify whether reassignment overwrites existing assignments or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding distinct information: action/effect, identification guidance, and organizational context. No unnecessary words, efficiently front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no annotations, and no output schema, the description covers most needed context: effect, identification, idempotency, and fixed organization. It lacks details on re-assignment behavior or error scenarios, but overall complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a schema description. The tool description adds value by stating that email is preferred, explaining the purpose of the assignment, and clarifying the idempotency key's retry behavior. This goes beyond the schema's 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 action ('Assign a member to a project') and the effect ('so they can see it and log time against its tasks'). It distinguishes from siblings like 'remove_user_project' and 'assign_user_to_customer' by specifying the 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?
Provides explicit guidance on how to identify the member (email preferred, org_user_id alternative) and the project (project_id, with reference to 'find_billing_work' for ID discovery). Also warns against asking the user for IDs. However, it does not explicitly mention when not to use the tool or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_create_time_reportsAInspect
Create multiple time entries in one call. Supply an 'entries' array where each item has subtask_id, date (YYYY-MM-DD), and hours (> 0 and ≤ 24); optionally start_time (HH:mm, defaults to 09:00) and text. Entries are always attributed to you. Returns per-item results (partial failures are reported rather than aborting the batch). Max 50 entries.
| Name | Required | Description | Default |
|---|---|---|---|
| entries | Yes | List of time entries to create (max 50). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adequately discloses key behaviors: entries attributed to user, partial failure handling (returns per-item results), and a maximum batch size of 50. However, it omits mentioning idempotency_key behavior, which is defined in the schema but not in 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 concise at 4 sentences, with the main action ('Create multiple time entries in one call') front-loaded. Every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested array, partial failures, defaults), the description covers essential aspects. It lacks explicit return format details but mentions per-item results, which suffices without an output schema. Minor gap: no mention of idempotency_key effect on retries.
Complex tools with many parameters or behaviors need more documentation. Simple 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 significant value beyond schema: explains start_time default (09:00), hours range (>0 and ≤24), ownership attribution, partial failure reporting, and batch limit. This exceeds the schema's minimal 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 verb ('Create'), resource ('multiple time entries'), and mechanism ('in one call' with an 'entries' array). It distinguishes from single-creation tools like create_time_report by emphasizing bulk 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 specifies when to use this tool (batch creation) but does not explicitly mention when not to use it or suggest alternatives like create_time_report for single entries. The context is clear but lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_cost_ratesAInspect
Apply an organization-wide adjustment to every member's hourly COST rate, effective from a date. Supply EITHER adjustment_percentage (e.g. 5 to raise all rates by 5%, -3 to cut 3%) OR fixed_amount (set every rate to this exact amount), not both. The organization is fixed by your context - never pass an organization id. Rate values are never echoed back.
| Name | Required | Description | Default |
|---|---|---|---|
| fixed_amount | No | Set every rate to this exact amount. Provide this OR adjustment_percentage, not both. | |
| effective_from | Yes | Date the adjusted rates take effect (YYYY-MM-DD) (required). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| adjustment_percentage | No | Percentage to adjust every rate by (e.g. 5 = +5%, -3 = -3%). Provide this OR fixed_amount, not both. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that rate values are never echoed back, which is critical for an agent expecting a response. Also notes the effective date and organization-wide effect. However, with no annotations, it misses details like idempotency behavior (key present in schema) and authorization requirements, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, no wasted words. Front-loaded with purpose and constraint. Each segment 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?
Covers purpose, key constraints, and behavioral nuance (no echo). Without output schema or annotations, the description is adequate for a mutation tool with 4 parameters. Lacks detailed error behavior or response format, but the core usage is well explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, providing baseline 3. Description adds value by explaining the mutual exclusivity of adjustment_percentage and fixed_amount, giving examples (e.g., 5 for +5%), and clarifying the organization context (never pass an ID). This goes beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Apply') and resource ('organization-wide adjustment to every member's hourly COST rate'). Specifies scope (organization-wide, effective from a date) and distinguishes from granular tools like set_user_cost_rate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: for organization-wide adjustments. Provides constraints: supply one of adjustment_percentage or fixed_amount, not both, and never pass an organization id. Does not explicitly name alternatives for individual rate changes, but sibling tool set_user_cost_rate implies the contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_time_reportsAInspect
Apply a common text description update to multiple of your own time entries. Supply ids (list of time-report ids, max 100) and text (the new description). Returns per-id results — partial failures are reported rather than aborting the whole batch.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Ids of the time entries to update (max 100). | |
| text | Yes | New description to apply to all entries (max 1000 characters). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: batch nature, max 100 entries, returns per-id results, and partial failures reported. It does not detail idempotency (though idempotency_key param exists) or permissions, but covers 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 two sentences, front-loads the purpose, and contains no extraneous information. 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 3-param tool with no output schema, the description sufficiently covers the operation, constraints, and failure behavior. Missing details like authorization or exact output format, but adequate for selection and 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 coverage is 100%, so baseline 3. The description repeats 'ids' and 'text' with constraints (max 100, max 1000 chars) already in schema, adding no new meaning. The optional 'idempotency_key' is not mentioned. No additional value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Apply a common text description update') and the resource ('multiple of your own time entries'). It implicitly distinguishes from the sibling 'update_time_report' by emphasizing 'multiple' and 'own time entries', and mentions 'bulk' in the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool (updating many time entries with the same description). It does not explicitly exclude alternatives or mention when not to use, but the bulk vs single distinction is implicit given the sibling 'update_time_report'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_inviteAInspect
Cancel a pending invitation so the invite link is no longer valid. The email address can be re-invited at any time. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| invite_id | Yes | Id of the pending invitation to cancel. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses cancellation effect and preview mode, but lacks details on permissions, reversibility, or notification. Without annotations, the description carries full burden and omits these 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?
Two sentences with no waste; front-loaded with the core purpose. 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?
Covers main action but does not specify the return format of the preview or error conditions. With no output schema, the description should at least hint what the preview 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%, baseline 3. Description adds value by explaining the preview behavior tied to the confirm parameter, which goes beyond 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?
Clearly states the action (cancel) and resource (pending invitation), and distinguishes from siblings like invite_user and resend_invite by specifying the effect (link no longer valid) and the ability to re-invite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use (cancel pending invitation) and preview behavior (omit confirm for preview). No explicit exclusion or comparison to alternatives, but the preview guidance is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_scheduled_reportAInspect
Permanently delete a scheduled report definition. Requires confirm=true to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the scheduled report to delete. | |
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly discloses that the action is permanent deletion and requires confirmation. This is transparent about destructive behavior, though it doesn't detail side effects like cascading deletes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It conveys essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool, the description covers key aspects (purpose, requirement). It lacks mention of idempotency or preview behavior when confirm is false, but overall it is sufficiently complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with 100% description coverage. The description adds minimal value beyond the schema, only reiterating the confirm requirement. 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 ('Permanently delete'), the resource ('scheduled report definition'), and a key requirement ('confirm=true'). This distinguishes it from sibling tools like create_scheduled_report and update_scheduled_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the confirm requirement but does not explicitly state when to use this tool versus alternatives (e.g., temporarily disabling a report). Usage context is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_timerAInspect
Cancel (discard) your running timer without creating a time entry. The elapsed time is lost. No arguments needed.
| Name | Required | Description | Default |
|---|---|---|---|
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that elapsed time is lost, which is a key behavioral effect. However, it does not discuss idempotency or other edge cases, leaving some gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences convey purpose, effect, and argument expectations with zero 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?
For a simple tool with one optional parameter and no output schema, the description is complete. It covers the action, result, and argument expectations, requiring no further explanation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 optional parameter, and the description adds 'No arguments needed' to clarify that no input is required. This reinforces the schema but does not add new semantic details beyond the parameter'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 tool cancels or discards a running timer without creating a time entry. It distinguishes itself from similar tools like stop_timer by noting that elapsed time is lost, but does not explicitly name siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you want to discard time), but provides no explicit guidance on when not to use or alternatives. It does not mention any prerequisites or contraindications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_user_roleAInspect
Change an organization member's role. Returns a preview; re-call with the confirm_token and an idempotency_key to commit. Cannot assign the Owner role. Cannot escalate beyond your own role.
| Name | Required | Description | Default |
|---|---|---|---|
| new_role | Yes | New role to assign: Admin, Finance, Manager, Member, or Viewer. | |
| org_user_id | Yes | Id of the OrganizationUser record to update (not the Firebase userId). | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses key behaviors: preview returns a token, requires confirm_token and idempotency_key for commit, token expiration (~10 minutes), and role escalation limits. Does not cover failure modes or reversibility, but sufficient for most use cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three sentences covering purpose, process, and constraints. No filler, front-loaded with key action. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description covers the complete workflow including preview and commit. Could mention the return value structure (what preview returns beyond token) but overall adequate for correct tool 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%, baseline 3. Description adds meaning beyond schema: explains that org_user_id is not Firebase userId, confirm_token is obtained from preview, idempotency_key prevents duplicate actions, and new_role lists allowed values. Enhances 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?
Description clearly states it changes an organization member's role, outlines the two-step preview-commit process, and specifies constraints (cannot assign Owner, cannot escalate beyond own role). This distinguishes it from sibling tools like assign_user_to_customer or invite_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context and explicitly states restrictions (cannot assign Owner, cannot escalate beyond own role). Does not compare with alternative tools, but the two-step commit process is well-explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_budget_limitsAInspect
Check whether logging additional hours on a subtask would exceed its budget limits. Returns whether the budget is exceeded and a message.
| Name | Required | Description | Default |
|---|---|---|---|
| sub_task_id | Yes | Id of the subtask to check. | |
| additional_hours | Yes | Hours to check against the budget limit. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses that the tool returns a boolean and a message, suggesting a read-only check. However, it does not explicitly state that the tool has no side effects, does not modify data, or require specific permissions. More behavioral clarity 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 two sentences, front-loaded with the core purpose, and contains no unnecessary information. Every word contributes to clarity, 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 tool's simplicity (2 params, no output schema, no annotations), the description adequately covers the tool's purpose, usage scenario, and return value. It is mostly complete, though it could mention that it is a safe, read-only operation. The lack of output schema means the description compensates sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The description adds marginal context by framing the hours as 'additional' within the logging scenario, but this builds on what the schema already provides. Baseline 3 is appropriate as the description does not significantly 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 action ('Check'), the resource ('subtask budget limits'), and the specific scenario ('logging additional hours'). It effectively distinguishes this tool from siblings like 'get_budget_alerts' or 'get_budget_health' by focusing on a pre-logging check for a specific subtask.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 before logging additional hours to verify budget limits, but it does not explicitly state when to use this tool versus alternatives (e.g., 'get_budget_health', 'set_budget_thresholds'). No 'when not to use' or alternative recommendations are provided, making the guidance 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.
close_frame_orderAInspect
Close an Open frame order so no new invoices may link to it. Returns a preview unless confirm=true is set. Closing is not directly reversible; the order remains in the Closed state.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| frame_order_id | Yes | Id of the frame order to close. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses preview behavior, the confirm parameter's role, and that closing is not reversible. It stops short of detailing the preview's contents or idempotency behavior, maintaining a high but not complete 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?
Two sentences, front-loaded with the primary action, no filler. Every sentence adds information essential to understanding the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description does not explain what the preview contains. Idempotency_key behavior is mentioned only in the schema, not in the description. Given the tool's complexity and missing output documentation, the description is somewhat 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 covers 100% of parameters with descriptions. The description adds no new parameter-level meaning beyond what the schema provides; it only contextualizes the confirm parameter in the workflow. 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 ('Close') and the resource ('Open frame order'), and specifies the effect ('so no new invoices may link to it'). It distinguishes from sibling tools like delete_frame_order and update_frame_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 two-step workflow (preview then confirm) and warns about irreversibility, but does not explicitly state when to use this tool versus alternatives like delete_frame_order or update_frame_order. 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.
close_monthAInspect
Close a billing month so no further time can be logged or edited in it. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Reversible only by reopening the month.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year of the month to close (e.g. 2026). | |
| month | Yes | Calendar month to close (1-12). | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the preview-commit flow, token expiration (~10 min from schema), idempotency key behavior, and reversibility. Without annotations, description carries burden well, though impact on invoicing/budgets is not mentioned.
Agents need to know what a tool does to the 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: purpose then workflow. Every sentence adds value, no fluff. Front-loaded with main verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes core action and reversibility. Lacks return value or error detail, but for a commit tool it is sufficiently complete. Sibling 'reopen_month' provides related 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 covers all parameters (100% coverage). Description adds context: explains how confirm_token and idempotency_key are used in the workflow, enhancing meaning beyond 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 tool's purpose: 'Close a billing month so no further time can be logged or edited in it.' It also distinguishes itself from the sibling 'reopen_month' by noting reversibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 two-step process: call without token to preview, then with confirm_token and idempotency_key to commit. Mentions reversibility only by reopening, but does not explicitly list scenarios where alternatives should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_importAInspect
Commit a bulk-import CSV, creating the work hierarchy (customers, projects, tasks, subtasks) in the organization. Call validate_import first to verify the file.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_content | Yes | The CSV content to import. Must pass validate_import with no errors first. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool creates work hierarchy (customers, projects, tasks, subtasks), which is a write operation. No annotations provided, so the description must carry this burden. It mentions idempotency, indicating safe retry. Does not mention potential side effects like overwriting, but the core behavior is clear.
Agents need to know what a tool does to the 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 wasted words. The first sentence states purpose and effect; the second gives a crucial usage hint. Well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description does not mention what the tool returns (e.g., success status or created objects). For a tool that creates multiple entities, this missing detail reduces completeness. Adequate for the low complexity but could be better.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions). The description adds no extra meaning beyond the schema: it reiterates the prerequisite for csv_content but provides no new details about syntax or format. 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 ('Commit a bulk-import CSV') and the resource ('creating the work hierarchy'). It distinguishes from sibling 'validate_import' by implying a two-step process, with this tool performing the actual commit after validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instructs users to call 'validate_import first to verify the file', providing clear usage order. Does not elaborate on when not to use, but the guidance is sufficient given the sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_periodAInspect
Copy your own time entries from a source date range into a target date range, preserving each entry's weekday offset relative to the source start (e.g. copy last week to this week). New entries are created as Draft. The source range cannot exceed 31 days. Supply source_start_date, source_end_date, and target_start_date (all ISO 8601 YYYY-MM-DD).
| Name | Required | Description | Default |
|---|---|---|---|
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| source_end_date | Yes | Inclusive end of the range to copy FROM (YYYY-MM-DD). | |
| source_start_date | Yes | Inclusive start of the range to copy FROM (YYYY-MM-DD). | |
| target_start_date | Yes | The first date of the target range (source_start_date maps here, YYYY-MM-DD). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that entries are created as Draft and explains the weekday offset preservation. No annotations exist, so description fully carries behavioral disclosure. Mentions the 31-day constraint.
Agents need to know what a tool does to the 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 that effectively front-load purpose, then provide constraints and parameter format. 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?
Adequately describes the operation, constraints, and parameter usage. Lacks return value details, but acceptable for a copy tool without output schema. Meets completeness needs 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 coverage is 100%. Description adds meaning by stating ISO 8601 format, mapping of source_start_date to target_start_date, and idempotency_key optionality. Exceeds 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?
Clearly states the tool copies time entries from a source to target date range while preserving weekday offset, using specific verbs and resources. Distinguishes from sibling tools like log_time or create_time_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies it copies 'your own time entries' and imposes a 31-day source range limit. Provides clear context for use, though lacks explicit when-not-to-use 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.
create_credit_noteBInspect
Create a credit note against an existing invoice, reducing the amount owed. Requires Finance role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Reason for the credit note (required). | |
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| invoice_id | Yes | ID of the invoice to credit (required). | |
| credit_amount | Yes | Total credit amount (required, must be > 0 and ≤ invoice total). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions a role requirement but omits important details such as the idempotency key behavior, the preview mode via the 'confirm' parameter, potential side effects on invoice status, and any rate limits or audit logging. The preview behavior is only documented 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 extremely concise—one sentence plus a role requirement. Every word is meaningful and there is 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?
Given the tool's complexity (5 parameters, required preview behavior, idempotency, no output schema, no annotations), the description is insufficient. It fails to explain the preview mode, idempotency key behavior, effect on invoice status, or what the tool returns. A more complete description would cover these aspects.
Complex tools with many parameters or behaviors need more documentation. Simple 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. The description adds minimal extra meaning beyond stating the overall purpose (reducing amount owed). It does not clarify parameter usage or constraints 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 clearly states the action ('Create a credit note'), the resource ('existing invoice'), and the effect ('reducing the amount owed'). It also mentions a role requirement, distinguishing it from sibling tools like issue_invoice or void_invoice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 a prerequisite ('Requires Finance role or above') but does not provide explicit guidance on when to use this tool versus other invoice-modifying tools, nor does it mention conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_customerAInspect
Create a new billing customer in your organization. The organization is fixed by your context - never pass an organization id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Customer name (required). | |
| country | No | Optional country. | |
| currency | No | Optional ISO 4217 currency code (e.g. USD, EUR). Defaults to USD. | |
| description | No | Optional customer description (max 200 characters). | |
| contact_email | No | Optional primary contact email address. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'Create' (mutation) but does not disclose idempotency behavior (the schema includes an idempotency_key), success/failure conditions, or return value. The organization constraint is useful, but overall behavioral details are 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?
Two short sentences, front-loaded with purpose. No redundant information. Every sentence is meaningful 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?
No output schema exists, so the description should ideally explain what is returned (e.g., created customer ID). It does not. Parameter count is moderate (6) and schema covers them, but behavioral details (errors, idempotency) are missing. Adequate but not 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%, so baseline is 3. The description adds valuable semantic information beyond the schema: it clarifies that the organization ID is not to be passed (it's fixed by context). This compensates for the lack of parameter-specific details 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 verb 'Create', resource 'billing customer', and scope 'in your organization'. It distinguishes from siblings like 'update_customer' and 'delete_customer' by specifying creation. The constraint about not passing an organization ID adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent when to use this tool (to create a new billing customer) and explicitly warns against passing an organization ID because it's context-fixed. While it doesn't list alternatives, the purpose and sibling list imply when not to use it (e.g., for updates use 'update_customer').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_fieldAInspect
Define a new custom field on a billing entity type (project, task, subtask, time report, or customer) for your organization. The organization is fixed by your context - never pass an organization id. type is one of String, Number, Date, DateTime, ListOfValues; ListOfValues requires at least one option. Marking a field mandatory blocks creating that entity type until a value is provided.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Field data type (required). One of: String, Number, Date, DateTime, ListOfValues. | |
| title | Yes | Human-readable label shown in the UI (required). | |
| entity | Yes | The entity type this field is defined on (required). One of: billing_projects, billing_tasks, billing_sub_tasks, sub_tasks_time_reports, billing_customers. | |
| field_id | Yes | A unique, stable key for the field (required, max 50 chars), e.g. "po_number". | |
| is_mandatory | No | Whether a value is required when creating/updating the entity. Defaults to false. | |
| list_of_values | No | Options for a ListOfValues field (required for that type; at least one non-blank option). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description covers behavioral traits like fixed organization, type constraints, and mandatory blocking. However, it omits idempotency behavior and does not mention error conditions or authorization 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 concise (3 sentences), front-loaded with purpose, and contains no redundant or unnecessary 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 complexity (7 parameters, no output schema, no annotations), the description covers purpose, scope, key constraints, and behavioral impacts. However, it does not mention the return value or idempotency key behavior, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying the organization context, ListOfValues constraint, and mandatory field effect, but the schema already covers parameter details 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 clearly states the tool's purpose: defining a new custom field on a billing entity type. It includes specific verbs (Define), resource (custom field), and scope (billing entity types), and implicitly distinguishes from siblings like delete_custom_field and update_custom_field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 contextual guidance: organization is fixed (never pass ID), type constraints, ListOfValues requirements, and mandatory field effects. However, it does not explicitly compare to alternatives or state when to use this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_favoriteBInspect
Save a time-entry combination as a favorite for quick reuse. Returns the created favorite.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id. | |
| project_id | Yes | Project id. | |
| customer_id | Yes | Customer id. | |
| description | No | Default time-entry description (optional). | |
| sub_task_id | Yes | Subtask id. | |
| display_name | Yes | Short label for the favorite (e.g. 'Daily standup on Acme'). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral transparency. It states that the tool saves a favorite and returns it, but it does not mention idempotency (despite an idempotency_key parameter), authentication requirements, or any side effects beyond the creation. This is insufficient for an agent to understand the tool's behavior fully.
Agents need to know what a tool does to the world before calling 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 that convey the core purpose and return value. There is no extraneous information, and every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, complete schema coverage, no output schema, and no annotations, the description is minimally adequate. It explains what the tool does and what it returns, but lacks context about prerequisites, duplicate handling, or error conditions. For a creation tool, this is acceptable 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?
Since the input schema covers 100% of parameters with descriptions, the baseline is 3. The description adds no extra semantics beyond noting that it's a 'time-entry combination', which vaguely ties to the required entity IDs. It does not elucidate parameter relationships or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save a time-entry combination as a favorite') and the resource ('favorite'). It also mentions the return value, which helps distinguish from sibling tools like delete_favorite, list_favorites, and use_favorite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage scenarios or conditions mentioned, and no references to related tools (e.g., list_favorites or use_favorite) to help an agent decide which tool to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_frame_orderAInspect
Create a new Open frame order (blanket PO / commercial envelope) for a customer. A frame order tracks a contracted hours or amount cap that invoices can draw down against. Reversible — the frame order can be deleted while it is still Open.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional free-text notes (max 2000 chars). | |
| currency | No | ISO 4217 currency code (e.g. USD). Defaults to the customer's currency when omitted. | |
| end_date | No | Optional end date in YYYY-MM-DD format (must be >= start_date). | |
| reference | Yes | Unique reference string per (org, customer), e.g. 'PO-2026-001'. Max 100 chars. | |
| start_date | No | Optional start date in YYYY-MM-DD format. | |
| customer_id | Yes | Id of the customer this frame order belongs to. | |
| description | No | Optional human-readable description (max 500 chars). | |
| total_hours | No | Optional contracted hours cap (must be > 0). | |
| total_amount | No | Optional contracted amount cap (must be > 0). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden. It discloses that the frame order is reversible (can be deleted while Open), but does not cover other behavioral details such as permissions, rate limits, or the exact state transition upon creation. The idempotency key behavior is 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 three sentences, conveying the core purpose, functionality, and a key behavioral note in a front-loaded manner. It is concise without wasted words, though the phrase 'blanket PO / commercial envelope' adds slight 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 complexity (10 parameters, no output schema), the description provides basic context but lacks details about the expected output (e.g., does it return the created frame order ID?), the required parameters (customer_id and reference are not emphasized), and the lifecycle beyond the Open state.
Complex tools with many parameters or behaviors need more documentation. Simple 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 mentions 'contracted hours or amount cap' relating to total_hours and total_amount but adds no additional meaning beyond the schema. It does not explain reference uniqueness or idempotency key beyond what is already in the 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 'Create a new Open frame order' and explains what a frame order is (blanket PO/commercial envelope) and its function (tracks contracted hours/amount cap). It effectively distinguishes the tool from siblings like update_frame_order and delete_frame_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 reversibility (can delete while Open) but does not explicitly state when to use this tool versus alternatives like update_frame_order or close_frame_order. No direct guidance on prerequisites or when not to use it is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_holiday_profileAInspect
Create and SAVE a national-holiday profile for the organization for a specific year, AFTER the user has explicitly reviewed and confirmed the holiday list. Each holiday is either a full day off or a half/partial working day (with a start/end working window). Holiday dates MUST come from suggest_holiday_profile or the user — never invent dates. Only call this once the user has confirmed; do not call it to preview.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A descriptive profile name, e.g. "US Holidays 2026" or "Israel 2026". | |
| year | Yes | The calendar year this profile governs (e.g. 2026). It applies only to its year. | |
| notes | No | Optional free-text notes about this profile. | |
| source | No | Provenance of the dates: "hebcal", "nager", "manual", or "ai". Use the source returned by suggest_holiday_profile. | |
| holidays | Yes | A JSON array (as a string) of the confirmed holidays, each an object: {"date":"YYYY-MM-DD","name":"...","full_day_off":true|false,"window_start":"HH:mm","window_end":"HH:mm"}. Dates must be within the profile's year. full_day_off=false means a half/partial working day — include window_start/window_end; otherwise omit them. Example: [{"date":"2026-01-01","name":"New Year's Day","full_day_off":true},{"date":"2026-04-01","name":"Erev Pesach","full_day_off":false,"window_start":"08:00","window_end":"13:00"}] | |
| set_as_default | No | Optional. Set this profile as the organization's default holiday set for its year. | |
| default_for_countries | No | Optional comma-separated ISO-2 country codes this profile is the country-default for (for its year), e.g. "US" or "US,CA". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses write behavior ('SAVE'), constraints on date sourcing, and holiday structure. Lacks details on return value or error conditions, but provides meaningful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with all key information front-loaded. Every sentence adds value; 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 purpose, usage, parameter constraints, and source requirements. Missing return value info, but given no output schema and moderate complexity (7 params), the description is mostly complete for agent 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% with detailed descriptions. Description reinforces the structure of the 'holidays' parameter and the source constraint but doesn't add significant new meaning; baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses clear verb 'Create and SAVE' and specifies resource 'national-holiday profile for the organization for a specific year'. It distinguishes from sibling 'suggest_holiday_profile' by emphasizing this is the final save step after user confirmation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance: 'Only call this once the user has confirmed; do not call it to preview.' Also states holidays must come from suggest_holiday_profile or user, never invent. Clearly differentiates when to use this vs suggest_holiday_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectAInspect
Create a new billing project under one of your customers. The organization is fixed by your context; customer_id must be a customer in your organization. Discover ids with find_billing_work - never ask the user for an id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name (required). | |
| customer_id | Yes | Id of the customer this project belongs to (required). Must be a customer in your organization. | |
| description | No | Optional project description (max 500 characters). | |
| billing_type | Yes | Billing type to allow on the project (required). One of: TM, Fix, OVH. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| create_general_activity | No | Optional. When true (the default for this tool), also create a default visible "General" task + activity so time can be logged on the project immediately. Set false to create an empty project with no activities yet. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the default behavior of create_general_activity and the idempotency_key, but does not mention permissions, side effects, or possible errors. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that cover purpose and usage guidelines without any redundant words. Highly 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?
Missing output format description and error handling details. For a creation tool, expected return value (e.g., created project object) is not mentioned, but the description covers core functionality adequately given schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters (baseline 3). Description adds value by explaining the organization context, how to obtain ids (find_billing_work), and the behavior of create_general_activity beyond the schema's brief 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 explicitly states the action (Create), the resource (a new billing project), and the context (under one of your customers). It distinguishes from sibling tools like update_project and delete_project by specifying 'billing project' and the customer relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance: customer_id must be in the organization, discover ids with find_billing_work, never ask the user for an id. While it doesn't explicitly list when not to use, the context is sufficient for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scheduled_reportAInspect
Create a new scheduled report definition. The report will be generated and emailed to recipients on the configured cadence.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for this scheduled report (max 150 chars). | |
| format | No | Output format: pdf (default) or csv. | |
| cadence | Yes | Schedule cadence: Daily, Weekly, or Monthly. | |
| recipients | Yes | Comma-separated recipient email addresses. | |
| report_type | Yes | Report type: DailySummary or MonthlyHours. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions automated generation and emailing, but fails to note important aspects like idempotency behavior (only hinted via schema), error handling for invalid recipients, or return values. This leaves gaps for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no redundant words, and the main action is front-loaded. Every part contributes to understanding 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 moderate complexity (6 params, no output schema, no annotations), the description is adequate but incomplete. It lacks details on success/failure outcomes, idempotency semantics, and email behavior. For a tool with many siblings, more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple 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 little beyond schema (e.g., 'on the configured cadence' but cadence is already described). It does not explain parameter interactions or constraints, 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 the tool creates a new scheduled report definition and explains its purpose (generation and emailing on a cadence). It distinguishes from sibling tools like cancel_scheduled_report, update_scheduled_report, and list_scheduled_reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 to update vs create) or any prerequisites. It lacks context for choosing among scheduled report operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_subtaskAInspect
Create a subtask under a task. All time entries are logged against subtasks, so every task needs at least one. The subtask inherits a valid billing type from the parent task. Discover ids with find_billing_work - never ask the user for an id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Subtask name (required). | |
| task_id | Yes | Id of the parent task (required). Must be a task in your organization. | |
| description | No | Optional subtask description. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. Describes that subtasks inherit billing type and that all time entries are logged against them. Does not cover permissions, idempotency behavior beyond schema, or error conditions. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the main action. Every sentence adds value: purpose, contextual importance, and usage tip. 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?
Given no output schema, return value is not explained, but typical for creation tools. Provides sufficient context for using the tool in context of sibling tools and overall workflow. Could mention common errors or prerequisites, but 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% (all params described). Description adds value beyond schema by explaining that task_id should be obtained via find_billing_work and that subtask inherits billing type. This provides important context for correct parameter 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?
Clearly states 'Create a subtask under a task', specifies the resource and action. Distinguishes from siblings like update_subtask, delete_subtask. Explains the importance (time entries are logged against subtasks) and inheritance of billing type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instructs to discover IDs with find_billing_work and never ask the user. Implies when to use (creating subtask, every task needs one). Does not give explicit when-not-to-use, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskAInspect
Create a task under a project. Tasks group the subtasks that time is logged against. The task inherits its allowed billing types from the parent project. Discover ids with find_billing_work - never ask the user for an id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Task name (required). | |
| project_id | Yes | Id of the parent project (required). Must be a project in your organization. | |
| description | No | Optional task description. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| create_general_activity | No | Optional. When true (the default for this tool), also create a default visible "General" activity under the task so time can be logged immediately. Set false to create a task with no activities yet. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It explains inheritance of billing types and default activity creation. Missing details on mutation nature, permissions, or side effects, but covers key behaviors.
Agents need to know what a tool does to the 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 fluff. Front-loaded with core function, then explanatory context, then actionable guidance. 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?
Covers parameter purpose and some behavioral context, but lacks response format or error conditions. For a create operation with no output schema, more details on return value would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% so baseline is 3. Description adds context about task purpose and ID discovery but does not significantly enhance meaning beyond 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?
Clearly states 'Create a task under a project' and explains tasks group subtasks. Does not explicitly differentiate from sibling tools like create_subtask, but the context of creating tasks vs subtasks is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a specific guideline: 'Discover ids with find_billing_work - never ask the user for an id.' However, it does not discuss when to use this tool over alternatives or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_time_reportAInspect
Create a new time entry on a subtask for the current user. The entry is always attributed to you — you cannot create entries on behalf of another user. Supply subtask_id, the date (ISO 8601 YYYY-MM-DD), start_time (HH:mm, defaults to 09:00), and hours.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date of the work (ISO 8601 YYYY-MM-DD, e.g. 2026-01-15). | |
| text | No | Optional description of the work performed (max 1000 characters). | |
| hours | Yes | Hours worked (> 0 and ≤ 24). | |
| start_time | No | Optional start time in 24-h HH:mm (defaults to 09:00). | |
| subtask_id | Yes | Id of the subtask to log time against. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It covers key behavioral aspects: user attribution, default start_time, and required parameters. However, it does not explain idempotency behavior (though schema does), side effects, error handling, or response format, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: purpose, attribution limitation, and key params with defaults. It is front-loaded with the action and contains no extraneous words, efficiently conveying essential 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 6-parameter create tool with no output schema and no annotations, the description is largely complete: it covers scope, user limitation, and key inputs. However, it does not specify what the response looks like (e.g., created object or success flag) and omits potential error conditions, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing baseline 3. The description adds minimal value beyond the schema: it reiterates the default for start_time and summarizes key params. It does not introduce new semantic meaning or clarify how parameters interact beyond what schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool creates a time entry on a subtask for the current user. It uses a specific verb 'create' and resource 'time entry on a subtask', clearly distinguishing from sibling tools like bulk_create_time_reports or log_time by specifying scope and user attribution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 entries are always attributed to the current user and cannot be created for others, providing a clear when-not-to-use condition. It implies usage for logging personal time on a subtask but does not explicitly mention alternative tools like log_time or bulk_create_time_reports, which could help further.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_api_keyAInspect
Permanently revoke one of your Integration API keys. Any MCP clients or integrations using the key will lose access immediately and cannot be restored. Returns a preview; re-call with the confirm_token and an idempotency_key to commit.
| Name | Required | Description | Default |
|---|---|---|---|
| key_id | Yes | Id of the API key to permanently revoke. | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses the permanent and irreversible nature ('Permanently revoke', 'cannot be restored'), immediate loss of access, the two-step preview-and-commit process, expiration of the confirm_token (~10 minutes), and idempotency behavior. No annotations are provided, so the description carries the full burden and does so effectively.
Agents need to know what a tool does to the world before calling 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 action and consequences. The second explains the two-step process. Every sentence adds necessary information 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?
Given the tool has 3 parameters and no output schema, the description covers the key workflow and consequences. It could optionally mention what the preview returns (e.g., the confirm_token and a preview of the key being deleted), but it is largely complete for effective 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 has 100% coverage, describing each parameter. The description adds significant value by explaining the two-step workflow: first call without confirm_token to get a preview, then commit with confirm_token and idempotency_key. It clarifies the purpose of the idempotency_key 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 clearly states the tool's purpose: 'Permanently revoke one of your Integration API keys.' It uses a specific verb ('revoke') and identifies the resource ('Integration API keys'). It distinguishes itself from sibling delete tools by being specific to API keys and describing the two-step 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 implies when to use the tool (when you want to permanently revoke an API key) and describes the two-step process. However, it does not explicitly state when not to use it or mention alternatives, but given the specialized nature, the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_customerAInspect
Soft-delete a billing customer and its whole hierarchy (projects, tasks, subtasks) into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| customer_id | Yes | Id of the customer to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses soft-delete, recycle bin, admin restore capability, and the preview/confirm mechanism. It does not mention permission requirements or idempotency behavior beyond 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, no filler. The most critical information (action, hierarchy scope, confirm workflow) 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 no output schema, the description adequately hints at a preview return. Sibling tools include many deletions, so the hierarchy soft-delete context is sufficiently distinguishing. Could mention admin requirement explicitly.
Complex tools with many parameters or behaviors need more documentation. 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 are described in the schema (100% coverage). The description adds context by explaining that confirm toggles preview vs action and that idempotency_key prevents duplicates, 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 states the action ('Soft-delete'), the resource ('billing customer'), and the scope ('whole hierarchy including projects, tasks, subtasks'). It distinguishes itself from permanent deletion tools by specifying the recycle bin 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 explains the preview-then-confirm workflow, which guides usage. However, it does not explicitly mention prerequisites (e.g., admin role) or contrast with sibling tools like permanent_delete_entity or delete_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_custom_fieldAInspect
Delete a custom-field definition from the organization. If the field is mandatory and already has values stored on entities the service will reject the delete with a clear reason. Returns a preview unless confirm=true is set. Admin role required.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| custom_field_id | Yes | Id of the custom field definition to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: destructive action, preview mode, rejection condition, and admin requirement. It does not detail idempotency key behavior, but that is 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?
Three concise sentences without fluff. Each sentence adds value: what it does, when it fails, and usage nuances. 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?
Given three parameters, no output schema, and high schema coverage, the description covers key behavioral aspects (preview, rejection, admin role). It is sufficient for an agent to understand when and how to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameter descriptions. The tool description adds context about confirm's effect (preview vs actual delete), but does not substantially enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Delete a custom-field definition from the organization.' It uses a specific verb and resource, and distinguishes itself from sibling tools like create_custom_field and update_custom_field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 deletion may be rejected (mandatory fields with stored values) and requires admin role. It also notes the preview behavior without confirm=true. However, it does not explicitly contrast with alternatives like update_custom_field or set_custom_field_value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_draft_invoiceAInspect
Delete a DRAFT invoice permanently. Only draft invoices can be deleted; issued invoices are permanent records. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| invoice_id | Yes | Id of the draft invoice to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It discloses permanent deletion, the restriction to drafts, and the safe preview mode when confirm=true is not set. 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, no filler. The most critical information (delete, permanent, draft-only, preview) is front-loaded. Every sentence adds essential 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?
Given no output schema, the description adequately explains the behavior (preview vs. deletion) and constraints. It is complete for an agent to understand when and how to invoke 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?
Schema coverage is 100% with clear descriptions for each parameter. The description adds minimal value beyond the schema, only restating the confirm parameter's effect. 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 'Delete', the resource 'DRAFT invoice', and the constraint 'Only draft invoices can be deleted; issued invoices are permanent records.' It effectively distinguishes from sibling tools like update_draft_invoice, issue_invoice, mark_invoice_paid, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies that the tool should be used only for draft invoices and warns that issued invoices cannot be deleted. It also describes the preview behavior (confirm=true for actual deletion), guiding the agent on when to proceed vs. preview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_favoriteBInspect
Delete a saved time-entry favorite. Requires confirm=true to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| favorite_id | Yes | Id of the favorite to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It mentions deletion but lacks details on whether it is irreversible, what the preview mode entails, or what happens after successful deletion. The description is too minimal 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 concise with two sentences and no unnecessary words. However, it is somewhat under-specified given the tool's destructive nature; a bit more behavioral context would not harm 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 has 3 parameters and no output schema or annotations, the description should provide more context about return behavior, the preview mode, and the idempotency key. It fails to adequately prepare an AI agent for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3, but the description adds no new semantic value beyond what the schema provides. The only addition is echoing the requirement for confirm=true, which is already clear in the parameter 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 'Delete' and the resource 'saved time-entry favorite', making the tool's purpose unambiguous. It effectively distinguishes from sibling tools like create_favorite and list_favorites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 that 'confirm=true' is required to proceed, providing a clear usage condition. However, it does not provide guidance on when to use this tool versus alternatives, nor does it 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.
delete_frame_orderAInspect
Soft-delete an Open frame order into the recycle bin (restorable by an Admin). Blocked when Issued/Sent/Paid invoices are linked — void or unlink those first. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| frame_order_id | Yes | Id of the frame order to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses soft-delete (restorable), blocked conditions, and preview behavior, giving a complete behavioral picture.
Agents need to know what a tool does to the 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 states core action, second adds important caveats. No wasted 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?
No output schema, but the description covers the essential context: action type (soft-delete), effect (recycle bin), prerequisites (no linked invoices), and confirm behavior. This is complete for a delete tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description reaffirms the confirm parameter's behavior but adds no new meaning beyond the schema, meeting 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 states it soft-deletes an Open frame order into the recycle bin, which is a specific verb+resource. It distinguishes from siblings like permanent_delete_entity by specifying soft-delete and restorable by Admin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: blocked when linked to Issued/Sent/Paid invoices, recommends voiding or unlinking first. Also describes preview vs confirm behavior, helping the agent decide when to use confirm=true.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_holiday_profileAInspect
Delete a named national-holiday profile from the organization. The year's holidays will no longer be applied to time calculations. Returns a preview unless confirm=true is set. Admin role required.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| holiday_profile_id | Yes | Id of the holiday profile to delete. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: the preview-by-default behavior (returns a preview unless confirm=true), the admin role requirement, and the effect on time calculations. This goes beyond the structured schema and is highly 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?
The description is extremely concise with two sentences that front-load the action and key behaviors. Every sentence earns its place with no redundant or irrelevant 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 deletion tool with high schema coverage, the description is fairly complete—covering purpose, effect, admin requirement, and preview behavior. It could mention the return type or side effects more explicitly, but it is sufficient for most agents.
Complex tools with many parameters or behaviors need more documentation. Simple 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 some value by restating the confirm behavior and mentioning the admin role (which is not a parameter), but it does not significantly enhance understanding beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete', the resource 'named national-holiday profile', and the organization scope. It distinguishes from sibling tools like create_holiday_profile or update_holiday_profile by explicitly mentioning deletion and its effect on time calculations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 delete a holiday profile) and mentions the preview vs confirm behavior. However, it does not explicitly state when not to use it or suggest alternatives like update_holiday_profile for modifications, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_organizationAInspect
Soft-delete this organization. All members will be locked out and the org will be hidden until a platform admin restores it within the retention window. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Owner role required.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the burden. It discloses key behaviors: members locked out, org hidden, retention window, preview-commit workflow, role requirement. This is comprehensive for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that pack all essential information: action, effect, usage flow, prerequisites. No filler words, front-loaded with the most critical point (soft-delete). 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 tool's complexity (two-step delete) and lack of output schema, the description covers preview and commit phases, token expiration, idempotency, role requirement, and consequences. Complete for an agent to use 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?
Despite 100% schema coverage, the description adds crucial context beyond schema: explaining the preview/commit flow, that confirm_token comes from first call and expires in ~10 minutes, and idempotency_key ensures safe retries. This adds significant semantic 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 'soft-delete this organization', specifying the exact verb and resource. It distinguishes from sibling tools like permanent_delete_entity and other delete operations by highlighting the soft-delete nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 step-by-step instructions: preview with no token, then commit with confirm_token and idempotency_key. Also warns that owner role is required and that the organization is hidden until admin restore, which tells 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.
delete_projectAInspect
Soft-delete a billing project and its whole task/subtask hierarchy into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| project_id | Yes | Id of the project to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'soft-delete', recycle bin placement, admin restore capability, and preview behavior. It does not cover permissions or detailed side effects, but with no annotations, it provides good 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 consists of two concise sentences with no redundant information. The key action is front-loaded, and the preview behavior is explained immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description explains the return behavior (preview vs action). It covers the core functionality and distinguishes from sibling tools. Minor gaps: preview format not detailed, but 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%, but the description adds useful context: the 'confirm' parameter controls preview vs action, and the 'idempotency_key' parameter is explained. It clarifies the effect of each parameter 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 (soft-delete) and the resource (billing project and its task/subtask hierarchy). It distinguishes from siblings like permanent_delete_entity and restore_entity by specifying recycle bin and admin restore.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the soft-delete behavior and the preview mechanism with confirm=true. It implicitly guides when to use this tool over permanent deletion, but lacks explicit when-not or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_subtaskAInspect
Soft-delete a billing subtask into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| subtask_id | Yes | Id of the subtask to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that deletion is soft and restorable, and that confirm=true is required for actual deletion. However, it omits potential prerequisites (e.g., admin role) or rate limits, keeping it slightly incomplete for 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?
Two sentences pack essential information without redundancy. It front-loads the soft-delete concept and quickly addresses the preview/confirm distinction. Every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main behavior and parameter role, but lacks details on return value format (preview structure) and assumes understanding of 'recycle bin'. Given no output schema, a bit more context on what the preview contains 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 covers all 3 parameters (100% coverage). The description adds value by explaining the confirm parameter's role in preview vs action, which enhances understanding beyond the schema's boolean description. The idempotency_key is standard, and subtask_id is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (billing subtask), and the effect (into recycle bin, restorable by admin). It also distinguishes the preview vs confirm behavior, making it specific and unambiguous among sibling 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 explains the soft-delete and preview behavior but does not explicitly guide when to use this tool over alternatives like permanent_delete_entity. The context of when-not-to-use or comparison to siblings is missing, though the behavior is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskAInspect
Soft-delete a billing task and its subtask hierarchy into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| task_id | Yes | Id of the task to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses that deletion is soft and reversible via admin, the preview mechanism without confirm=true, and hints at idempotency behavior. With no annotations, it carries the full burden 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?
Two sentences with no redundant information. The most critical information (soft-delete, hierarchy, preview, confirm) is front-loaded 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 tool with no annotations and no output schema, the description covers behavior, parameters, and post-deletion state (recycle bin). Missing details about return preview specifics but is otherwise 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%, so baseline is 3. The description adds value by explaining the effect of the 'confirm' parameter (preview vs. actual deletion) 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 uses a specific verb ('soft-delete') and identifies the resource ('billing task and its subtask hierarchy'), clearly differentiating it from siblings like 'permanent_delete_entity' and 'delete_subtask'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 reversible deletion and mentions the preview mode, but does not explicitly contrast with 'permanent_delete_entity' or 'update_task' for status changes, nor state when to use this versus alternative deletion methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_time_reportAInspect
Delete a time report entry. Members can delete their own reports; Managers/Admins can delete others' (subject to org settings). Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| time_report_id | Yes | Id of the time report entry to delete. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the destructive nature, preview behavior, and permission rules. It adds context beyond schema about the two-step delete process.
Agents need to know what a tool does to the 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 efficient sentences ordered logically: purpose, permissions, preview/action. No fluff; every sentence adds essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description should hint at preview response or soft-delete behavior. It omits whether deletion is permanent or goes to recycle bin, and what the preview returns. Adequate for basic use but incomplete for 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 100%. The description restates the confirm behavior already documented in the schema but adds no new semantic meaning for time_report_id or idempotency_key. 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 time report entry' with a specific verb and resource. It also adds permission context (self vs. managers/admins) which helps distinguish from 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?
Provides clear when-to-use: to delete a time report. It explains the preview pattern (call without confirm first) and permission constraints. However, it doesn't explicitly contrast with update_time_report or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_scheduleAInspect
Delete a named organization work schedule profile. Users assigned to this schedule will fall back to the default schedule. Returns a preview unless confirm=true is set. Admin role required.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| work_schedule_id | Yes | Id of the work schedule to delete. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively conveys the destructive nature of deletion, the fallback behavior for assigned users, the preview-by-default pattern, and the admin role requirement. Minor omission: no mention of irreversibility.
Agents need to know what a tool does to the 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 primary action. Every sentence 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 description covers the primary return behavior (preview vs confirm), required role, and consequence of deletion. No output schema exists, but the description addresses the main return pattern. Lacks details about the preview structure, but overall completes the tool's 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%, so baseline is 3. The description adds no additional meaning to individual parameters beyond what the schema already provides, but it does contextualize the overall tool 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 'Delete' and identifies the resource as 'named organization work schedule profile'. It clearly states what the tool does and distinguishes it from siblings like 'set_org_work_schedule' by focusing on 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 explicitly mentions that admin role is required and explains the preview-and-confirm mechanism. It does not provide explicit alternatives or when-not-to-use scenarios, but the context is clear enough for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_userAInspect
Disable an organization member so they can no longer sign in or use the app. Reversible — the user can be re-enabled from the web application. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for disabling the user (stored for audit purposes). | |
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| org_user_id | Yes | Id of the OrganizationUser record to disable (not the Firebase userId). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only partially discloses behavior: it states the effect (cannot sign in) and the preview vs. action flow. Missing details on side effects like session termination or data access.
Agents need to know what a tool does to the 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 states purpose, second adds key details (reversibility, preview). No wasted words; effectively 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?
Covers core behavior and preview mechanism, but lacks return value details, error conditions, or post-action state. Given no output schema, the description is only moderately 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%, but the description adds value by explaining the confirm parameter's preview role and idempotency_key's retry behavior, going beyond 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 a specific verb ('disable') and resource ('organization member'), clearly stating the tool's purpose. It distinguishes itself from sibling tools like 'enable_user' and 'remove_user' by noting reversibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use (to disable a user) and mentions the reversible nature and preview mechanism. Lacks explicit exclusions or alternatives but sufficiently guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_userAInspect
Re-enable a previously disabled organization member so they can log in and use the platform again. Requires the org_user_id. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| org_user_id | Yes | Id of the OrganizationUser to enable. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In the absence of annotations, the description discloses key behaviors: the operation is a re-enable, requires the specific user ID, has a privilege restriction, and mentions idempotency via the optional key. It does not detail side effects or failure modes, but covers essential 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?
Three short sentences front-load the purpose, then immediately list requirements and constraints. No redundant information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 2 parameters, no output schema, and no nested objects, the description adequately covers purpose, requirements, constraints, and idempotency. However, it does not explain what happens if the user is already enabled or what the return value looks like (though output schema is absent).
Complex tools with many parameters or behaviors need more documentation. Simple 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%, but the description adds meaning beyond the schema: it clarifies that org_user_id is required and explains the idempotency key behavior ('retrying with the same key returns the original result'), which is not fully captured in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Re-enable'), the resource ('previously disabled organization member'), and the outcome ('so they can log in and use the platform again'). It distinguishes itself from sibling tool 'disable_user' by explicitly mentioning re-enabling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 requirements ('Requires the org_user_id') and constraints ('organization is fixed by your context—never pass an organization id', 'You cannot target a user more privileged than yourself'). While it doesn't name alternative tools, the context implies not to use if user is not disabled or if lacking privilege.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_billing_workAInspect
Find the projects, tasks and subtasks in your organization where time can be tracked, optionally filtered by a name fragment. Use this to locate where to record work. Returns ids and names only.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional case-insensitive name fragment to filter projects (or tasks when project_id is supplied). | |
| project_id | No | Optional project id to drill into. When supplied, returns that project's tasks and subtasks. | |
| max_results | No | Optional maximum number of rows to return (1-50, default 50). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool 'Returns ids and names only,' which is valuable. It does not explicitly state it's read-only, but the context strongly implies it. No mention of rate limits or authentication, but that's acceptable for a simple search 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, highly concise, and front-loaded with the core action. Every sentence 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?
Given the low complexity (3 optional params, no output schema, no nested objects), the description is sufficient. It explains the purpose, filtering, and return content. It could mention pagination or error cases but is complete enough for the use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with detailed descriptions for all three parameters. The description adds little extra: it mentions optional name filtering (already in schema) and implies drilling into projects (project_id). 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 clearly states the tool's purpose: finding projects, tasks, and subtasks for time tracking. It specifies the verb 'Find', the resource (projects/tasks/subtasks), and the scope (where time can be tracked). It distinguishes from siblings like 'list_projects' by focusing on billable work 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 provides clear guidance: 'Use this to locate where to record work.' It implies the tool is for identifying work items before logging time. However, it does not explicitly mention when not to use it or suggest alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_invoiceAInspect
Generate a DRAFT invoice from a customer's approved billable hours over a billing period. The draft is editable and can be deleted before it is issued.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional notes to include on the invoice. | |
| due_date | No | Optional explicit due date (ISO 8601). Overrides payment_terms-based calculation. | |
| grouping | No | How to group approved hours into line items: "project" (default) or "task". | |
| period_end | Yes | Billing period end date (ISO 8601, e.g. 2026-05-31). | |
| customer_id | Yes | Id of the customer to invoice. | |
| period_start | Yes | Billing period start date (ISO 8601, e.g. 2026-05-01). | |
| payment_terms | No | Payment terms string, e.g. "Net 30" (default). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses that the invoice is a draft (editable, deletable) but does not mention side effects like failure if no approved hours or idempotency behavior. Some transparency but gaps remain.
Agents need to know what a tool does to the world before calling 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 no unnecessary words. It efficiently conveys the core functionality and the draft 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?
Despite 8 parameters and no output schema, the description does not explain the return value or prerequisites (e.g., approved hours must exist). It lacks details needed for an agent to fully understand the tool's inputs and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple 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. The description does not add additional meaning beyond providing high-level context (e.g., 'billing period'). 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 generates a draft invoice from approved billable hours over a billing period. It distinguishes it from sibling tools like 'issue_invoice' and 'create_credit_note' by emphasizing the draft state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for draft creation but does not explicitly state when to use this tool versus alternatives like 'issue_invoice' or 'create_credit_note'. No guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_reportCInspect
Get billing summary for a customer over a date range
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date in YYYY-MM-DD format | |
| start_date | Yes | Start date in YYYY-MM-DD format | |
| customer_id | Yes | The customer ID to get billing report for |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'get billing summary' without mentioning read-only nature, required permissions, data scope, or any side effects. The agent cannot infer important traits like whether the call is safe or destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It misses the opportunity to front-load the most critical information and does not justify its brevity with 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 three required parameters and absence of output schema, the description is incomplete. It does not explain what a 'billing summary' contains, how results are formatted, or any constraints like date range limits, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 fully describes each parameter. The description adds no additional meaning beyond that, 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 states the tool gets a billing summary for a customer over a date range, which is clear but generic. It does not distinguish 'billing summary' from sibling tools like get_budget_health, get_unbilled_time, or get_invoice, leaving ambiguity about what this specific report contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. With many billing-related siblings, the absence of usage context or explicit exclusions makes it difficult for an agent to select the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_budget_alertsAInspect
Get all budget alerts for the organization showing projects that are over or near budget
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as required permissions, data freshness, or whether alerts are organization-wide. For a read operation, it could mention lack of user-specific filtering or output format 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, well-structured sentence that front-loads the core purpose. Every word contributes meaning 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 simplicity of the tool (no parameters, no output schema), the description covers the basic action and result. However, it could elaborate on what the alerts contain (e.g., project names, budget amounts) to improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description adds no parameter information, which is acceptable since there are no parameters to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'Get', the resource 'budget alerts', and the scope 'for the organization showing projects that are over or near budget'. It effectively distinguishes from sibling tools like 'check_budget_limits' and 'get_budget_health'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 when to use the tool: to retrieve alerts about over or near budget projects. It does not explicitly state when not to use or suggest alternatives, but the purpose is clear enough to guide selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_budget_healthAInspect
Get overall budget health summary for the organization, including project counts by status (on-track, warning, critical), total remaining budget hours, and active alerts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description clearly indicates a read-only operation returning summary data. It could be more explicit about safety, but the nature is evident.
Agents need to know what a tool does to the 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, concise, front-loads 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?
No output schema, but description sufficiently explains return content (counts, hours, alerts). Low complexity, no missing 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?
No parameters in schema (empty object), schema coverage 100%, baseline 4 is appropriate. Description adds no parameter detail but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs (Get) and resources (overall budget health summary) and clearly distinguishes from sibling tools like get_budget_alerts by mentioning project counts by status and remaining hours.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 budget health overview but does not explicitly state when not to use it or suggest alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cost_rate_historyAInspect
Get the cost-rate history for a specific user in the organization. Requires Finance role or higher.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Firebase UID of the user whose cost-rate history to retrieve. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It reveals required authorization but gives no indication of read-only nature, output format, or pagination. This is insufficient for full behavioral 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?
Two concise sentences cover purpose and authorization with no unnecessary 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?
The tool is simple with one parameter, but the description omits expected output details (e.g., list of cost-rate entries). Given no output schema, more context on return shape would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description directly mirrors the schema's parameter description for 'user_id' and adds no additional context. Since schema coverage is 100%, 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 ('Get') and resource ('cost-rate history'), and specifies it is for a specific user. This clearly distinguishes it from sibling tools like 'set_user_cost_rate' or 'bulk_update_cost_rates'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 a required role ('Finance role or higher'), but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_infoAInspect
Get detailed information about a customer including health score and portfolio
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | The unique identifier of the customer to retrieve information for |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits like read-only nature, 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?
Single concise sentence with 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?
Adequate for a simple retrieval tool with one parameter and no output schema; specifies returned data but lacks 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 100% for the single parameter; description 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 clearly states the tool retrieves detailed customer info including health score and portfolio, distinguishing it from sibling tools like create_customer, update_customer, and list_customers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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; intended use is implied by name and description but lacks explicit when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_metricsCInspect
Get organization dashboard metrics including utilization, revenue, and active projects
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Month to get metrics for in YYYY-MM format (e.g. 2026-01). Defaults to current month if not provided. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states it 'gets' metrics, with no mention of side effects, authentication needs, rate limits, or read-only nature. The description is too minimal for behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence (12 words) with examples, no wasted words. Slightly improved conciseness but lacks structure for complex tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description covers the basic purpose. However, it does not describe return format, pagination, or scope limitations, which would be helpful for dashboard metrics.
Complex tools with many parameters or behaviors need more documentation. Simple 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 optional parameter 'month' already well-described in the schema (format and default). The description adds no 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 verb 'Get' and the resource 'organization dashboard metrics' with examples (utilization, revenue, active projects). It distinguishes from many sibling tools that are CRUD or specific operations, though it does not explicitly differentiate from 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 guidance on when to use this tool versus alternatives like get_billing_report or get_hours_summary. No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_employee_timesheetAInspect
Get an employee's timesheet report showing target hours, actual hours logged, and variance. Can look up by employee name or default to the requesting user.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date in YYYY-MM-DD format | |
| start_date | Yes | Start date in YYYY-MM-DD format | |
| employee_name | No | Name of the employee to look up. Leave empty or say 'me' for your own timesheet. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses read behavior (returns report) and lookup flexibility, but does not mention permissions, caching, or error conditions. Adequate but not comprehensive for a tool with zero 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?
Two concise sentences, front-loaded with purpose, no wasted words. Effectively conveys core functionality 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?
With 3 simple params and no output schema, description adequately explains return fields (target, actual, variance) and lookup behavior. Slightly lacking on error cases or date range limitations, but 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?
Schema description coverage is 100% (all 3 params described). Description adds context for employee_name (defaults to self, 'me' accepted), but adds minimal value beyond schema for start_date and end_date. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'get' with specific resource 'employee timesheet report' and explicit output fields (target hours, actual hours, variance). Distinguishes from siblings like get_my_time_entries by offering lookup by employee name or defaulting to requesting user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use for obtaining timesheet reports with variance, and notes optional employee name, but does not explicitly state when to use instead of related tools like get_my_time_entries or get_hours_summary. Lacks when-not-to-use guidance or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_frame_order_utilizationAInspect
Report each frame order's contracted cap vs billed draw-down vs remaining, for both hours and amount, with utilization percentage. Optionally filtered by customer and/or status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: Open or Closed (optional). | |
| customer_id | No | Filter by customer id (optional). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral traits. It indicates a read-only report, which is clear from the word 'Report', but does not disclose other traits like permissions, data scope (all frame orders?), or whether it is safe or destructive. The description is minimally 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?
The description is a single sentence that front-loads the purpose and lists key metrics. It is concise with minimal redundancy, though slightly long for a one-sentence structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 covers the essential return information (metrics for hours and amount, utilization percentage) and optional filters. It lacks details on sorting, pagination, or default scope, but is adequate for a simple report 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 adequate descriptions for both parameters (status, customer_id). The description only reiterates that filtering is optional, adding no new meaning beyond the schema. 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 tool reports frame order utilization metrics (contracted cap, billed draw-down, remaining, utilization percentage) for both hours and amount, with optional filters. This is specific and distinguishes it from sibling tools like get_resource_utilization which likely focus on resources rather than frame orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 optional filters by customer and status, implying when to use it for filtered reports, but does not explicitly state when to use this tool versus alternatives or when not to use it. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hours_summaryBInspect
Get a summary of hours logged for a user or team over a date range
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Scope of the summary: 'user' for individual user hours, 'team' for organization-wide overview. Defaults to 'user'. | |
| end_date | Yes | End date for the summary period (ISO 8601 format, e.g. 2026-01-31) | |
| start_date | Yes | Start date for the summary period (ISO 8601 format, e.g. 2026-01-01) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or error handling. As an aggregation tool, the description should at minimum indicate that it aggregates existing data without modifications.
Agents need to know what a tool does to the world before calling 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 contains no redundant information and efficiently communicates the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 does not hint at the structure or contents of the returned summary (e.g., total hours, breakdown by day or user). This gap forces the agent to infer return format from the tool name, which may lead to incorrect assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple 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 describes all parameters fully. The description adds no new meaning beyond what is in the schema (e.g., 'for a user or team' is already captured by the 'scope' parameter description). 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 clearly states verb (Get), resource (summary of hours logged), and scope (user or team over a date range). However, it does not distinguish this tool from siblings like get_my_time_entries, get_employee_timesheet, or get_resource_utilization, which could overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for summarizing hours but does not explicitly state when to use this tool over alternatives. No guidance on prerequisites or exclusions is provided, leaving the agent to 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.
get_import_templateAInspect
Return the CSV template for bulk-importing the work hierarchy (customers, projects, tasks, subtasks). Fill the template and call validate_import before commit_import.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description is straightforward and implies a safe read operation. Does not conceal any behavioral traits; however, it could mention whether the template is static or dynamic.
Agents need to know what a tool does to the 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. Front-loaded with purpose, then provides usage advice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely describes the tool's purpose and how to use it in the broader workflow. No output schema needed; description suffices for a parameterless retrieval 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?
No parameters exist, so schema coverage is 100%. Description adds no parameter info beyond schema; baseline according to rule 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 it returns a CSV template for bulk-importing the work hierarchy, specifying verb 'return' and resource 'CSV template' with details on hierarchy levels (customers, projects, tasks, subtasks). It distinguishes from siblings like validate_import and commit_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?
Provides explicit workflow: get template, fill it, then call validate_import before commit_import. Guides the agent on the correct sequence of tool calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceAInspect
Get the full details of a specific invoice by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | ID of the invoice to retrieve (required). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states the action is a read ('Get'), implying no side effects. However, it does not disclose authorization requirements, rate limits, or what constitutes 'full details'. This is adequate but 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 sentence of 10 words, front-loading the purpose. Every word is necessary and there is no superfluous 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 low complexity (1 param, no output schema), the description is adequate but could be improved by specifying what fields are returned. It mentions 'full details' but that is vague. With no output schema, a bit more detail on return value would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters (just invoice_id) with a description. The tool description adds 'full details' but does not provide additional semantic meaning beyond the schema. Baseline for high schema coverage is 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 retrieves the full details of a specific invoice by ID. It uses a specific verb ('Get') and resource ('invoice'), and the 'by ID' distinguishes it from list_invoices (which retrieves multiple).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 for retrieving a single invoice by ID, contrasting with list_invoices for listing. However, it does not explicitly state when not to use it or mention any prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_time_entriesAInspect
Get the current user's time entry analytics for a date range, including hours breakdown by project and customer, billable vs non-billable split, and target comparison
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date for the analytics period (ISO 8601 format, e.g. 2026-01-31) | |
| start_date | Yes | Start date for the analytics period (ISO 8601 format, e.g. 2026-01-01) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It describes the return data structure but does not explicitly confirm read-only behavior, authentication requirements, rate limits, or handle edge cases (e.g., no data in date range). It is adequate but not thorough.
Agents need to know what a tool does to the world before calling 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 tool's purpose and output. 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 no output schema and no annotations, the description covers the core purpose and return details adequately. It could mention that results are scoped to the current user (implied by name) or any pagination, but it is largely complete for a straightforward analytics tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both parameters have clear schema descriptions (ISO 8601 format). The tool description adds no additional semantic meaning beyond repeating 'date range', 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 retrieves time entry analytics for the current user over a date range, listing specific breakdowns (project, customer, billable, target comparison). This differentiates it from siblings like get_hours_summary or get_dashboard_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for personal analytics, but does not explicitly state when to use versus alternatives like get_hours_summary or get_billing_report, 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.
get_project_statusBInspect
Get detailed project status including budget, hours, and task breakdown
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The unique identifier of the project to retrieve status for |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must convey behavioral traits. It states 'Get detailed project status', implying a read-only operation, but does not explicitly confirm idempotency, safety, authorization requirements, or any side effects. The description is minimally 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?
The description is a single sentence that is front-loaded and concise. Every word adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and no output schema, the description adequately explains the nature of the response. It mentions key components (budget, hours, task breakdown). However, given the number of sibling tools, additional context on what distinguishes this status from other reports 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 a clear parameter description for 'project_id'. The description adds context about what the response includes (budget, hours, task breakdown), but does not add meaning specific to the parameter itself. With high schema coverage, a score of 3 is baseline and adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed project status covering budget, hours, and task breakdown. The verb 'Get' and resource 'project status' are specific. While it doesn't explicitly differentiate from siblings like 'get_hours_summary', the combined scope provides implicit 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 on when to use this tool versus alternatives such as 'get_hours_summary' or 'get_budget_health'. The description lacks any when-to-use, when-not-to-use, or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_teamAInspect
Get the people associated with a project: who is ASSIGNED to it (formally responsible / accountable) and the TOP CONTRIBUTORS by hours logged (who is actually doing the work and driving the budget/overrun). Use this to answer 'who is responsible for / working on a project', especially when a project is over budget. Budget-alert results include the project_id you can pass directly into this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The unique identifier of the project. Resolve a project name to its ID with find_billing_work or list_projects first. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It explains that the tool outputs assigned and top contributing people by hours logged, and mentions budget overrun relevance. This provides adequate transparency about the tool's read-only and query-like 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 concise and well-structured, with three front-loaded sentences: first stating the core function, second specifying the use case, and third linking to budget alerts. 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?
Given the absence of an output schema, the description sufficiently explains the return values (assigned and top contributors). It covers the primary use case effectively, though additional details on output structure or pagination would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, project_id, is well-described in the schema. The description adds value by noting that budget-alert results provide the project_id, aiding the agent in parameter resolution. The high schema coverage (100%) is complemented by this additional 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 identifies the tool's function: retrieving people associated with a project, specifically assigned and top contributors. It distinguishes the tool by highlighting its use for answering 'who is responsible for / working on a project' and ties it to budget overrun scenarios, setting it apart from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool, particularly for budget-alert contexts, and advises that budget-alert results contain the project_id for direct use. While it does not list alternatives, the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resource_utilizationBInspect
Get team resource utilization summary showing target hours, actual hours, billable hours, and utilization percentage for the organization
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date for the utilization period (ISO 8601 format, e.g. 2026-01-31) | |
| start_date | Yes | Start date for the utilization period (ISO 8601 format, e.g. 2026-01-01) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description indicates the output includes specific metrics but does not disclose read-only nature, authorization requirements, or aggregation level. Since no annotations are provided, the description carries the full burden, and it is minimally sufficient for a simple query 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?
Single sentence effectively conveys the tool's purpose without extraneous words. Could be slightly improved with a structured list of metrics, but current form is efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks important context such as whether results are per-user or aggregate, pagination, or response format. Given no output schema, the description should provide more detail to fully inform 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 both start_date and end_date already described in ISO format. The description does not add further meaning beyond the schema, meeting 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?
Description clearly specifies a 'Get' operation on 'team resource utilization summary' and lists the key metrics (target hours, actual hours, billable hours, utilization percentage). It distinguishes from sibling tools like get_hours_summary and get_billing_report by focusing on utilization, though no explicit differentiation is given.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 get_frame_order_utilization or get_budget_health. The description implies usage for resource reporting but provides no exclusions or 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.
get_unbilled_timeBInspect
Get a summary of unbilled time across the organization, including total hours, total amount, number of entries, and aging information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It states the tool returns a summary with specific fields, but does not mention authentication needs, data freshness, organizational scope beyond the brief phrase, or any side effects. The 'aging information' hint is useful but insufficient.
Agents need to know what a tool does to the world before calling 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, direct sentence with no extraneous information. It front-loads the core function and list of included data points, earning maximum 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?
While the description covers the basic output fields, it lacks details on aggregation level, time range, or update frequency. Given no output schema, more context would help the agent understand the exact structure and constraints.
Complex tools with many parameters or behaviors need more documentation. 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 is empty with 100% coverage. Per guidelines, baseline is 4. The description does not add parameter details as none exist, so this 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 tool retrieves a summary of unbilled time across the organization and lists specific fields (total hours, total amount, entries, aging). However, it does not explicitly distinguish this from sibling tools like get_billing_report or get_hours_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description lacks context on situations that favor this tool over siblings, e.g., get_billing_report for billed time.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_userAInspect
Invite a person to join your organization by email at a chosen role. The organization is fixed by your context - never pass an organization id. Valid roles: Admin, Finance, Manager, Member, Viewer (you can only invite at a role no more privileged than your own). The invitee receives an email with an acceptance link.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Role to grant on acceptance (required). One of: Admin, Finance, Manager, Member, Viewer. You cannot invite at a role more privileged than your own. | |
| Yes | Email address of the person to invite (required). | ||
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses key outcomes: email sent with acceptance link. But does not detail edge cases, rate limits, or idempotency (though mentioned in 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 with essential information front-loaded. Could be slightly more structured, but it is efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, description explains the post-invocation outcome (email with acceptance link). It covers the main purpose and constraints, though missing success/failure 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 100%, so baseline is 3. Description adds context about role hierarchy but does not significantly enhance parameter understanding beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Invite a person to join your organization by email at a chosen role.' It also specifies the fixed organization context, distinguishing it from sibling tools like cancel_invite or resend_invite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, including role hierarchy and fixed organization. However, it lacks explicit exclusion criteria (e.g., when the user is already invited or exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_invoiceAInspect
Issue a Draft invoice: assigns a gapless invoice number, locks the invoice as immutable, and marks source hours as Invoiced. IRREVERSIBLE — corrections require void + reissue. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Id of the Draft invoice to issue. | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses irreversibility, token expiration, and the exact state changes. Without annotations, this fully covers the behavior an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four focused sentences with zero wasted words. Front-loaded with the core action, then details. Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering the parameter count, lack of annotations and output schema, the description provides all necessary context: workflow, irreversibility, token expiry, idempotency. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds workflow context for confirm_token and idempotency_key. The invoice_id is implicit in both calls. The description enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Issue a Draft invoice), the effects (assigns gapless number, locks immutable, marks hours invoiced), and the two-step process. It distinguishes from siblings like void_invoice or send_invoice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance on the preview-then-commit pattern is provided, including the requirement for confirm_token and idempotency_key. No explicit when-not-to-use, but the preview mode acts as a safeguard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersAInspect
List all customers in the organization
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only states 'list all customers', which suggests a read-only operation but does not mention pagination, rate limits, authentication requirements, or whether it returns all customers at once. The description adds minimal behavioral context beyond the tool name.
Agents need to know what a tool does to the world before calling 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 extra words. Every part serves a purpose, and it is highly efficient for a simple list 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 tool's simplicity (no parameters, no output schema), the description covers the essential purpose. However, it omits details about the return format (e.g., what fields are returned). Since there is no output schema, providing a brief hint about the return structure would make it 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 has zero parameters, so schema coverage is 100%. Per the rubric, baseline is 4. The description does not need to explain parameters since there are none, and it adds no extra meaning necessary beyond the schema being empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'customers', and the scope 'in the organization'. It distinguishes itself from sibling tools like create_customer, delete_customer, get_customer_info by implying a full listing rather than a single entity or mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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. However, the simplicity of the tool (no parameters, read-only) implies usage when a complete list of customers is needed, without guidance on when not to use or refer to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_favoritesAInspect
List the current user's saved time-entry favorites (quick-entry shortcuts).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states what the tool does without disclosing any behavioral traits such as read-only status, pagination, sorting, 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?
The description is a single, front-loaded sentence with no unnecessary words, efficiently conveying 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?
For a simple list tool with no parameters and no output schema, the description is adequate. It could optionally hint at the return structure (e.g., 'returns an array of favorites'), but it is mostly complete given the 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?
There are zero parameters, so no parameter information is needed. The description adds no param semantics beyond what the schema provides, but the 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 explicitly states the action ('List') and the resource ('current user's saved time-entry favorites'), distinguishing it from sibling tools like create_favorite, delete_favorite, and use_favorite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 given, but the action is straightforward; context implies it is for viewing favorites rather than creating or using them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invoicesAInspect
List invoices for your organization, optionally filtered by customer and status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Optional: filter by invoice status (e.g. Draft, Issued, Paid, Void). | |
| page_size | No | Number of results per page (default 20, max 100). | |
| customer_id | No | Optional: filter by customer ID. | |
| page_number | No | Page number, 1-based (default 1). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states a read operation (list) but does not disclose pagination, ordering, or any side effects. The schema includes pagination parameters but the description omits behavioral details, leaving gaps for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the main action, and contains no extraneous information. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 4 parameters and no output schema, the description adequately states purpose and filters but lacks details on pagination behavior or default sorting. It is minimal but functional for a straightforward listing 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 100%, so baseline is 3. The description mentions two parameters (customer_id and status) that align with the schema but adds no new meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'invoices', and identifies optional filtering by customer and status. This differentiates it from siblings like get_invoice (single invoice) and generate_invoice (create 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 implies when to use (to list invoices with optional filters) but does not explicitly mention alternatives or when not to use. It lacks guidance on choosing between list_invoices and get_invoice for specific scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_time_entriesAInspect
List the current user's own individual time entries for a date range, with project name, task/subtask ids, hours, description, billable flag and status. Use this to see exactly what was logged (the per-entry detail), as opposed to aggregated totals.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional maximum number of entries to return (1-200, default 200). Entries are returned most-recent first. | |
| end_date | Yes | End date of the range (ISO 8601 format, e.g. 2026-01-31) | |
| start_date | Yes | Start date of the range (ISO 8601 format, e.g. 2026-01-01) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It implies a read-only operation by stating 'list' and returns entries. However, it does not explicitly mention that no data is modified. It also omits the ordering detail (most-recent first) that is present in the schema description for the limit parameter. Minor omission, but overall clear.
Agents need to know what a tool does to the 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 serving a distinct purpose: the first states what the tool does, the second gives usage context. No filler or redundancy. 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 tool's simplicity, no output schema, and high sibling count, the description provides sufficient context: it names the fields returned, specifies date range, and clarifies it's per-entry detail. This is enough for an agent to correctly select 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%, so the baseline is 3. The tool description does not add any extra meaning beyond the schema. It does list the return fields, which indirectly relates to parameters, 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 lists the current user's own time entries for a date range, specifying the fields returned (project name, task/subtask ids, hours, etc.). It distinctively contrasts with aggregated totals, which differentiates it from sibling tools like get_hours_summary or get_billing_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this to see exactly what was logged (the per-entry detail), as opposed to aggregated totals.' This tells the agent when to use this tool instead of alternatives for aggregated data, which 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.
list_projectsBInspect
List all projects in the organization with their status and budget information
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | No | Optional customer ID to filter projects by customer |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description is the sole source of behavioral info. It does not disclose whether all projects (including archived or hidden) are listed, whether pagination or sorting applies, or what permissions are required. The phrase 'in the organization' implies scope but lacks nuance.
Agents need to know what a tool does to the world before calling 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 primary action and result. It contains no redundant words and efficiently conveys the tool's 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?
The description mentions output includes status and budget, but lacks details on return format, potential fields, or behavior when no customer_id is given. Given no output schema, more information about what 'all projects' entails (e.g., active, archived) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description itself does not add extra meaning about parameters beyond what the input schema already provides. The schema already describes customer_id as an optional filter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 all projects in the organization, specifying that it includes status and budget information. This verb-resource combination is specific and distinguishes it from sibling tools like get_project_status which retrieves details for a single project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 over alternatives such as get_project_status or check_budget_limits. The description does not mention exclusions or contextual cues for selection, leaving the agent without decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recycle_binAInspect
List soft-deleted entities currently in the recycle bin, optionally filtered by entity type and paged.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| page_size | No | Items per page (default 20). | |
| entity_type | No | Filter by type: Customer, Project, Task, or SubTask. Omit for all types. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries burden but only states it lists items. Does not disclose that it is a safe read operation, auth needs, or implications (e.g., does not modify 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?
Single sentence, front-loaded with primary action, no wasted words. Efficiently conveys core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately describes tool for listing filtered and paged items. Lacks mention of return format or behavior when bin is empty, but sufficient for basic 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 descriptions cover all 3 parameters (100% coverage). Description adds no extra 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?
Description clearly states verb 'List', resource 'soft-deleted entities in the recycle bin', and optional filtering and paging. Distinguishes from sibling tools like 'restore_entity' or 'permanent_delete_entity'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for viewing soft-deleted entities, but does not provide explicit when-to-use or when-not-to-use guidance nor mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduled_reportsAInspect
List all scheduled report definitions for the organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states it lists all definitions, implying a read operation. However, it does not disclose pagination, performance, or authorization requirements. Adequate but not detailed.
Agents need to know what a tool does to the 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 information is front-loaded and to the point. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description is adequate. It could mention if the list is paginated or the full set, but it is sufficient for the agent to understand the tool's 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 tool has no parameters, and schema coverage is 100%. The description does not need to add parameter information. Baseline is 4 for zero-parameter 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 action (list) and the resource (scheduled report definitions) and specifies the scope (for the organization). This distinguishes it from sibling tools like create_scheduled_report or cancel_scheduled_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description implies it is for viewing all definitions, but lacks context about alternatives or prerequisites. Given the simplicity, a basic score is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_timeAInspect
Create a single time entry on a subtask for the current user. Requires permission to log time.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date of the work (ISO 8601 format, e.g. 2026-01-15). | |
| text | No | Optional description of the work performed. | |
| hours | Yes | Number of hours worked (greater than 0 and at most 24). | |
| start_time | No | Optional start time of day in 24-hour HH:mm (e.g. "12:00"). Set this when the user gives a specific time or a time range (and put the range length in 'hours'); the entry then runs from this time for 'hours'. Defaults to 09:00 when omitted. | |
| subtask_id | Yes | Id of the subtask to log time against. All time entries are recorded at the subtask level. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states creation scope and permission, but lacks details on idempotency, side effects (e.g., does it overwrite?), validation, or constraints beyond permission. Incomplete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 18 words, front-loaded with purpose. Every word adds value; 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?
Given 5 parameters, no output schema, and no annotations, the description is minimal. It covers purpose and permission but omits return value, error handling, and edge cases. 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 100%, so the schema documents all parameters clearly. The tool description adds no additional meaning beyond what's in the schema, earning 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?
Description clearly states verb 'create', object 'single time entry on a subtask', and user scope 'for the current user'. Differentiates from sibling tools like start_timer or bulk_create_time_reports by specifying subtask-level entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required permission ('Requires permission to log time') but does not provide when to use vs alternatives like start_timer or create_time_report. No explicit context for exclusion or decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_user_work_scheduleAInspect
Manage YOUR OWN personal work schedule. action is one of: create, update, delete, assign (assign = make a schedule your active one). For update/delete/assign, provide schedule_id. default_hours is your standard daily hours (for a simple schedule). The organization is fixed by your context, and you can only manage your own schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional schedule notes/name. | |
| action | Yes | What to do (required): create, update, delete, or assign. | |
| is_active | No | Whether this schedule is active (create/update). | |
| schedule_id | No | Id of your schedule (required for update, delete, assign). | |
| default_hours | No | Standard daily working hours for a simple schedule (e.g. 8). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description covers behavioral aspects: action types, required parameters, and scoping to own schedule. It does not detail side effects beyond deletion, but the behavior is straightforward.
Agents need to know what a tool does to the 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 fluff. Front-loaded with purpose and key usage notes. 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?
No output schema, but for a CRUD-like tool, the description covers purpose, actions, and key parameters. Could mention return values, but adequate for 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%, but description adds context: 'action is one of: create, update, delete, assign' and clarifies that default_hours is for a simple schedule. This enriches understanding 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 it manages 'YOUR OWN personal work schedule' with specific actions (create, update, delete, assign), distinguishing it from sibling tools like approve_timesheet or assign_user_to_customer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 action and that schedule_id is required for update/delete/assign. It also notes that the organization is fixed and only personal schedules can be managed. No explicit exclusion of alternatives, but enough guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_invoice_paidAInspect
Mark an issued or sent invoice as Paid. Optionally record the paid amount and payment date. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| paid_date | No | Optional payment date (ISO 8601). Defaults to today. | |
| invoice_id | Yes | Id of the invoice to mark as paid. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It mentions the preview mode and optional payment date, but does not clarify potential irreversibility or side effects of marking an invoice paid. The idempotency key behavior is described only 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?
Two sentences with no wasted words. The first sentence states the action, the second explains the preview vs. confirm behavior and optional parameters. 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?
The description covers the core workflow but omits important details: no mention of the paid_amount parameter (which appears in text but not in schema), no description of return values (no output schema), and no discussion of error cases or prerequisites. For a mutation tool with 4 parameters, this 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 coverage is 100%, so the baseline is 3. The description adds 'Optionally record the paid amount and payment date,' but 'paid amount' is not a parameter in the schema—only 'paid_date' exists. This mismatch reduces 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 function: 'Mark an issued or sent invoice as Paid.' It uses a specific verb ('mark') and resource ('invoice'), distinguishing it from sibling tools like 'issue_invoice', 'send_invoice', or 'void_invoice'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the preview vs. actual write behavior via confirm=true, providing usage context. However, it does not explicitly state when to use this tool over alternatives (e.g., when not to use, prerequisites like invoice status).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_time_invoicedBInspect
Mark one or more time reports as invoiced, optionally linking them to an existing invoice. Requires Manager role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| invoice_id | No | Optional ID of an existing invoice to link these time reports to. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| time_report_ids | Yes | List of time report IDs to mark as invoiced (required, at least one). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states the action 'mark as invoiced' and optional linking, but does not mention side effects (e.g., whether time reports are locked, if edits are allowed afterward) or the confirmation/preview behavior (which is only 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 description is a single sentence that front-loads the action and includes a necessary role requirement. Every word is relevant and there is 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 no output schema and no annotations, the description is under-informative. It does not explain the impact of marking time as invoiced (e.g., whether it can be reversed, how it affects billing reports), the preview mode, or idempotency behavior. An agent would lack key context to use the tool safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value by mentioning 'optionally linking to an existing invoice' (referencing invoice_id) but does not provide further explanation 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 'mark' and resource 'time reports as invoiced', and mentions optional linking to an invoice. It distinguishes from sibling tools like 'mark_invoice_paid' by specifying it operates on time reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 'Requires Manager role or above', providing a precondition. However, it does not specify when to use this tool versus alternatives (e.g., when time reports should not be marked as invoiced) or any context about workflow integration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_projectAInspect
Move a billing project to a different customer within your organization. Both the project and the destination customer must belong to your organization. Requires Manager role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ID of the project to move (required). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| new_customer_id | Yes | ID of the destination customer (required, must belong to your organization). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the mutation (move) and access requirement (Manager role), but does not mention potential side effects (e.g., impact on billing or timesheets) 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 serving a clear purpose: first states the operation and constraints, second adds role requirement. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description covers purpose, constraints, and role requirement. It is slightly incomplete in that it does not describe what happens after the move (e.g., billing changes), but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema provides; it only restates parameter IDs and requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (move), the resource (billing project), and the destination (different customer within organization). It distinguishes from sibling tools like move_task and move_subtask.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 when to use the tool (moving a billing project to a different customer) and prerequisites (both must belong to your organization, requires Manager role). It does not explicitly mention when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_subtaskAInspect
Move a subtask to a different task within your organization. Both the subtask and the destination task must belong to your organization. Requires Manager role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| subtask_id | Yes | ID of the subtask to move (required). | |
| new_task_id | Yes | ID of the destination task (required, must belong to your organization). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It mentions the move operation and role requirement, but does not disclose potential side effects (e.g., whether child subtasks are moved, impact on timesheets) or the non-idempotent nature (implied by idempotency_key). 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?
Two sentences, no filler. Every sentence carries essential information: action, constraints, and role requirement. 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 action and prerequisites but lacks information about the return value or potential errors. Since there is no output schema, an agent might need additional context about what to expect after a successful move. Still sufficient for a straightforward 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 100%, but the description adds value by clarifying that both subtask_id and new_task_id must belong to the same organization, a constraint not fully present in the schema. It also re-emphasizes the idempotency_key purpose. This additional context helps the agent understand parameter constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('move'), the resource ('subtask'), and the destination ('different task'). It also includes the scope ('within your organization'). This distinguishes it from sibling tools like move_task (moves tasks between projects) and update_subtask (modifies properties).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 contextual constraints: both subtask and destination task must belong to your organization, and requires Manager role or above. It does not explicitly state when not to use the tool or suggest alternatives, but the constraints are clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_taskAInspect
Move a task to a different billing project within your organization. Both the task and the destination project must belong to your organization. Requires Manager role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ID of the task to move (required). | |
| new_project_id | Yes | ID of the destination project (required, must belong to your organization). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses authorization requirements (Manager role) and a constraint (task and project must belong to the org). However, it does not explain side effects of moving a task (e.g., changes to assignments or dependencies). Without annotations, more transparency 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?
Two short sentences, no filler words. Every sentence adds valuable information: purpose, constraints, and permission requirements. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple move operation with no output schema, the description covers core purpose, prerequisites, and role. Missing details like return value or confirmation of success, but adequate for basic 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 description coverage is 100%, so the input schema already explains each parameter. The description adds no further semantic detail about the parameters, so it meets 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 verb 'Move' and the resource 'task', specifying the scope ('within your organization'). It distinguishes from sibling tools like 'move_project' and 'move_subtask' by focusing on tasks and billing projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states prerequisites: both task and project must belong to your organization, and requires Manager role or above. This gives clear context for when the tool can be used, though it doesn't mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
permanent_delete_entityAInspect
Permanently and IRREVERSIBLY hard-delete an entity from the recycle bin. The entity and all its children are removed from the database — this cannot be undone. Requires Admin role. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. entity_type must be one of: Customer, Project, Task, SubTask.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Id of the recycle-bin entity to permanently delete. | |
| entity_type | Yes | Type of entity to permanently delete. One of: Customer, Project, Task, SubTask. | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the destructive and irreversible nature, the two-step process, token expiry (~10 minutes), and idempotency key behavior. It does not mention rate limits or concurrency but covers core 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 two sentences long, front-loading the critical information (irreversible deletion) and then detailing the process and allowed types. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers purpose, usage, parameters, and admin requirement. It does not describe what the preview returns (just a token?), but is otherwise complete for a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context beyond schema descriptions: it explains that confirm_token comes from the preview call and that idempotency_key prevents duplicate actions. This aids the agent in understanding the two-step flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 permanently hard-deletes an entity from the recycle bin, emphasizing irreversibility. It specifies the allowed entity types (Customer, Project, Task, SubTask) and distinguishes this from sibling tools like delete and restore.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 instructions: call once with no token to preview, then re-call with confirm_token and idempotency_key to commit. It also notes the Admin role requirement. However, it does not explicitly state when not to use it or mention alternatives like restore_entity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_timesheetAInspect
Withdraw your submitted timesheet for a given month back to Draft (un-submit), reopening entries for editing. Only valid while the period is Submitted — after approval ask a manager to reopen it. Supply year and month (1-12).
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year of the month to recall (e.g. 2026). | |
| month | Yes | Calendar month to recall (1-12). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description discloses the state change (Submitted to Draft) and effect (reopening entries). It does not detail permissions or side effects, but is adequate for the action's complexity.
Agents need to know what a tool does to the 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. First sentence states action and result; second adds usage constraint and parameter hints. 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 simple parameters and no output schema, the description covers the main purpose and constraints. It lacks error scenarios (e.g., invalid state) but 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?
Schema coverage is 100%, so description adds little beyond repeating year/month format. It reinforces '1-12' for month but does not mention idempotency_key, which is already described well in 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 clearly states the tool withdraws a submitted timesheet back to Draft, reopening entries. It specifies the action on the timesheet resource and distinguishes from siblings like approve, reject, submit, and reopen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Only valid while the period is Submitted — after approval ask a manager to reopen it.' This provides clear when-to-use and 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.
reissue_invoiceAInspect
Void an issued invoice and clone it into a new editable Draft (void + reissue). The original is voided and retained for audit; the new Draft can be edited then re-issued. The void is IRREVERSIBLE. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Id of the issued invoice to void and reissue as a new Draft. | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses key behaviors: void is IRREVERSIBLE, original retained for audit, token expires in ~10 minutes, idempotency ensures safe retries. Could add prerequisites (e.g., invoice must be 'issued') but overall strong 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 with no redundant information. Action verb first, then key constraints, then usage instructions. 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?
Covers essential behavior and usage. Lacks explicit mention of preview return value (though implied by 'returned confirm_token'). Adequate for a tool with no output schema, but slightly incomplete without specifying preview response format.
Complex tools with many parameters or behaviors need more documentation. 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 3 parameters are described in schema (100% coverage). Description summarizes the flow but adds little beyond schema explanations. Baseline 3 is appropriate as description does not enrich parameter understanding 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?
Description clearly states the tool voids an issued invoice and creates a new editable Draft. It specifies the dual operation (void + reissue) and distinguishes from sibling void_invoice by including reissue step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the two-step preview-commit pattern: call once without token to preview, then re-call with confirm_token and idempotency_key to commit. Warns that void is irreversible. Does not contrast with alternatives like void_invoice but context from name and siblings makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_timesheetAInspect
Reject a submitted timesheet period, returning it to the reporter for correction. The period and its time reports revert to Rejected (editable). A rejection comment is required. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded — timesheet approval is PM work, not finance).
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | Rejection reason shown to the reporter. Required so they know what to fix. | |
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| submission_period_id | Yes | Id of the submission period to reject (from get_pending_approvals or list_approval_history). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the status change to 'Rejected (editable)', the need for confirm=true to write, and role restrictions. However, it does not cover potential idempotency behavior or error states, missing some 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?
Five concise sentences front-load the key action and outcome. Each sentence adds a distinct point: action, result, comment requirement, confirm behavior, role restrictions. 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?
No output schema exists, so description should explain return values. It mentions preview returns 'nothing written' but does not specify what the successful rejection response contains (e.g., updated submission period). Also omits error scenarios like already approved states. Adequate but incomplete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value over the schema for 'comment' (purpose of rejection reason), 'confirm' (preview vs action), and 'submission_period_id' (source hint). Only 'idempotency_key' lacks added 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 verb 'reject' and the resource 'submitted timesheet period', and specifies the outcome of returning for correction. It distinguishes well from sibling tools like 'approve_timesheet' and 'reopen_timesheet'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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-to-use context, including role requirements (Manager/Admin/Owner, not Finance), the confirm flag for execution vs preview, and the requirement of a rejection comment. No explicit alternatives mentioned but guidelines are comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_userAInspect
Permanently remove an organization member. This action is IRREVERSIBLE — the user must be re-invited to rejoin. Returns a preview; re-call with the confirm_token and an idempotency_key to commit.
| Name | Required | Description | Default |
|---|---|---|---|
| org_user_id | Yes | Id of the OrganizationUser record to remove (not the Firebase userId). | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses that the action is irreversible, requires a two-step workflow, token expiration (~10 min), and idempotency key behavior. This provides complete behavioral 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 extremely concise at two sentences, with no filler. It front-loads the purpose and provides the critical workflow details 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 tool with 3 parameters and no output schema, the description adequately covers the workflow. It could mention what the commit returns, but the agent can infer from subsequent usage. Slightly incomplete but still 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?
Although schema coverage is 100%, the description adds significant meaning: clarifies org_user_id is OrganizationUser ID (not Firebase userId), explains confirm_token origin and expiration, and idempotency_key's purpose to prevent duplicate actions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'remove' with the clear resource 'organization member', and the context of permanence distinguishes it from siblings like 'disable_user' which is temporary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 a two-step process (preview then commit with token and idempotency_key) and warns about irreversibility. It does not explicitly state when to use vs. alternatives like disable_user, but the usage pattern is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_user_from_customerAInspect
Remove a user's assignment from a customer, revoking their access to the customer's projects and tasks. Requires confirm=true to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| customer_id | Yes | Id of the customer to remove the user from. | |
| org_user_id | Yes | OrganizationUsers.Id of the member to unassign. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description discloses the confirm behavior and revocation of access but lacks details on reversibility, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with 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?
Given four parameters and no output schema, description covers main purpose and confirm behavior but omits details on idempotency and consequences of removal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema documentation covers all parameters (100% coverage); description adds minimal value by reiterating confirm requirement, but no new semantics for other 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 clearly states the tool removes a user's assignment from a customer and revokes access to projects and tasks, distinguishing it from siblings like remove_user and remove_user_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the confirm=true requirement but does not provide explicit when-to-use or alternative tool guidance, though context can be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_user_projectAInspect
Remove an organization member's assignment from a specific project. The user will no longer have direct visibility to that project (they may still see it via a customer assignment). Requires org_user_id and project_id. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Id of the project to remove the user from. | |
| org_user_id | Yes | Id of the OrganizationUser to remove from the project (not the Firebase user id). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively communicates that the tool removes assignment, affects visibility, and has permission restrictions. It mentions the idempotency_key parameter but does not elaborate on its behavior. It also omits details about the return value or side effects beyond the visibility note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with four sentences, each serving a distinct purpose: purpose, effect, required parameters, and a privilege constraint. It is front-loaded with the core action and wastes no 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 lack of output schema, the description covers the essential behavioral aspects, required parameters, and important contextual rules. However, it does not describe the response format or confirm whether the action is reversible, leaving minor 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 already has 100% description coverage for all three parameters. The description adds value by clarifying that org_user_id is not a Firebase user ID, emphasizing the fixed organization context, and explaining the purpose of idempotency_key. This goes beyond 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 verb (Remove) and resource (organization member's assignment from a specific project). It distinguishes from sibling tools like assign_user_to_project and remove_user_from_customer by specifying the removal context and noting the user may still see via a customer assignment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 (removing a user from a project) and includes critical constraints like 'never pass an organization id' and 'cannot target a user more privileged than yourself.' However, it does not explicitly mention alternative tools for different scenarios (e.g., remove_user, remove_user_from_customer), which would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reopen_monthAInspect
Reopen a previously closed billing month, allowing time to be logged and edited again. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Reversible only by closing the month again.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year of the month to reopen (e.g. 2026). | |
| month | Yes | Calendar month to reopen (1-12). | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses the two-step process, idempotency, and reversibility. No contradictions; a minor gap is lack of mention of any destructive side effects beyond reopening.
Agents need to know what a tool does to the 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 purpose, followed by usage pattern. 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?
The description adequately explains the two-step workflow and key behaviors for a tool with no output schema. Missing error conditions or state assumptions (e.g., month must be closed) but still sufficient for standard 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?
All four parameters have schema descriptions (100% coverage), and the description adds valuable context: confirm_token expires in ~10 minutes, idempotency_key ensures safe retry, and preview returns a 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 clearly states the verb 'reopen' and the resource 'previously closed billing month', explicitly differentiating it from sibling tools like 'close_month'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the two-step preview-commit pattern and reversibility, providing clear usage context. It does not explicitly state when not to use, but the instructions are sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reopen_timesheetAInspect
Reopen a Submitted or Approved timesheet period for corrections. The period and its time reports revert to Rejected (editable), allowing the reporter to edit and resubmit. Use this when an approved period needs fixing. An optional comment can be provided. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded — timesheet approval is PM work, not finance).
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Optional comment explaining why the period is being reopened. Shown to the reporter. | |
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| submission_period_id | Yes | Id of the submission period to reopen (from get_pending_approvals or list_approval_history). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explains that the period and time reports revert to Rejected (editable), and that confirm=true is needed to proceed (otherwise preview only). No annotations present, so description carries the burden; it covers key behaviors but omits idempotency 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?
Three concise sentences, front-loaded with purpose. Every sentence adds value; 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?
Covers purpose, effect on state, role requirements, and confirm usage. No output schema, but the description adequately sets expectations for the tool's behavior. Could mention idempotency_key briefly, 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 coverage is 100% with descriptions. The description adds extra context: explains where to get submission_period_id (from get_pending_approvals or list_approval_history) and clarifies confirm behavior. These additions go beyond 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?
Clearly states the action 'Reopen a Submitted or Approved timesheet period for corrections.' The verb 'reopen' and resource 'timesheet period' are specific, and it distinguishes from sibling tools like approve_timesheet or reject_timesheet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context: 'Use this when an approved period needs fixing.' Also states role requirements (Manager or Admin/Owner) and excludes Finance. Does not explicitly say when not to use, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resend_inviteAInspect
Re-send a pending invitation email to the invitee and reset its status to Pending. Requires the invite_id (discover it via list of pending invites). The organization is fixed by your context — never pass an organization id.
| Name | Required | Description | Default |
|---|---|---|---|
| invite_id | Yes | Id of the pending invitation to resend. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the action (resend email, reset status) but does not cover side effects (e.g., email sending, rate limits) or error conditions (e.g., what if invite already accepted or not found). Sufficient for a simple tool but not thorough.
Agents need to know what a tool does to the 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, direct and to the point. Every sentence adds necessary information without elaboration 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 tool with two parameters and no output schema, the description covers key aspects: what it does, required input, and contextual nuance (fixed organization). Missing error handling details, but acceptable given the tool's 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 covers both parameters with descriptions (100% coverage). The description adds value by explaining how to obtain invite_id (from list of pending invites) and clarifying organization context. Idempotency key is already described in schema, so description doesn't repeat 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 clearly states the verb 're-send', the resource 'pending invitation email', and the effect 'reset its status to Pending'. It distinguishes from siblings like invite_user (creates new) and cancel_invite (cancels).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 requires invite_id and suggests discovering it via list of pending invites. Also notes that organization is fixed by context, so no need to pass an organization id. Lacks explicit when-not-to-use advice, but is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_entityAInspect
Restore a soft-deleted entity (customer, project, task, or subtask) and all its children from the recycle bin. Requires Admin role. entity_type must be one of: Customer, Project, Task, SubTask.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Id of the deleted entity to restore. | |
| entity_type | Yes | Type of entity to restore. One of: Customer, Project, Task, SubTask. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses admin requirement, entity types, and child restoration, but does not mention error handling, idempotency behavior (though schema hints), or return 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?
Two sentences with no filler. First sentence states action and scope, second adds constraints (role, types). 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?
Given no output schema, description should explain outcome. It covers purpose and constraints well but omits what the API returns (e.g., restored entity object or confirmation). Still fairly complete for a 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 coverage is 100%; description restates entity_type values already in schema. Minimal added meaning: admin role and child restoration are contextual but not parameter-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (restore), the resource (soft-deleted entity), and scope (all children). It specifies the exact entity types and distinguishes from siblings like permanent_delete_entity and list_recycle_bin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use (restore from recycle bin) and who can use (Admin role). It implicitly separates from permanent deletion tools but does not explicitly list when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchAInspect
Search the organization's work-structure entities (customers, projects, tasks, subtasks, users) by id or name. Returns a flat, assignment-scoped result list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default 30). | |
| query | Yes | Search text — matches by entity id (prefix) and name (contains). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full weight. It discloses that results are 'flat, assignment-scoped', but does not mention rate limits, authentication needs, pagination behavior, or what happens on empty results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose. Every word adds value; 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?
Given the tool's simplicity (2 params, no output schema), the description adequately covers purpose, search behavior, and result scope. The term 'assignment-scoped' could be elaborated, but overall it is sufficiently complete for an AI 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%, but the description adds value by explaining that query matches by entity id (prefix) and name (contains), and that limit defaults to 30. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search', specifies the target resource as multiple work-structure entities (customers, projects, tasks, subtasks, users), and mentions search by id or name. It effectively distinguishes from sibling list tools that focus on single entity 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?
Implies usage for searching across entities by id or name, but does not explicitly state when to use this tool vs. alternatives (e.g., list_customers for customer-specific queries). No when-not or alternative names provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_invoiceAInspect
Mark an issued invoice as Sent to the customer. The invoice must already be in Issued status. Returns a preview unless confirm=true is set.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| invoice_id | Yes | Id of the issued invoice to mark as sent. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral traits: it returns a preview unless confirm=true is set, and describes the idempotency_key behavior. However, it does not detail what 'mark as Sent' entails (e.g., email dispatch).
Agents need to know what a tool does to the 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 critical info front-loaded; 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?
No output schema, but the description hints at return value ('Returns a preview') and adequately distinguishes from many sibling tools. A bit more detail on preview structure could improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the preview behavior for the confirm parameter ('returns a preview only — nothing is written'), going 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 ('mark as Sent'), the resource ('issued invoice'), and a precondition ('must already be in Issued status'), making it distinct from sibling tools like 'issue_invoice' or 'mark_invoice_paid'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use (invoice in Issued status) and describes the preview vs confirm behavior, but does not explicitly mention when not to use or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_budget_thresholdsAInspect
Set the organization-level budget alert thresholds. budget_warning_threshold_percent is the utilization % at which a project is flagged At-Risk; budget_critical_threshold_percent is the % at which it is flagged Over-Budget. The warning threshold must be strictly less than the critical threshold. Supply one or both — only the fields you provide are changed (PATCH semantics). The organization is fixed by your context — never pass an organization id.
| Name | Required | Description | Default |
|---|---|---|---|
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| budget_warning_threshold_percent | No | Utilization % at which a project is flagged At-Risk (must be less than the critical threshold, 1-99). | |
| budget_critical_threshold_percent | No | Utilization % at which a project is flagged Over-Budget (must be greater than the warning threshold, 2-100). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses PATCH semantics ('only the fields you provide are changed'), idempotency key usage, and the constraint that warning must be strictly less than critical. It does not mention required permissions, rate limits, or side effects, but for a simple setter this is reasonable.
Agents need to know what a tool does to the 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 purpose, parameter semantics, and usage note without excess. Front-loaded with core purpose, then parameter details, then crucial guidance. Every sentence is informative and earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description provides sufficient context: what the tool does, how parameters relate, and idempotency. It lacks permission requirements, but that is partially offset by the clear 'organization fixed by your context' note. It is adequately complete for effective 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 good descriptions. The description adds value by explaining the thresholds in context (At-Risk vs Over-Budget), clarifying PATCH behavior, and explicitly stating no organization ID parameter. This goes beyond the schema's individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets organization-level budget alert thresholds, with specific verb 'set' and resource 'budget threshold percent'. It names the two thresholds and their roles, distinguishing this from siblings like 'check_budget_limits' or 'get_budget_alerts' by focusing on configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 (setting organization-level thresholds) and provides a critical note: 'The organization is fixed by your context — never pass an organization id.' It does not explicitly list when not to use it or mention alternative tools for similar purposes, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_custom_field_valueAInspect
Set the value of a custom field on a specific entity (a project, task, subtask, time report, or customer). The custom field must already be defined for that entity type. The organization is fixed by your context. You must have permission to update the target entity.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | The value to set, as a string. It is validated/coerced to the field's declared type (Number, Date, DateTime, or one of the list options). | |
| entity | Yes | The entity type (required). One of: billing_projects, billing_tasks, billing_sub_tasks, sub_tasks_time_reports, billing_customers. | |
| field_id | Yes | The field_id of the custom field definition (required). Must be defined for this entity type. | |
| entity_id | Yes | Id of the specific entity instance to set the value on (required). Must be in your organization. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses mutation behavior, required permissions, and the optional idempotency key effect. It could be more explicit that setting a value overwrites any existing value for that field on the entity, but overall it is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, concise, and front-loaded with the main purpose. Every sentence contributes necessary context (purpose, entity types, prerequisites). It is efficient without being overly 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?
Given no output schema, the description covers prerequisites and behavior adequately. However, it lacks detail about the response (e.g., success indicator, returned data) and does not explicitly mention overwrite behavior. For a mutation tool, this leaves some 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 100% with descriptions for all five parameters. The description adds little beyond the schema, such as noting validation/coercion to the field's declared type. According to guidelines, high schema coverage (>80%) yields a baseline of 3, and the description adds minimal extra semantic 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 'Set the value of a custom field on a specific entity' and enumerates the entity types (project, task, subtask, time report, customer). It distinguishes from sibling tools like 'create_custom_field' which defines fields, and 'update_custom_field' which is for field definitions, not values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 prerequisites: the custom field must already be defined for that entity type, and the user must have permission to update the target entity. It implies when to use this tool (to set a custom field value). However, it does not explicitly state when not to use it or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_org_work_scheduleAInspect
Create or update a named organization-level work schedule (a weekly working-time profile). Provide schedule_id to update an existing one, or omit it to create a new one. weekly_schedule is a JSON object mapping lowercase day names to a working window, e.g. {"monday":{"start":"09:00","end":"18:00"},"saturday":null}. The organization is fixed by your context. On update, only the fields you supply are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Schedule name (required when creating). | |
| notes | No | Optional free-text notes. | |
| is_active | No | Whether the profile is active. Defaults to true on create. | |
| schedule_id | No | Id of an existing schedule to UPDATE. Omit to CREATE a new one. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| weekly_schedule | No | A JSON object (as a string) mapping lowercase day names (sunday..saturday) to a {"start":"HH:mm","end":"HH:mm"} window, or null for a non-working day. Example: {"monday":{"start":"09:00","end":"18:00"},"sunday":null}. | |
| first_day_of_week | No | First day of the week: 0=Sunday .. 6=Saturday (1=Monday default). | |
| default_for_countries | No | Optional comma-separated ISO-2 country codes this profile is the default for, e.g. "US,CA". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that updates are partial ('only the fields you supply are changed') and that idempotency is supported. Missing: required permissions, potential failures, side effects like overriding existing schedules. The description is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no redundancy. Every sentence contributes unique information: purpose, create/update distinction, JSON example, update behavior, and context. 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 8 parameters and no output schema, the description covers the key behavioral aspects (create vs update, partial update, format). It omits return value/confirmation and idempotency details (though schema covers idempotency). The description is sufficient for correct use, with schema filling remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the weekly_schedule format with an example, clarifying the schedule_id usage for create/update, and noting that the organization is fixed. This goes beyond the schema 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?
The description clearly states the purpose: 'Create or update a named organization-level work schedule (a weekly working-time profile).' It uses specific verbs (create/update) and identifies the resource (org-level work schedule). Although it doesn't explicitly distinguish from siblings, the 'organization-level' qualifier differentiates it from user-level schedule 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 explains when to create vs update (provide schedule_id or omit), and notes that the organization is fixed. However, it does not compare this tool to alternatives like manage_user_work_schedule or holiday profiles, leaving the agent to infer usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_user_cost_rateAInspect
Set the internal hourly COST rate for one member of your organization (used for profit/margin reporting). The organization is fixed by your context - never pass an organization id. You cannot set your own cost rate. The rate value is never echoed back.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Id (or Firebase UID) of the member whose cost rate is being set (required). Must be a member of your organization; cannot be yourself. | |
| currency | No | Optional ISO 4217 currency code (e.g. USD, EUR). Defaults to USD. | |
| hourly_rate | Yes | The hourly cost rate, a positive number (required). | |
| effective_to | No | Optional date this rate stops applying (YYYY-MM-DD). Omit for an open-ended rate. | |
| effective_from | No | Optional date this rate takes effect (YYYY-MM-DD). Defaults to today. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It notes that the set action is for cost rate (affects profit/margin) and that the value is never echoed back. It lacks details on destructive potential or authentication needs but is adequate for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no redundancy. Purpose is stated first, followed by key constraints. Every sentence is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a setter with 6 params and no output schema, the description covers the main purpose, constraints, and a behavioral trait. It could mention the return behavior or error cases, but overall it is sufficient for an agent to use 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%, but the description adds value beyond the schema: it explains the context for organization (fixed, never pass ID), clarifies user_id cannot be yourself, and mentions defaults for effective_from. This justifies above 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 sets the internal hourly cost rate for an organization member, used for profit/margin reporting. It distinguishes from sibling tools like bulk_update_cost_rates by focusing on a single member and from get_cost_rate_history by being a 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?
Provides clear guidance: organization is fixed by context, user must be a member and not yourself, and rate is not echoed back. However, it does not explicitly state when not to use this tool or mention alternatives like bulk_update_cost_rates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_timerAInspect
Start (or replace) your running timer on a subtask. There is at most one running timer per user; starting a new one replaces any existing. Stop it later with stop_timer to create a Draft time entry, or cancel it with cancel_timer to discard it. Supply subtask_id.
| Name | Required | Description | Default |
|---|---|---|---|
| subtask_id | Yes | Id of the subtask to track time against. | |
| description | No | Optional description of the work being tracked. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses replacement behavior (destructive) and lifecycle. Lacks mention of permissions or return format, but adds value beyond 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 concise sentences, front-loaded with action. No redundant words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, replacement behavior, and subsequent actions. Lacks output information (no output schema) which would help agent understand return value. Otherwise complete for a simple 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?
Schema has 100% coverage with descriptions for all 3 parameters. Description only mentions subtask_id without adding new meaning. No additional insight beyond 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?
Clearly states it starts/replaces a timer on a subtask. Distinguishes from stop_timer and cancel_timer by mentioning their roles. Specific verb (start/replace) and resource (subtask timer).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells when to use (start a timer) and that starting replaces existing. Mentions supply subtask_id. Defers to stop/cancel for next steps. No explicit when-not-to but implied by uniqueness constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_timerAInspect
Stop your running timer. The elapsed time is computed and a Draft time entry is created automatically. Returns the created time entry. No arguments needed.
| Name | Required | Description | Default |
|---|---|---|---|
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses key behaviors: stops timer, computes elapsed time, creates and returns a draft time entry. The statement 'No arguments needed' slightly contradicts the optional idempotency_key but still accurately describes the minimum call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action, 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 tool with one optional parameter and no output schema, the description sufficiently covers what it does and what it returns. It could note the idempotency key is optional but otherwise 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% with the idempotency_key already described. Description adds marginal value by noting 'No arguments needed', but does not enhance parameter understanding 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?
Description clearly states 'Stop your running timer' with specific verb and resource. It explains the outcome (elapsed time computed, draft entry created, returned) and implicitly distinguishes from cancel_timer by noting that a time entry is created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies this is the correct way to stop a timer to log time, but does not explicitly compare with alternatives like cancel_timer or start_timer, nor provide 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.
submit_timesheetAInspect
Submit your time entries for a given month for manager approval. Draft and Rejected entries in the month are transitioned to Submitted. A billing-closed month cannot be submitted. Supply year and month (1-12).
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year of the month to submit (e.g. 2026). | |
| month | Yes | Calendar month to submit (1-12). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Discloses that Draft and Rejected entries are transitioned to Submitted, and that billing-closed months are rejected. Does not mention idempotency behavior, success/failure responses, or whether it is a read-only or destructive operation (though mutation is implied). Adequate but leaves 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?
Three sentences, each adding value: purpose, effect + constraint, parameter format. No unnecessary words. Front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 simple params, the description covers purpose, effect, constraint, and parameter usage. Missing error cases or return value details, but sufficient for a straightforward action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions for all 3 parameters. Description adds little beyond schema: 'Supply year and month (1-12)' is redundant. Baseline 3 is appropriate as schema already 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 clearly states action ('Submit your time entries'), resource ('for a given month'), and effect ('Draft and Rejected entries transitioned to Submitted'). Distinguishes from siblings like approve_timesheet or reject_timesheet by focusing on submission for approval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: to submit a month for approval. Mentions a key constraint (billing-closed month cannot be submitted). Lacks explicit when-not-to-use or alternative sibling names, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_holiday_profileAInspect
Look up the official public/national holidays for a country (ISO-2 code, e.g. US, IL, GB) and year from an authoritative public source (Hebcal for Israel, Nager.Date for everywhere else). Returns a DRAFT list of holiday dates: each is either a full day off or a half/partial working day (with a start/end working window). Use this to PROPOSE a holiday profile — never invent holiday dates from memory. The dates returned are authoritative for that exact year.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | The calendar year to look up holidays for (e.g. 2026). | |
| country | Yes | ISO-2 country code (two letters), e.g. "US", "IL", "GB", "DE". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully covers behavioral traits: it specifies authoritative sources (Hebcal for Israel, Nager.Date otherwise), indicates the return type (draft list of holidays with full/half days and working windows), and emphasizes data reliability. 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?
The description is two sentences, front-loading the core functionality and ending with a critical usage warning. 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?
Despite lacking an output schema, the description adequately explains the return format (list of holiday dates with day-off classification and working windows) and sources. For a lookup tool with simple parameters, this 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?
Both parameters have 100% schema coverage with descriptions. The description does not add extra parameter details beyond providing example country codes in the text, but this meets 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 tool looks up official holidays for a given country and year from authoritative sources, returning a draft list. The verb 'look up' and resource 'holidays' are specific, and it distinguishes from sibling tools like create/update/delete_holiday_profile by focusing on suggestion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 advises to use this tool to propose a holiday profile and warns against inventing dates from memory. While it doesn't contrast with alternatives, the context of sibling tools 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.
undo_write_offAInspect
Reverse the most-recent write-off on a time report, restoring the written-off hours to the billable pool. The billing month must still be open. Requires Finance role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| time_report_id | Yes | ID of the time report whose most-recent write-off should be reversed (required). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although no annotations are provided, the description conveys the mutation nature, required conditions (open month, Finance role), and that it reverses a write-off. It does not explain the preview behavior via the 'confirm' parameter or the idempotency key, which are important 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?
The description is two sentences, front-loaded with the main action and followed by constraints. Every word serves a purpose 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 description lacks explanation of return values or error cases, and it omits details about the 'confirm' parameter's preview mode. Given no output schema, the description could be more complete but provides essential context for a mutate 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%, so the schema already documents all three parameters. The description adds no extra meaning beyond what the schema provides, so it meets the baseline without adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Reverse' and resource 'most-recent write-off on a time report', clearly distinguishing it from its forward sibling 'write_off_time'. It also explains the effect of restoring hours to the billable pool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 when to use (to reverse most-recent write-off) and conditions that must hold (billing month must still be open). It also specifies required role. However, it does not explicitly state when not to use (e.g., if multiple write-offs exist) or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_customerAInspect
Update an existing billing customer in your organization. Only the fields you provide are changed; everything else is left as-is (PATCH semantics). Discover ids with find_billing_work - never ask the user for an id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New customer name (2-50 characters). | |
| status | No | Customer status. One of: Active, Inactive. | |
| country | No | Customer country. | |
| currency | No | ISO 4217 currency code (e.g. USD, EUR). | |
| customer_id | Yes | Id of the customer to update (required). Must be a customer in your organization. | |
| description | No | Customer description (max 200 characters). | |
| contact_name | No | Primary contact person name. | |
| contact_email | No | Primary contact email address. | |
| contact_phone | No | Primary contact phone number. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains PATCH semantics (only provided fields change), but omits other behavioral aspects like required permissions, rollback behavior, or error conditions. The information is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficient sentences: the first establishes purpose and behavior, and the second provides a critical usage tip. No extraneous words, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters, no output schema, and no annotations, the description covers the essential aspects: what the tool does, how it behaves (PATCH), and how to get required IDs. It could mention return values or errors, but the description is sufficiently complete for an update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds value by explaining PATCH semantics and the importance of the ID, but does not elaborate on individual parameter usage beyond the schema. The contribution is modest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update) and the resource (existing billing customer), and distinguishes it from other tools like create_customer or delete_customer. It also specifies PATCH semantics, which 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?
It provides explicit guidance on how to obtain the customer ID using find_billing_work and instructs the agent never to ask the user for an ID. While it does not list alternatives or when not to use, 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.
update_custom_fieldAInspect
Update an existing custom field definition (title, type, options, or mandatory flag) in your organization. The organization is fixed by your context. You cannot change a field's field_id or the entity it applies to. Only the properties you supply are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | New field data type. One of: String, Number, Date, DateTime, ListOfValues. | |
| title | No | New human-readable label. | |
| is_mandatory | No | Whether a value is required when creating/updating the entity. | |
| list_of_values | No | New options (for a ListOfValues field; at least one non-blank option). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| field_definition_id | Yes | Id of the custom field definition to update (required). Must belong to your organization. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey all behavioral traits. It explains that field_id and entity cannot be changed and that the update is partial. However, it lacks details on potential side effects (e.g., consequences of changing field type on existing values), permissions required, or whether the operation 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 concise with three well-structured sentences. It opens with the core functionality, follows with organizational context, and concludes with constraints and behavior. No superfluous 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 lack of output schema and annotations, the description covers the essential aspects: what is updated, what is immutable, and the partial update nature. It could be enhanced by noting potential errors (e.g., invalid type change) or return behavior, but it remains fairly 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 coverage is 100%, so baseline is 3. The description adds value by clarifying that the organization is implicitly determined by context, that field_definition_id must belong to that organization, and that only supplied properties are modified. This context aids understanding beyond the schema's individual 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?
Description clearly states the verb (update), resource (custom field definition), and scope (in your organization). It also explicitly lists the modifiable properties and what cannot be changed (field_id or entity), distinguishing it from related tools like create_custom_field and set_custom_field_value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides context about the organization being fixed and that only supplied properties are changed (partial update). However, it does not explicitly state when to use this tool versus alternatives like create_custom_field, nor does it mention prerequisites (e.g., field must exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_draft_invoiceAInspect
Update editable fields on a DRAFT invoice (notes, internal notes, payment terms, payment instructions, due date, purchase order number). Only valid while the invoice is still a Draft.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes to appear on the invoice. | |
| due_date | No | Due date override (ISO 8601). | |
| invoice_id | Yes | Id of the draft invoice to update. | |
| payment_terms | No | Payment terms, e.g. "Net 30". | |
| internal_notes | No | Internal notes (not on the printed invoice). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| payment_instructions | No | Bank / payment instructions for the customer. | |
| purchase_order_number | No | Customer PO number to reference on the invoice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. States that it updates the invoice but does not disclose safety (auth, idempotency), error behavior for non-draft invoices, or return value. The idempotency key is in schema but not mentioned in 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?
Two sentences, no filler. The most critical information (what it does and when it's valid) is front-loaded. 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 tool with 8 parameters, no output schema, and no annotations, the description is adequate but not comprehensive. It covers the draft-only constraint and listed fields but lacks behavioral details like success/error responses or idempotency. Minimal for safe agent 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%, reducing need for param detail. Description lists the editable fields, matching schema parameters, but adds no additional meaning beyond schema descriptions. 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 explicitly states the action ('Update editable fields on a DRAFT invoice') and lists specific fields, clearly distinguishing from siblings like 'issue_invoice' or 'delete_draft_invoice' by specifying the draft-only constraint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the prerequisite (invoice must be a Draft) and implies that updates are only valid in that state. Does not name alternative tools or when not to use, but the draft-only condition is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_frame_orderAInspect
Update an Open frame order's editable fields (reference, description, caps, dates, currency, notes). Closed frame orders cannot be edited; use this only for Open frame orders.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Updated free-text notes (max 2000 chars). | |
| currency | No | Updated ISO 4217 currency code (e.g. USD). | |
| end_date | No | Updated end date (YYYY-MM-DD, >= start_date), or omit to clear. | |
| reference | Yes | New unique reference string for this (org, customer), max 100 chars. | |
| start_date | No | Updated start date (YYYY-MM-DD), or omit to clear. | |
| description | No | Updated description (max 500 chars). | |
| total_hours | No | Updated contracted hours cap (must be > 0, or omit/null to clear). | |
| total_amount | No | Updated contracted amount cap (must be > 0, or omit/null to clear). | |
| frame_order_id | Yes | Id of the frame order to update. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It states it updates fields and restricts to Open orders, but does not mention idempotency, auth requirements, or any side effects beyond the update. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence. Every word earns its place: it names the action, target, fields, and conditional constraint. No unnecessary 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?
The tool has 10 parameters and no output schema. The description is brief and does not explain return values, effects on related entities, or how idempotency works (though schema mentions it). For a complex update tool, more context would be helpful, but the description is minimally 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%, so baseline is 3. The description adds a high-level grouping of editable fields but does not provide significant new meaning beyond the schema's parameter descriptions. No parameter values or constraints are explained beyond what is 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 an Open frame order's editable fields and lists specific field categories (reference, description, caps, dates, currency, notes). It also distinguishes from closed frame orders, and sibling tools include close_frame_order, which is mutually exclusive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 'Closed frame orders cannot be edited; use this only for Open frame orders.' This provides clear when-to-use and when-not-to-use guidance. It does not name alternative sibling tools for creating or closing, but the constraint is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_holiday_profileAInspect
Update an existing holiday profile in your organization (name, holiday list, default-for-countries, active flag, or notes). The organization is fixed by your context. A profile's year cannot be changed. Only the fields you supply are changed; supplying holidays REPLACES the profile's holiday list. Holiday dates must fall within the profile's year.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New profile name. | |
| notes | No | Optional free-text notes. | |
| holidays | No | A JSON array (as a string) that REPLACES the profile's holidays, each: {"date":"YYYY-MM-DD","name":"...","full_day_off":true|false,"window_start":"HH:mm","window_end":"HH:mm"}. Dates must be within the profile's year. | |
| is_active | No | Whether the profile is active. | |
| profile_id | Yes | Id of the holiday profile to update (required). Must belong to your organization. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| default_for_countries | No | Optional comma-separated ISO-2 country codes this profile is the default for, e.g. "US,CA". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Clearly explains that holidays field replaces the entire list, date constraints, and idempotency_key behavior. Discloses that only supplied fields are changed, implying partial update. Minor omission: no mention of authorization or 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?
Four sentences front-loaded with purpose, no redundant text. Efficiently conveys essential information in a structured 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?
Given no output schema, the description covers core behavior and constraints comprehensively. Missing return value specification but acceptable for an update tool. All 7 parameters are documented with useful 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 descriptions for all 7 parameters. The description adds value beyond schema by explaining holidays replacement, date constraints within profile's year, idempotency_key retry behavior, and default_for_countries comma-separated 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?
Clearly states 'Update an existing holiday profile' and enumerates the updatable fields (name, holiday list, default-for-countries, active flag, notes). Differentiates from sibling create_holiday_profile and delete_holiday_profile by specifying 'update' and 'existing'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 contextual constraints like 'organization is fixed by your context' and 'profile's year cannot be changed'. Warns about holidays replacement behavior. However, does not explicitly state when to use this tool over create or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_org_settingsAInspect
Update core settings for your organization: name, country, default_time_zone, base_currency, first_day_of_month (1-28), auto_close_month_after_days, and the budget alert thresholds (budget_warning_threshold_percent must be less than budget_critical_threshold_percent). The organization is fixed by your context - never pass an organization id. Only the fields you provide are changed; everything else is left as-is.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Organization display name. | |
| country | No | Organization country. | |
| base_currency | No | Base ISO 4217 currency code (e.g. USD, EUR). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| default_time_zone | No | Default IANA/Windows time zone id (e.g. America/New_York). | |
| first_day_of_month | No | Day the billing month starts (1-28). | |
| auto_close_month_after_days | No | Auto-close a month this many days after it ends (0 = never). | |
| budget_warning_threshold_percent | No | Utilization % at which a project is flagged At-Risk (must be less than the critical threshold). | |
| budget_critical_threshold_percent | No | Utilization % at which a project is flagged Over-Budget (must be greater than the warning threshold). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions idempotency and constraints (e.g., budget thresholds must be ordered), but does not describe return values, potential side effects, or authentication needs. With zero annotations, some behavioral gaps remain.
Agents need to know what a tool does to the 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 that front-load the purpose and then list fields and constraints. No unnecessary words; every sentence earns its place by providing essential 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 complexity (9 parameters, no output schema, no annotations), the description covers core functionality, partial usage guidance, and parameter constraints. It lacks details on return format or error scenarios, but is largely self-contained for a mutation 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 covers all 9 parameters with descriptions (100% coverage). The description adds value by clarifying the relationship between budget thresholds and the valid range for first_day_of_month, which goes beyond the schema's basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update core settings for your organization' and enumerates the specific fields (name, country, default_time_zone, etc.), leaving no ambiguity about the tool's function. It distinguishes itself from siblings like set_budget_thresholds by offering a comprehensive update 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?
Provides explicit guidance: organization is fixed by context (never pass ID) and only provided fields are changed. However, it does not compare with alternatives like set_budget_thresholds for budget-only updates, which could improve when-to-use clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectAInspect
Update an existing billing project in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the project, update its description, change its status, toggle which billing types are allowed (TM/Fix/OVH), and set per-type hour limits. Discover ids with find_billing_work - never ask the user for an id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New project name. | |
| status | No | Project status. One of: Active, OnHold, Completed, Cancelled. | |
| project_id | Yes | Id of the project to update (required). Must be a project in your organization. | |
| description | No | Project description (max 500 characters). | |
| billing_types | No | Comma-separated list of billing types to allow on this project. One or more of: TM, Fix, OVH. Replaces the entire set — include all types you want to keep. | |
| tm_hour_limit | No | T&M (Time & Materials) hour limit for this project (0 = unlimited). | |
| fix_hour_limit | No | Fixed-price hour limit for this project (0 = unlimited). | |
| ovh_hour_limit | No | Overhead hour limit for this project (0 = unlimited). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must stand alone. It discloses PATCH behavior, billing_types replacement, and idempotency_key retry behavior. Missing details like permission requirements or side effects, but adequate for an update 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?
Two succinct sentences plus a third for guidance on IDs. No fluff, well-structured, and 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 9-parameter tool with no output schema, the description covers PATCH behavior, billing_types nuance, idempotency, and ID discovery. It lacks some validation constraints but 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%, so baseline is 3. The description lists the editable fields but adds minimal new meaning beyond the schema. The billing_types replacement note is already in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing billing project, with PATCH semantics, and distinguishes itself from creation or deletion tools. It also instructs to use find_billing_work to get IDs, avoiding confusion with other 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 explicitly says only provided fields are changed (PATCH semantics) and advises to discover IDs with find_billing_work. It does not explicitly mention when not to use it (e.g., for creation), but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scheduled_reportAInspect
Update an existing scheduled report definition. Only the fields you provide are changed; unspecified fields keep their current values.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the scheduled report to update. | |
| name | No | New name (optional). | |
| format | No | New format: pdf or csv (optional). | |
| cadence | No | New cadence: Daily, Weekly, or Monthly (optional). | |
| is_active | No | Enable (true) or disable (false) the schedule (optional). | |
| recipients | No | New comma-separated recipient emails (optional). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the partial update behavior but omits details on error handling, permissions, or idempotency implications. The mention of idempotency_key in schema adds some transparency, but the description itself is brief.
Agents need to know what a tool does to the 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 core action, no unnecessary words. 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 7 parameters and no output schema, the description explains the update behavior but does not mention return value or error states. It is sufficient for basic understanding but lacks completeness for an agent to anticipate outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that unspecified fields retain their current values, which clarifies the partial update semantics beyond individual 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 'Update an existing scheduled report definition' with a specific verb and resource, and highlights the partial update behavior ('Only the fields you provide are changed'). This distinguishes it from siblings like create_scheduled_report or cancel_scheduled_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 (for updating existing reports) but does not provide explicit guidance on when not to use or alternatives. It lacks context for prerequisites or exclusions, making it minimally adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_subtaskAInspect
Update an existing subtask in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the subtask, update its description, change its status, billing type, and set an hour limit. Discover ids with find_billing_work - never ask the user for an id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New subtask name. | |
| status | No | Subtask status. One of: Active, Inactive, Completed. | |
| hour_limit | No | Hour limit for this subtask (0 = unlimited). Validated against the parent task's limit for the subtask's billing type. | |
| subtask_id | Yes | Id of the subtask to update (required). Must be a subtask in your organization. | |
| description | No | Subtask description. | |
| billing_type | No | Billing type for this subtask. One of: TM, Fix, OVH. Must be allowed by the parent task. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses PATCH semantics and the id discovery hint, but lacks details on side effects, required authentication, rate limits, or error handling. The schema covers validation (e.g., hour_limit against parent task), but the description does not reiterate this.
Agents need to know what a tool does to the 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 fluff. The first sentence states the purpose and PATCH semantics; the second lists updatable fields and provides a critical usage hint. Highly 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?
With 7 parameters, no output schema, and no annotations, the description covers the basics (purpose, partial update, id discovery) but lacks information on return values, error conditions, or more nuanced validation (e.g., billing_type must be allowed by parent task). Adequate for basic use 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 100%, so baseline is 3. The description adds value by listing the updatable fields and giving the id discovery hint for subtask_id, which goes beyond the schema. The idempotency_key is not mentioned, but it's a standard pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 an existing subtask' and lists the specific modifiable attributes (name, description, status, billing type, hour limit). It distinguishes from sibling tools like create_subtask and delete_subtask by focusing on updates only, and mentions PATCH semantics for clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 PATCH semantics (only provided fields change) and explicitly advises using find_billing_work to discover ids instead of asking the user. However, it does not mention when not to use this tool (e.g., for moving a subtask) or compare to other update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskAInspect
Update an existing task in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the task, update its description, change its status, and set per-type hour limits. Discover ids with find_billing_work - never ask the user for an id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New task name. | |
| status | No | Task status. One of: Active, Inactive, Completed. | |
| task_id | Yes | Id of the task to update (required). Must be a task in your organization. | |
| description | No | Task description. | |
| tm_hour_limit | No | T&M (Time & Materials) hour limit for this task (0 = unlimited). | |
| fix_hour_limit | No | Fixed-price hour limit for this task (0 = unlimited). | |
| ovh_hour_limit | No | Overhead hour limit for this task (0 = unlimited). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains PATCH semantics and idempotency key, but does not detail side effects, permissions, or immediate effects of the update.
Agents need to know what a tool does to the 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, no redundant information. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main behavior and parameter usage, but lacks description of return value or side effects. Given no output schema, 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 coverage is 100% (baseline 3). Description adds context by listing updatable fields and explaining the idempotency key, providing extra meaning beyond 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 clearly states the verb ('update') and resource ('existing task'), and distinguishes from sibling tools like create_task or delete_task by emphasizing PATCH semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (updating fields) and how to obtain IDs via find_billing_work, but lacks explicit when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_time_reportAInspect
Update fields on one of your own time entries (PATCH — only the fields you supply are changed; everything else is left as-is). Supply the time_report_id plus any combination of date, start_time, hours, and text.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | New date (ISO 8601 YYYY-MM-DD). | |
| text | No | New description (max 1000 characters). | |
| hours | No | New duration in hours (> 0 and ≤ 24). | |
| start_time | No | New start time in 24-h HH:mm. | |
| time_report_id | Yes | Id of the time entry to update. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description transparently discloses the PATCH behavior (partial update, none-destructive) and the constraint that it only applies to the user's own time entries. No mention of idempotency or error states.
Agents need to know what a tool does to the 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-load the core behavior and parameters. 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 no output schema and no annotations, the description covers the tool's main purpose, input requirements, and behavioral constraints. Could mention return value, but sufficient for a simple update.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond restating parameters. It does highlight the combinable nature (any combination), but that is implied by the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation (update), resource (time entries), and scope (your own entries). It distinguishes from create/delete siblings by specifying the PATCH semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what parameters to supply and that only supplied fields change, but does not explicitly name alternative tools like bulk_update_time_reports for bulk operations or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_user_preferencesAInspect
Update your own UI preferences: default time-entry view, sub-views, theme, and time format. Only the fields you provide are changed (PATCH semantics). Applies to your account globally across all organizations. The user is fixed by your context — you can only change your own preferences.
| Name | Required | Description | Default |
|---|---|---|---|
| time_format | No | Clock format. One of: 12h, 24h. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. | |
| theme_preference | No | UI theme preference. One of: light, dark, system. | |
| default_day_sub_view | No | Default sub-view for the day view. One of: timeline, list, stats, table. | |
| default_week_sub_view | No | Default sub-view for the week view. One of: calendar, list, timeline. | |
| default_month_sub_view | No | Default sub-view for the month view. One of: calendar, list, timeline. | |
| default_time_entry_view | No | Default time-entry view. One of: day, week, month. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description discloses PATCH behavior (only provided fields changed), global application, and user context restriction, which covers key behavioral traits beyond 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?
Three concise sentences, all essential, no repetition or filler, effectively front-loaded with 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?
All necessary context provided: what can be updated, partial update behavior, scope, and user restriction. No gaps given schema covers parameter 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 100%, so baseline is 3. Description adds PATCH semantics but does not elaborate on individual parameter meanings 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 tool updates own UI preferences, listing specific fields like default time-entry view, sub-views, theme, and time format, and distinguishes it from siblings by specifying 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?
Provides explicit context: PATCH semantics, global application, and that only own preferences can be changed. No direct mention of alternatives, but clear when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_user_profileAInspect
Update a team member's organization-profile fields: first name, last name, country, timezone, and job title. Only the fields you provide are changed (PATCH semantics). Role changes are not supported here — use the dedicated role-change tool. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Updated country. | |
| timezone | No | Updated timezone (IANA or Windows id). | |
| job_title | No | Updated job title. | |
| last_name | No | Updated last name. | |
| first_name | No | Updated first name. | |
| org_user_id | Yes | Id of the OrganizationUser to update. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses PATCH semantics, privilege restriction, and context-based organization. Does not mention return value or error conditions, but covers key behavioral traits 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?
Four sentences, front-loaded with verb and resource, no fluff. Each sentence adds essential information: fields list, PATCH semantics, role exclusion, org context, privilege restriction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers critical usage context. It differentiates from siblings and explains constraints. Lacks explanation of return value or error handling, but sufficient for a straightforward update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by grouping the updatable fields and explaining PATCH behavior, reinforcing what the schema documents. However, it doesn't detail individual parameter constraints 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?
Clearly states 'Update a team member's organization-profile fields', lists specific fields (first name, last name, country, timezone, job title), and distinguishes from siblings by explicitly stating that role changes are not supported and directing to a dedicated 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 tells when not to use (for role changes) and points to the alternative (dedicated role-change tool). Also clarifies PATCH semantics, the fixed organization context, and the privilege restriction, 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.
use_favoriteAInspect
Record that a time-entry favorite was used, incrementing its use count and updating last-used timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| favorite_id | Yes | Id of the favorite to record usage for. | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the two behavioral effects (increment count and update timestamp) but does not mention error scenarios, required permissions, or the idempotency behavior of the idempotency_key. Since no annotations are provided, the description carries the full burden but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and effects 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?
With no output schema, the description should explain what the tool returns (e.g., success indicator, updated favorite). It omits this, leaving the agent without expected response format.
Complex tools with many parameters or behaviors need more documentation. Simple 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 description's param value is limited. It does not add meaningful context beyond what the schema already provides, such as the format of favorite_id or details on idempotency_key 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 clearly states the action ('Record that a time-entry favorite was used') and the effects ('incrementing its use count and updating last-used timestamp'), distinguishing it from sibling tools like create_favorite and delete_favorite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 recording a favorite usage but does not explicitly state when to use it versus alternatives, nor does it provide conditions like when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_importAInspect
Validate a bulk-import CSV without persisting anything. Returns row-level errors and a summary so you can fix the file before calling commit_import.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_content | Yes | The CSV content to validate (use the template from get_import_template). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes read-only validation (no persistence) and outputs (row-level errors and summary), but no annotations provided; lacks detail on authorization or format 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?
Single sentence covering purpose, behavior, and output; 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?
Adequately describes purpose, inputs, and outputs given simple tool; could mention template requirement explicitly but is inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema coverage; description adds value by referencing get_import_template for the correct CSV 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?
Clearly states 'validate a bulk-import CSV' with specific verb and resource, and distinguishes from sibling 'commit_import' by noting it does not persist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mentions use before calling commit_import and that it does not persist, but lacks explicit when-not-to-use or alternative tools beyond commit_import.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
void_invoiceAInspect
Void an issued invoice (reason required): releases source hours back to Approved and retains the immutable void record. IRREVERSIBLE. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Required reason for voiding (recorded in the audit trail). | |
| invoice_id | Yes | Id of the issued invoice to void. | |
| confirm_token | No | Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes. | |
| idempotency_key | No | Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses irreversibility, the two-step workflow, and the effect on source hours. Since no annotations provided, description fully covers 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?
Two sentences, front-loaded with key action, no 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?
Explains workflow and all parameters. Could mention return format but not necessary given no output schema. Context is 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?
Schema coverage is 100%, so baseline is 3. Description adds value by explaining the purpose of confirm_token and idempotency_key in the preview-commit pattern, beyond 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 'Void an issued invoice' and explains the effect (releases hours, retains void record). No sibling tool has the same 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?
Explicitly describes the two-step preview-commit pattern with confirm_token and idempotency_key. Warning about irreversibility. Does not mention alternatives but the action is unique.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_off_timeAInspect
Write off hours from an approved time report, removing them from the billable pool without invoicing (e.g. discounts or goodwill). Requires Finance role or above.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | Yes | Number of hours to write off (required, must be > 0 and ≤ remaining billable hours). | |
| reason | Yes | Reason for the write-off (required). | |
| confirm | No | Set true to perform the action. Omit or false returns a preview only — nothing is written. | |
| time_report_id | Yes | ID of the approved time report to write off hours from (required). | |
| idempotency_key | No | Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses action, role requirement, and preview behavior via confirm parameter. However, does not describe idempotency effects or return format beyond preview.
Agents need to know what a tool does to the 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 wasted words. Each sentence serves a distinct purpose: action description 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?
Covers core behavior and preview mode. Lacks details on preview return value or idempotency behavior, but acceptable for a focused write-off tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions (e.g., hours constraints, confirm logic). The description adds no new parameter info beyond overall context, meeting 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?
Description clearly states verb 'write off', resource 'approved time report', and purpose 'removing from billable pool without invoicing' with examples (discounts/goodwill). Distinguishes from siblings like delete_time_report or mark_time_invoiced.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 role requirement ('Finance role or above'). Implicit usage context (discounts/goodwill) but no explicit when-not-to-use or mention of sibling undo_write_off for reversals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!