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?
Without annotations, the description discloses key behaviors: the effect (period and time reports transition to Approved) and the preview-vs-execution mode via the confirm flag. It also mentions role restrictions, but does not discuss reversibility or potential failures. This provides solid transparency for the tool's operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the core action and effect, then provide the confirmation signal and role requirement. No redundant words or sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations and output schema, the description covers the core aspects: action, confirmation pattern, role constraint, and parameter sources. It does not detail error conditions or post-approval state transitions, but these are implicitly covered by the description's clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds meaning beyond the schema by explaining the confirm flag's preview behavior and the source for submission_period_id. The idempotency_key is described in the schema but not elaborated in the description, which is acceptable as the schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Approve' and resource 'submitted timesheet period', clearly differentiating it from sibling tools like reject_timesheet, recall_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?
The description explains when to use the tool (to approve a submitted timesheet), how to confirm the action with confirm=true, and the required role (Manager or Admin/Owner, excluding Finance). It could further clarify when not to use it in favor of alternatives like reject, but the guidelines are clear and actionable.
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 mentions fixed organization and privilege constraint but does not disclose consequences of reassignment, error states, or whether action is reversible. For a mutation tool, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: action, requirements, constraint. Front-loaded with purpose, efficient, 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?
No output schema. Description does not mention return value or success/error behavior. Lacks note on reversing assignment (sibling remove_user_from_customer exists). Adequate but could be 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?
Schema coverage is 100%. Description adds value by clarifying the difference between org_user_id and Firebase user id, and provides discovery methods for org_user_id. Idempotency key is explained in schema but not elaborated further.
Input schemas describe structure but not intent. Descriptions should explain 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 'assign' with specific resource 'organization member to a billing customer' and outcome 'so they can see that customer and all its projects'. Distinguishes from sibling tool 'assign_user_to_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?
Specifies required parameters and how to discover the org_user_id using get_project_team or get_employee_timesheet. States organization is fixed by context and warns about privilege restrictions (cannot target more privileged user). Lacks explicit alternative for 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.
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 the full burden. It discloses the effect (member sees project and logs time) and mentions idempotency_key for retry safety. It also notes the organization is fixed by context. Lacks details on permissions or reversibility, but sufficient for a straightforward assignment.
Agents need to know what a tool does to the 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: purpose first, then parameter guidance. 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?
Given no output schema or annotations, the description covers the main action, parameter selection, and idempotency. It does not describe return values or error handling, but for a simple assignment tool, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds significant value: it clarifies that email is preferred over org_user_id, directs to use find_billing_work for project_id, and explains idempotency_key behavior. This goes beyond the schema's 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 assigns a member to a project, specifying the outcome ('so they can see it and log time against its tasks'). The verb 'assign' and resource 'member to project' are specific and distinguish it from siblings like 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 provides explicit guidance on when to use (to give project access and time logging ability), how to identify members (email preferred or org_user_id), and how to get the project_id (via find_billing_work, never ask user). It implies when not to use (e.g., if project_id unknown) but does not explicitly state exclusions.
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?
Without annotations, the description carries the full burden of behavioral disclosure. It reveals that entries are always attributed to the caller, returns per-item results with partial failures, and specifies constraints like max 50 entries and default start_time. It covers idempotency via the key parameter, though the key's details are in schema. Missing concurrency info but adequate for batch create.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, what to supply, and behavioral notes (attribution, partial failures, max). Front-loaded and 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 all key aspects: purpose, parameters, batch behavior, attribution, idempotency key reference, and constraints. Sufficient for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining defaults for 'start_time' (09:00), mentioning the max 50 entries, and describing partial failure behavior. This goes beyond just repeating 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 'Create multiple time entries in one call', specifying the verb (create), resource (time entries), and batching aspect. It distinguishes from sibling 'create_time_report' (single entry) and 'bulk_update_time_reports' (update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use this tool: for creating multiple entries efficiently in one call. It provides context like maximum batch size (50 entries) and partial failure behavior. However, it does not explicitly contrast with alternatives like 'create_time_report' for single entries.
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 rates are not echoed back and that the adjustment is effective from a date, but does not mention idempotency behavior (despite idempotency_key), whether adjustments are additive or overriding, or any authorization requirements. With no annotations, the description carries full burden but misses several important 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 with clear front-loading of purpose and constraints. No redundancy or fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bulk update tool with no output schema, the description covers main action, parameters, and key constraints. Lacks details on return values (e.g., confirmation or status) and any asynchronous behavior, but is largely complete for selection purposes.
Complex tools with many parameters or behaviors need more documentation. Simple 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 mutual exclusivity of fixed_amount and adjustment_percentage, and reinforcing that organization id is never passed. Adds context 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?
Clearly states it applies an organization-wide adjustment to every member's hourly cost rate with a specific verb and resource. Distinct from sibling tools like set_user_cost_rate which operates on individual users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 supply EITHER adjustment_percentage OR fixed_amount, not both, and notes that organization is fixed by context so no id should be passed. 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.
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 carries full burden. It discloses that partial failures are reported per-id rather than aborting, and implies a write operation. It could mention idempotency behavior or permissions but still adds 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?
Three concise sentences: first states the main action, second lists required inputs with constraints, third explains failure handling. No unnecessary words, 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?
Given no output schema, the description covers the key behavioral detail (per-id results, partial failures). It could mention the return format or idempotency behavior for completeness, but it is adequate for a simple bulk 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%, so baseline is 3. The description repeats the purpose of 'ids' and 'text' but adds little beyond schema, such as the ownership constraint for ids. It does not elaborate on 'idempotency_key' behavior. No significant added value for 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?
Clearly states the action 'apply a common text description update to multiple of your own time entries'. The verb 'apply' and resource 'time entries' are specific. It distinguishes from siblings like 'update_time_report' (single) and 'bulk_create_time_reports' (create vs update) by highlighting the bulk update nature and ownership scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use (batch updating own time entries with same description) and the required inputs. However, it does not explicitly state when not to use or suggest alternatives like single-update tools, which is acceptable given sibling names but not excellent.
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?
No annotations are provided, so the description fully discloses behavior. It explains that the action is reversible (email can be re-invited), and describes the preview/confirm pattern with idempotency. This provides clear transparency beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and contains no unnecessary information. Every sentence is valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, behavior (preview/confirm), and idempotency. Without an output schema, it does not describe return values, but that is acceptable. It could mention edge cases (e.g., cancelling an already cancelled invite), but overall it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context about the preview return and idempotency, which complements the schema but does not significantly exceed what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 a pending invitation, making the invite link invalid. It uses specific verb 'cancel' and resource 'invite', and distinguishes from siblings like invite_user and resend_invite by focusing on cancellation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 cancellation action and notes that the email can be re-invited later, providing context. It also explains the preview/confirm mechanism. However, it does not explicitly state when to use this tool versus alternatives like resend_invite, though it is implied.
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?
Discloses the destructive nature ('permanently delete') and the confirm requirement. No annotations are provided, so the description carries full burden; it could mention irreversibility or side effects but does not.
Agents need to know what a tool does to the 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 superfluous words. The first sentence states the action and resource, the second adds the critical requirement. 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?
Covers the purpose and the confirm requirement but lacks context on prerequisites (e.g., ownership, permissions), error behavior, and response format. With no output schema, some guidance on the 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 coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema for 'id' or 'idempotency_key', and for 'confirm' it largely repeats the schema description. No additional parameter insight is offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'permanently delete' and the resource 'scheduled report definition'. Distinguishes from sibling tools like create_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?
Provides a key usage guideline: requires confirm=true to proceed. However, it does not explicitly mention when not to use this tool or compare to other deletion tools, though the name makes the scope clear.
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 provided, so the description carries full burden. It discloses that the timer is discarded, no time entry is created, and elapsed time is lost. This adds behavioral context beyond the input 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 extremely concise with two sentences, front-loading the purpose and essential behavioral details. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no required parameters and no output schema, the description fully covers the tool's behavior and outcome. The optional parameter is documented in the schema, so 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 description coverage is 100% for the single optional parameter. The description does not add new meaning beyond the schema; it states 'No arguments needed' which is slightly misleading given the optional idempotency_key, but not incorrect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 (cancel), the resource (running timer), and the outcome (no time entry, elapsed time lost). It distinguishes from siblings like stop_timer which presumably creates a time 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?
The description implies usage when you want to discard a timer without logging time. Though it doesn't explicitly mention when not to use or name alternatives, the context with sibling tools like stop_timer provides differentiation.
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?
Discloses two-step commit, idempotency key behavior, role assignment restrictions, and preview-commit semantics. No annotations exist, so description carries all disclosure burden; it does 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?
Three concise sentences, front-loaded with main action, no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers two-step flow, constraints, and parameter details from schema. Lacks error behavior or timeout info, but overall sufficient for a role-change tool with moderate 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 3. Description adds context about constraints but does not add new parameter-level meaning beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it changes a member's role, distinguishes from sibling tools like invite_user or remove_user, and mentions the two-step commit process and restrictions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instructions for the preview-commit pattern and constraints (cannot assign Owner, cannot escalate beyond own role). Lacks explicit comparison to sibling tools but gives sufficient guidance for usage.
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?
No annotations are provided, so the description carries full burden. It mentions the return value but does not disclose whether the operation is read-only, requires authentication, or has side effects. This is insufficient for a check operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no redundant words, and front-loaded with the action and 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?
No output schema, so the description should elaborate on return format. It only says 'whether' and 'a message' without specifics (e.g., boolean, string structure). The description is adequate for a simple check but could be more complete regarding error cases or exact response fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with descriptions for both parameters (sub_task_id and additional_hours) that are clear. The tool description adds no extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check' against the resource 'budget limits' of a subtask and mentions the return value ('whether the budget is exceeded and a message'). It is distinct from sibling tools like get_budget_alerts or get_budget_health, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (checking before logging hours) but does not explicitly state when to use it versus alternatives like get_budget_alerts or set_budget_thresholds. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
With no annotations, the description discloses key behaviors: preview mode unless confirm=true, and that closing is not directly reversible (remains in Closed state). This adds value beyond the schema, though it could specify that the frame order must be in Open state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose (action, preview behavior, irreversibility). Front-loaded with the primary action, no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, preview/confirm behavior, and irreversibility, but lacks details on prerequisites (e.g., order must be Open), handling of existing invoices, and idempotency. Without an output schema, more context on the preview response would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clarifies the confirm parameter's role (preview vs. actual action), but adds no extra meaning for frame_order_id or idempotency_key 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 'Close an Open frame order' with the specific consequence 'so no new invoices may link to it'. It distinguishes from siblings like delete_frame_order (permanent removal) and update_frame_order by specifying a dedicated state transition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (e.g., delete_frame_order, update_frame_order). The description implies usage for stopping new invoice linking but does not provide exclusion criteria or trade-offs.
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 key behaviors: preview mode (no token) vs commit mode (with token and idempotency key), idempotency semantics, and reversibility. No annotations are provided, so description carries full burden and does so well, though could mention error 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?
Three sentences with no redundant information. First sentence states purpose, second and third explain procedure and reversibility. 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?
Covers main aspects: purpose, procedure, and reversibility. Lacks mention of required permissions or error handling, but given the tool's moderate complexity and lack of output schema, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions, but the description adds value by explaining the role of confirm_token and idempotency_key in the two-step process, and the preview/commit distinction.
Input schemas describe structure but not intent. Descriptions should explain 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 action (close a billing month) and its effect (no further time can be logged or edited). Distinguishes from sibling 'reopen_month' by mentioning reversibility only through reopening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes the two-step procedure (preview then commit) but does not explicitly state when to use the tool (e.g., after month finalization) or when not to use it. Lacks comparison to alternatives beyond mentioning reopen_month.
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?
No annotations are provided, so the description must disclose behavioral traits. It only mentions creation of hierarchy but omits important details like destructiveness (e.g., whether existing entries are overwritten), authentication needs, 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?
The description is two sentences, very concise, and front-loaded with the main action and a key prerequisite. No 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 (committing a multi-entity import) and no output schema, the description lacks details on return values, idempotency (though hinted by parameter), error handling, and required permissions. 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%, so baseline is 3. The description adds context for csv_content (must pass validate_import) but repeats the schema's description. It does not add significant 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 action (commit a bulk-import CSV) and the resource (creating work hierarchy). It also mentions a prerequisite sibling tool (validate_import), which helps distinguish from similar 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?
Explicitly advises calling validate_import first, which gives clear context on when to use this tool vs. alternative. However, it does not mention other conditions 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.
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?
No annotations are provided, so the description must carry the burden. It discloses that entries are created as Draft, the source range cannot exceed 31 days, and the weekday offset preservation logic. This is sufficient for a simple copy operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, efficiently conveying the purpose, behavioral details, and parameter usage without unnecessary words. It is front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While there is no output schema, the description covers the input constraints and behavioral details adequately. It does not explain the return value, but for a copy operation, the outcome is implied (creation of draft entries). Could be improved by noting that existing entries in the target range are not overwritten.
Complex tools with many parameters or behaviors need more documentation. 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 input schema (100% coverage), and the description adds extra context about the mapping from source_start_date to target_start_date and the weekday offset, which goes beyond the schema's type/format 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 specifies a clear action: copying time entries from a source date range to a target date range, with the added detail of preserving weekday offset. This distinguishes it from siblings 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?
The description explains the use case (e.g., 'copy last week to this week') and constraints (31-day max), but does not explicitly state 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.
create_credit_noteAInspect
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?
With no annotations provided, the description carries the full burden. It discloses the role requirement, which is useful. However, it does not mention that setting 'confirm' to false returns a preview, the idempotency behavior, or any side effects on the invoice status. These are left to the schema, but the description could provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences, no superfluous words, front-loaded with the purpose and effect. 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 complexity (5 parameters, no output schema, no annotations), the description is minimal. It covers the core action and role requirement but does not explain the preview mode, idempotency, or what happens to the invoice after the note is created. The schema fills some gaps, but the description could be more complete for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, so the baseline is 3. The description does not add any parameter-specific information beyond what the schema already provides (e.g., constraints on credit_amount, purpose of confirm flag). No extra guidance is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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), the resource (credit note), the target (against an existing invoice), and the effect (reducing the amount owed). This distinguishes 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 provides a clear context for when to use the tool: when reducing the amount owed on an invoice. It also specifies a role requirement (Finance role or above). However, it does not explicitly contrast with alternatives like voiding or writing off, which would help the agent choose among siblings.
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 the tool creates a customer (implies mutation) but does not disclose any behavioral traits such as required permissions, idempotency behavior, rate limits, or what happens on success/failure. The note about not passing organization ID adds some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the key action and context. It is concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential purpose but lacks information about return values, error handling, or behavioral context beyond creation. Given the absence of an output schema and annotations, the description could be more complete, but it 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 description coverage is 100%, so the schema fully documents all parameters. The description adds no extra meaning beyond the schema, except for the note about not passing organization ID (which is not a parameter). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create'), the resource ('billing customer'), and the scope ('in your organization'). It distinguishes from sibling tools like update_customer, delete_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?
The description provides a clear usage note: 'The organization is fixed by your context - never pass an organization id.' This guides proper usage but does not explicitly state when to use this tool versus alternatives, though the context makes it sufficiently clear.
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?
No annotations provided, but description discloses key behaviors: organization is fixed, ListOfValues requires options, mandatory blocks entity creation. Does not mention idempotency behavior or rate limits, but covers main 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?
Three concise sentences front-load the purpose, then add essential details. 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?
With 7 parameters and no output schema, the description covers main aspects: entity, field_id, title, type, mandatory, list_of_values. Idempotency key is in schema but not description, but overall sufficient for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds value by explaining context (fixed organization), clarifying ListOfValues requirement, and describing mandatory field impact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a custom field on billing entity types, lists the entities and data types, and distinguishes from sibling tools like update_custom_field and delete_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?
Provides guidance on usage: do not pass organization id, ListOfValues requires options, mandatory blocks creation. Could explicitly mention alternative tools for updating/deleting, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
No annotations are provided, so the description carries the full burden. It states the tool saves and returns the created favorite, but fails to mention idempotency (despite an idempotency_key parameter), side effects, permissions, or any other 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 the main action. Very concise, but could be slightly more informative without adding much length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should explain what the returned favorite contains. It only says 'Returns the created favorite' without details. Also lacks context on prerequisites or error conditions for a tool with 7 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter already described. The description adds minimal value by summarizing the favorite as a 'time-entry combination', but does not elaborate on any 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 action ('Save') and the object ('a time-entry combination as a favorite'), with the purpose 'for quick reuse'. This distinguishes it from sibling tools like 'delete_favorite', 'use_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?
No explicit guidance on when to use this tool vs alternatives like 'use_favorite' or other creation tools. The description implies usage for saving favorites, but does not provide conditions or exclusions.
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?
Discloses that the frame order can be deleted while still Open, but does not cover other behavioral aspects such as whether it returns the created order ID or what happens upon duplicate idempotency keys. With no annotations, more detail on side effects or state would improve 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 sentences: first states purpose, second explains concept, third notes reversibility. No fluff, 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?
Given 10 parameters, no output schema, and no annotations, the description explains what the tool does and the core concept, but does not mention the return value or any post-creation behavior. A complete description would include what the tool returns (e.g., the created order's ID).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 10 parameters with descriptions (100% coverage), so baseline is 3. The tool description does not add additional meaning beyond what is in the schema, so no increment.
Input schemas describe structure but not intent. Descriptions should explain 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 creates a new Open frame order, defines it as a blanket PO/commercial envelope, and explains its function of tracking a cap that invoices draw down against. Distinguishes from sibling tools like update_frame_order and close_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?
Implicitly describes when to use (when needing to create a frame order), but does not explicitly mention when not to use or suggest alternatives like update_frame_order. The sibling list is long, but no cross-referencing.
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, so description carries full burden. Discloses save behavior, data source constraints, and confirmation requirement. Lacks mention of error handling or permissions but adequately covers key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and condition. Every sentence adds critical information; 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?
Tool has 7 parameters and no output schema. Description explains key constraints and workflow but does not mention return value or error scenarios. Adequate 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 baseline 3. Description adds contextual constraints (e.g., full_day_off behavior, date source) and workflow guidance, exceeding 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 states verb 'create' and resource 'national-holiday profile' with specificity. Distinguishes from siblings by mentioning 'suggest_holiday_profile' and requiring review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (after user confirmation), when not to use (never to preview, never invent dates), and references sibling tool for suggestions.
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 description must cover behavior. Describes idempotency key behavior and create_general_activity default. Lacks details on permissions, destruction, or side effects beyond what is 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?
Two concise sentences plus a note. No wasted words, essential information 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 purpose, usage, and key parameter behaviors. Missing return value description (no output schema). Also lacks permissions or error conditions. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond 100% schema coverage: explains how to find customer_id, clarifies default for create_general_activity, and notes idempotency_key replay behavior. This adds practical guidance not 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?
Clearly states the action ('create') and resource ('billing project') with context ('under one of your customers'). Distinguishes from sibling tools like create_task, create_time_report, 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?
Provides specific guidance: fix organization context, discover customer_id via find_billing_work, never ask user for id. Does not explicitly state when not to use, but offers clear context.
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 carries the burden. It discloses that the report is generated and emailed, but lacks details on idempotency, error handling, permissions, or side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no redundant words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the basic purpose but omits expected return information (e.g., created report ID) and additional behavioral details needed for full 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 the description adds little beyond what the schema provides. It mentions 'configured cadence' but does not elaborate on parameter values or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new scheduled report definition, specifies the action (generate and email on cadence), and distinguishes itself from siblings like update_scheduled_report and 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 guidance on when to use or avoid this tool. It does not mention prerequisites, alternatives, or conditions for use, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
With no annotations, the description must disclose behavior. It mentions the subtask inherits billing type and that time entries are logged against it, which is helpful. However, it does not discuss return values, error behavior, or permission requirements, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the purpose and then adding context. It is efficient but could be slightly improved with bullet points for clarity. No redundant information, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not mention the return value or idempotency behavior, both relevant for a creation tool. Given no output schema, the description should cover what the agent can expect. It provides key facts but is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a description. The description adds value by instructing how to obtain the task_id via find_billing_work, which goes beyond the schema. No other parameters are elaborated, but the schema is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 subtask under a task,' specifying the verb and resource. It distinguishes from siblings like 'create_task' and explains that subtasks are required for time entries, which clarifies their role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs that 'every task needs at least one' subtask for logging time, providing a clear usage context. It also advises to use find_billing_work for IDs, but does not explicitly mention when not to use this tool or list alternatives.
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?
Discloses inheritance of billing types, but does not mention idempotency (despite idempotency_key parameter) or return behavior. No annotations provided, so description carries burden but could be more 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 relevant sentences with no waste. Front-loaded with purpose, followed by important inheritance and discovery hints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 return value information and does not explain idempotency_key behavior. Given 5 parameters and no output schema, the description is helpful but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by explaining the parent project context and directing users to 'find_billing_work' for project_id, which aids understanding 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 verb ('create') and resource ('task under a project'), and distinguishes it from sibling tools like 'create_project' and 'create_subtask' by noting that tasks group subtasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (creating a task under a project) and how to discover IDs with 'find_billing_work'. Does not explicitly exclude alternatives but 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_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?
No annotations provided, so description carries full burden. It discloses that the entry is always attributed to the current user and that start_time defaults to 09:00. However, it omits details about idempotency, return values, or error handling, which are important for a create 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 sentences with no unnecessary words. The first sentence immediately conveys the main action, and the second provides essential parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with no output schema, the description covers the key constraints and required parameters. It is adequate for an agent to understand the basic operation, though it could mention return values or error 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 description coverage is 100%, baseline 3. Description adds value by stating the default start_time (09:00) and listing the required parameters, though it does not elaborate on the optional text or idempotency_key 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 'Create a new time entry on a subtask for the current user', specifying verb, resource, and scope. It distinguishes from siblings like bulk_create_time_reports and start_timer by focusing on a single entry for the current 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?
Mentions that entries cannot be created for another user, providing context for when not to use it. However, it does not explicitly compare with similar tools like log_time or start_timer, leaving the agent to infer the appropriate use case.
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?
With no annotations, the description fully discloses the destructive, irreversible nature, immediate client access loss, preview requirement, confirm token expiration (10 min), and idempotency guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each earning its place. First sentence states the irreversible action, second details the commit process. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the two-step process, token expiration, and idempotency. Could briefly mention the preview return format, but the description is sufficient for correct invocation given the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds crucial context beyond the parameter descriptions: explains the preview-commit workflow, token purpose, expiration, and idempotency behavior, greatly aiding agent invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool permanently revokes an Integration API key, a specific verb-resource combination. It distinguishes from sibling deletion tools by focusing on API keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 process and that the action is irreversible. While it doesn't mention when not to use, the context is clear and there are no directly competing siblings.
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?
With no annotations, the description fully discloses the soft-delete nature, hierarchy deletion, recycle bin, admin restore capability, and the preview-versus-confirm behavior. This provides good transparency for a write 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 sentences, no fluff. Concisely conveys the key behavioral aspects and the confirm toggle without extra words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (3 params, no output schema), the description adequately covers behavior, side effects, and the preview mechanism. It could slightly improve by hinting at the preview's content, but it's 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?
All parameters have complete schema descriptions (100% coverage). The description adds no additional semantics beyond noting the preview behavior, which is already in the confirm 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 tool performs a soft-delete of a billing customer and its entire hierarchy, which distinguishes it from other delete tools (e.g., permanent_delete_entity). The verb 'soft-delete' and resource specification are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies this tool is for safe, reversible deletion, it does not explicitly guide when to use this over alternatives like permanent_delete_entity. No when-not or context for admin-only restore is given.
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?
Discloses destructive nature, preview-on-delete behavior, rejection condition, and admin requirement. No annotations provided, so description fully bears the transparency burden. Idempotency key behavior is not mentioned, but schema covers it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main action, no fluff. 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?
Covers return behavior (preview vs. actual delete) and mandatory field rejection. No output schema, but preview mention suffices. Could mention idempotency_key usage for completeness. Overall adequate 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%, baseline 3. Description adds context for confirm parameter but does not elaborate on custom_field_id or idempotency_key beyond what schema provides. Adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain 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 deletes a custom-field definition from the organization, distinguishing it from create_custom_field, update_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?
Provides context for when deletion is rejected (mandatory field with values) and preview behavior with confirm parameter. Mentions admin role requirement. Does not explicitly compare to sibling tools, but the description is sufficient for usage guidance.
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?
Discloses key behavioral traits: permanent deletion, precondition (must be draft), and the preview vs. execution mode controlled by 'confirm' parameter. Transparent about the destructive nature, which is critical for a deletion 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, each essential. The first sentence states purpose, the second states important constraint, the third explains the key parameter behavior. No redundancy, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essential aspects: what it does, constraints, and behavior of the key parameter. Missing details like error conditions (e.g., what if invoice is not draft or already deleted) and the structure of the preview response. However, for a deletion tool, this is fairly complete. Could benefit from mentioning error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers all parameters with descriptions. The description adds value by explaining the preview/confirm behavior tied to the 'confirm' parameter, which is not fully captured in the schema description alone. Improves the agent's understanding of how to use the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states the action (delete) and resource (draft invoice), and distinguishes from issued invoices. The verb 'delete' and qualifier 'draft' are specific and differentiate from related sibling tools like 'void_invoice' or 'issue_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?
Clearly states that only draft invoices can be deleted and that issued invoices are permanent, guiding the agent when to use this tool. Does not explicitly name alternatives for issued invoices (e.g., 'void_invoice'), but the context of sibling tools provides that hint.
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?
No annotations are present, so the description carries full burden. It mentions 'Requires confirm=true to proceed' but does not elaborate on the preview behavior when confirm is false, nor does it explain side effects like irreversibility or authorization needs. The schema description for confirm is more informative than the tool 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 very concise with two sentences. It front-loads the action and requirement. However, it could be slightly more informative without losing conciseness, such as mentioning the preview 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?
For a tool with 3 parameters and no output schema, the description is incomplete. It does not describe the return value (e.g., success/error messages) or the behavior of the idempotency_key. The preview behavior is implied but not explicitly stated in the description, relying on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description repeats the requirement for confirm but does not add meaning beyond the schema for favorite_id or idempotency_key. It neither clarifies parameter values nor provides usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('a saved time-entry favorite'), making the tool's purpose unambiguous. It distinguishes itself from sibling tools like 'create_favorite' or 'use_favorite' by specifying the delete operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like other delete tools or when to use it at all. It only mentions a requirement (confirm=true) but no context about prerequisites or competitive tools.
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?
With no annotations, the description carries full burden. It discloses soft-delete, restorability by Admin, blocking conditions, and preview/confirm behavior. Missing details on auth requirements or error states, but covers the key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with main action, then condition, then behavior. No filler words. Every sentence adds critical 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?
No output schema, so description should explain return values. It mentions 'Returns a preview' but doesn't specify what the preview contains or the success response format. Also lacks error scenario handling (e.g., order not found). The blocking condition is well-stated, but overall completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by explaining the confirm parameter's preview mode and the idempotency behavior. No extra info on frame_order_id beyond schema, but the preview context is useful.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('Soft-delete an Open frame order'), specifies it's restorable by an Admin, and differentiates from other deletion tools like permanent_delete_entity by emphasizing it's a soft-delete. Also distinguishes from close_frame_order by noting it's a 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?
Explicitly states when the tool is blocked (if Issued/Sent/Paid invoices are linked) and provides prerequisite actions (void or unlink them). Also explains preview behavior vs confirmation. Lacks explicit mention of when to use this over permanent_delete_entity or restore_entity, but the soft-delete and admin-restorable context implies it.
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 carries the full burden. It reveals the preview behavior (returns preview unless confirm=true) and the admin role, adding significant 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?
Three sentences that are direct and informative, with no wasted words. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main behavioral aspects (preview, admin role) for a delete operation without output schema. Minor gaps on reversibility but sufficient for the 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%, but the description adds value by explaining the confirm parameter's preview action and the idempotency_key's purpose, going 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 a specific action ('Delete') and resource ('national-holiday profile'), distinguishing it from siblings like create_holiday_profile or update_holiday_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the effect on time calculations and mentions the admin role requirement, but doesn't explicitly discuss 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.
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?
Given no annotations, the description fully discloses behavioral traits: soft-delete, member lockout, hiding the org, restoration by admin, retention window, preview step, token expiry (~10 min), and idempotency key semantics. This is comprehensive for a destructive 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?
Three concise sentences cover purpose, preview step, and commit step with parameters. No redundant information; every sentence earns its place. Very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two-step, soft-delete, role requirement, token expiry) and no output schema, the description covers all necessary aspects for correct invocation. The agent understands the workflow completely.
Complex tools with many parameters or behaviors need more documentation. Simple 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 meaning: confirm_token is from preview, idempotency_key ensures safe retries. It explains the role of each parameter in the workflow, exceeding the schema's bare 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 soft-deletes an organization, explaining the lockout and hidden state. It distinguishes from other delete tools like delete_customer and delete_project by specifying the resource and the preview-commit pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 process: first call without token to preview, then with confirm_token and idempotency_key to commit. It also notes the 'Owner role required' prerequisite. Does not explicitly mention when not to use, but the procedure is clear.
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?
Without annotations, the description fully discloses key behaviors: soft-delete, hierarchy deletion, recycle bin, admin restore, and preview mode. This provides complete transparency about the tool's 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, front-loaded with the primary action. No extraneous information; every word adds clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description hints at return values (preview vs. result), but lacks details on preview structure. Still, it covers the essential context for a delete tool, especially with sibling context showing alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple 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 beyond schema for 'confirm' (explains preview/write behavior) and 'idempotency_key' (explains retry semantics). The description for 'project_id' is similar to 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 project), and scope (entire task/subtask hierarchy). It distinguishes itself from related tools like permanent_delete_entity and restore_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?
The description explains the preview-then-confirm pattern, guiding the agent on safe usage. It implies when not to use (if permanent delete is needed), but does not explicitly name alternatives.
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, the description bears full burden. It discloses soft-delete nature, admin restoration, preview behavior, and confirm flag effect. It does not cover auth or rate limits, but for a delete tool this is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no superfluous words. Very concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, more burden falls on description. It explains the core action and preview, but does not mention the return format of preview, idempotency key behavior details, or the restore counterpart (restore_entity). Adequate but with 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 does not add new parameter info beyond what the schema's descriptions already provide (e.g., confirm behavior is identical). Thus it meets the baseline but no extra 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 it is a soft-delete operation ('Soft-delete a billing subtask into the recycle bin'), distinguishes itself from permanent deletion (via sibling 'permanent_delete_entity'), and describes the preview behavior. This provides a specific verb+resource with differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use it (soft-delete) and the preview/confirm behavior, which guides usage. It implicitly contrasts with permanent deletion via sibling tool, but does not explicitly mention alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
Despite no annotations, the description discloses the soft-delete behavior and recycle bin recovery, as well as the preview mode for safe interaction. It could be more detailed about restoration permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that efficiently conveys the core action and the key behavior (preview vs confirm). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential operation and preview behavior, but lacks details about the return value format since there is no output schema. For a delete tool, this is acceptable but slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond what the schema already provides for parameters. The preview behavior is mentioned but already covered in the confirm 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 it soft-deletes a billing task and its subtask hierarchy, distinguishing it from permanent delete or individual subtask deletion found in sibling tools 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 explains the preview behavior and the need to set confirm=true to perform the delete, guiding safe usage. However, it does not explicitly contrast with alternative delete tools or specify 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.
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 provided, so description carries full burden. It discloses destructive behavior but also mentions a preview mode for safety. Could be improved by explicitly stating irreversibility of confirm=true but is adequate.
Agents need to know what a tool does to the 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, highly concise, front-loaded with the main 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?
No output schema, but description mentions return preview. Covers permissions and preview behavior. Lacks details on preview format, but sufficient for a destructive 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 covers 100% of parameters with descriptions. The tool description repeats the confirm behavior and adds permission context but does not add new semantic details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource 'a time report entry', distinguishing it from siblings like create_time_report and update_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 who can use the tool (members vs managers/admins) and hints at when to use confirm=true. However, it lacks explicit mention of alternatives 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.
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?
Despite no annotations, the description discloses key behaviors: deletion effect, user fallback to default schedule, two-phase commit (preview vs confirm), and admin role requirement. It could mention reversibility or constraints, but overall it is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: purpose, effect, and preview/role info. Information is front-loaded 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?
Given 3 parameters, full schema coverage, no output schema, and moderate complexity, the description covers purpose, side effects, preview/confirm, and required role. It could mention constraints like protecting default schedules, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. The description adds meaning by explaining the effect on users (fallback) and clarifying that confirm=true performs the action, enriching the confirm parameter's semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Delete a named organization work schedule profile,' using a specific verb and resource. It distinguishes itself from sibling tools like 'manage_user_work_schedule' and other delete operations by clearly targeting work schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage guidance by explaining the preview/confirm mechanism and admin role requirement. It does not explicitly mention when not to use the tool or alternatives, but the context is sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
Despite no annotations, the description effectively discloses key behaviors: the action is reversible, requires a confirm flag to actually write, returns a preview, and supports an optional reason for auditing. This goes beyond the schema to inform 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?
Two sentences deliver all essential information without redundancy. Every word serves a purpose, making it highly concise yet complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 params, no output schema), the description fully covers the behavior, parameter implications, and safety aspects (preview, reversibility). It leaves no significant gaps for an agent to misinterpret.
Complex tools with many parameters or behaviors need more documentation. 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 all 4 parameters with descriptions. The tool description adds value by explaining how 'confirm' controls preview vs. action and that 'reason' is for audit purposes, complementing the schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Disable an organization member so they can no longer sign in or use the app.' The verb and resource are specific, and it distinguishes from related siblings like 'enable_user' and 'remove_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?
The description explains when to use: to disable a user, and notes that it is reversible via the web app. It also clarifies the preview mode vs. actual execution with 'confirm=true'. However, it does not explicitly contrast with alternatives like 'remove_user'.
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?
Discloses the write operation (re-enabling) and the privilege constraint. No annotations provided, so description carries the burden. Could mention side effects but sufficient for the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action, 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?
Simple tool, but no output schema. Description doesn't indicate return value or success/failure signaling. Adequate but could mention outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description mentions org_user_id but adds little beyond schema (which already describes it). Idempotency_key not mentioned. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 're-enable' and the resource 'organization member', distinguishing from siblings like disable_user. Also specifies the required parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (re-enable previously disabled) and when not (cannot target more privileged user). Also instructs not to pass organization id due to fixed context.
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?
No annotations provided, so description carries full burden. Discloses return format (ids and names only) and filtering behavior. Does not explicitly state it's read-only or safe, but the use case implies it. 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?
Two sentences, front-loaded with essential info, zero waste. 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?
No output schema, but description includes return info (ids and names). Explains filtering and drilling use. Lacks details on error handling or pagination, but sufficient for usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good param descriptions; the description adds 'optionally filtered by a name fragment' which aligns with the query param but doesn't add new meaning. 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?
Purpose is clear: it finds billable projects/tasks/subtasks for time tracking, distinguishing from sibling list/search tools. States specific action (find), resource (billing work), and scope (organization) with optional filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 says 'Use this to locate where to record work', providing clear usage context. Could be more specific about when not to use it, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
No annotations are provided, so the description shoulders the full burden of behavioral disclosure. It states that the tool creates a draft invoice that is editable and deletable, which is key. However, it does not describe potential side effects (e.g., whether it marks hours as invoiced), required permissions, or idempotency behavior. The behavioral transparency is adequate but could be enhanced.
Agents need to know what a tool does to the world before calling 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 totaling ~25 words. The first sentence states the core purpose with precise verb and resource ('Generate a DRAFT invoice'), and the second adds critical behavioral context (editable, deletable). Every word contributes meaning; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters (3 required) and no output schema, the description covers the primary function and output state. However, it lacks information about return values (e.g., invoice ID or status), error conditions (e.g., missing approved hours), or prerequisites (e.g., customer existence). The description is sufficient for basic understanding but incomplete for full contextual guidance without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds context that the invoice is based on 'approved billable hours', which indirectly explains the purpose of parameters like customer_id, period_start, period_end, and grouping. However, it does not elaborate on parameter semantics beyond what the schema provides. The parameter meaning is clear from the schema, so no additional value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: generating a DRAFT invoice from approved billable hours over a billing period. It specifies 'draft' to differentiate from final invoice tools like issue_invoice, and explicitly mentions the input source (approved billable hours) and the scope (billing period). This distinguishes it from sibling tools such as create_credit_note 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 that the draft is editable and deletable before issuing, which guides usage post-generation. It does not explicitly state when to use this tool versus alternatives (e.g., issue_invoice), but the context of sibling tools and the focus on 'draft' implies its purpose. The mention of editability and deletability provides clear guidance on the tool's output state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_reportBInspect
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?
No annotations are provided, so the description must fully disclose behavioral traits. It only states it retrieves a billing summary, but does not mention permissions, data scope limitations, or whether it is a read-only operation beyond what is implied.
Agents need to know what a tool does to the world before calling 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 fluff. It conveys the essential purpose efficiently, though a bit more detail on the output 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?
Without an output schema, the agent needs description hints about the return format. The description omits what the billing summary contains (e.g., charges, taxes, currency). Given the simplicity of the tool, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have schema descriptions (100% coverage). The tool description paraphrases the schema without adding new meaning, such as constraints on the date format or hints about customer_id validation. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get billing summary for a customer over a date range' clearly states the verb (get), resource (billing summary), and scope (customer, date range). Among siblings like get_hours_summary, get_unbilled_time, and get_invoice, this tool's purpose is distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_invoice or get_unbilled_time. There is no mention of prerequisites, context, or exclusions.
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 like read-only nature, potential pagination, required permissions, or response format. For a retrieval tool, such details are important for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys the core functionality without extraneous words. It is perfectly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is minimally complete. However, it lacks details about what constitutes a 'budget alert', the response structure, and how results are ordered or grouped, which could be helpful 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?
There are no parameters, so the schema coverage is 100%. The description adds value by clarifying the scope ('organization') and the condition ('over or near budget'), which is not present in the empty 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 'all budget alerts for the organization' showing projects 'over or near budget'. This specifies a unique verb-resource combination and distinguishes it 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 provides no guidance on when to use this tool versus alternatives, such as when to prefer 'get_budget_health' or 'check_budget_limits'. There is no mention of prerequisites, limitations, or complementary tools.
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 are provided, so the description must carry the full burden. It describes the return contents but does not disclose behavioral traits such as read-only nature, required permissions, or rate limits. However, as a 'get' operation, it is presumably safe, but this is not stated explicitly.
Agents need to know what a tool does to the world before calling 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 purpose ('Get overall budget health summary') and then lists the key components. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description provides a reasonable level of completeness by enumerating the main data points. However, it could mention if the result is paginated or if any authorization is required, but for a summary tool, it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description adds meaning by specifying the output fields, which is helpful for understanding what the tool returns without an output 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 returns a budget health summary with specific components (project counts by status, remaining hours, active alerts). It distinguishes itself from sibling tools like get_budget_alerts (only alerts) and get_hours_summary (only hours) by providing an overall picture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 as a starting point for budget overview, but does not explicitly state when to use it versus alternatives like check_budget_limits or get_budget_alerts. No exclusions or contextual guidance are provided.
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?
No annotations are provided, so the description must carry the full burden. It implies a read-only operation but does not disclose potential side effects, error handling, or data scope. The role requirement is a minimal 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 only two sentences, front-loading the purpose and immediately adding the role requirement. Every sentence is meaningful 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?
For a simple read tool with one parameter and no output schema, the description covers the essentials. However, it could be more complete by hinting at the structure of the history (e.g., array of rates with timestamps) or mentioning that only current organization rates are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage for the single parameter, describing it as 'Firebase UID of the user whose cost-rate history to retrieve.' The description adds no additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('cost-rate history'), and the scope ('for a specific user'). It immediately distinguishes this from write operations 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 mentions 'Requires Finance role or higher,' which provides a condition for use but does not explicitly state when to use this tool versus alternatives or when not to use it. The context of sibling tools is present but not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_infoBInspect
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 are provided, so the description carries the full burden. It states the tool 'gets' information, implying a read-only operation, but does not explicitly confirm no side effects, disclose permission requirements, or mention any limits (e.g., rate limiting, data freshness). The behavior is under-specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous words. It is front-loaded with the core purpose. However, it could be slightly more structured (e.g., bullet points for output fields) without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description partially fills the gap by mentioning 'health score' and 'portfolio.' However, it does not list all possible fields or return format, nor does it describe error conditions or pagination. For a simple get tool, it is 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?
The input schema already fully describes the single parameter 'customer_id' with 100% coverage. The description adds no additional meaning or constraints (e.g., format, examples, or expected behavior when invalid ID is given). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('customer information') and clearly indicates the scope ('including health score and portfolio'). It distinguishes this tool from sibling tools like 'list_customers' (list vs. single) and 'update_customer' (read vs. write).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to retrieve detailed info on one customer) but does not explicitly state when not to use it or mention alternative tools (e.g., 'list_customers' for overview, 'get_budget_health' for financial details). No usage context or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_metricsBInspect
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 exist, so the description must disclose behavioral traits. It only states the action and examples but omits read-only status, data source, side effects, 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 one sentence, efficiently conveying the main purpose without redundancy or 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?
While the tool is simple (one optional param), the description does not explain the return value structure or how results are presented (e.g., grouped by month, aggregation level). Some users may need more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'month'. The description adds no extra meaning beyond the schema, so it meets 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 'Get' and the resource 'organization dashboard metrics' with specific examples (utilization, revenue, active projects). It distinguishes itself from sibling tools by targeting dashboard-level aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage context is provided. There is no indication of when to use this tool versus alternatives like get_resource_utilization or get_billing_report, nor any prerequisites or limitations.
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?
With no annotations, the description carries the full burden. It states the tool returns a report with target/actual/variance, implying read-only behavior. But it does not explicitly disclose access requirements, rate limits, or potential errors. For a data retrieval tool, the transparency is adequate but could be improved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the purpose, report contents, and parameter usage efficiently. No unnecessary words, and the essential 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's simplicity (3 params, no output schema), the description covers the main purpose and parameter usage. However, it lacks details about the response format or what happens if no data exists. For a complete description, additional context about the return value would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying the employee_name semantics: 'look up by employee name or default to the requesting user' and reinforcing that it can be empty or 'me'. This goes beyond 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 uses a specific verb ('Get') and resource ('employee's timesheet report') and lists the report contents (target hours, actual hours, variance). It also differentiates from sibling tools like 'get_my_time_entries' by allowing lookup by employee name or default to self.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to get an employee's timesheet) and how to use the employee_name parameter (lookup by name or default to requesting user). However, it does not mention alternatives or when not to use this tool among the many sibling tools.
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 provided, so the description must convey behavioral traits. It explains the output format (hours, amount, utilization) and implies a read-only report. However, it does not address authorization requirements, performance implications, or whether it includes archived data. The transparency is adequate for a simple retrieval tool 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 extremely concise, consisting of two sentences. The first sentence front-loads the core functionality and output, and the second handles filtering. Every phrase adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two optional parameters and no output schema, the description adequately explains the return values (contracted cap, billed draw-down, remaining, utilization). It does not mention pagination or sorting, which might be needed for large datasets, but overall it covers the essential information for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (status and customer_id), achieving 100% coverage. The description merely reiterates 'optionally filtered by customer and/or status' without adding new semantic details like format constraints or parameter interactions. 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 reports frame order utilization details (contracted cap, billed draw-down, remaining) for both hours and amount, with percentage. The verb 'Report' and specific resource 'frame order utilization' make the purpose distinct from sibling tools like 'get_resource_utilization'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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, which suggests when to use them, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., get_resource_utilization) or when not to use it. No exclusions or dependencies are noted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hours_summaryAInspect
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, so the description carries the full burden. It only states the purpose and does not disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or error handling. The 'get' prefix implies safety, but the description adds no 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-constructed sentence of 16 words. It is front-loaded with the action ('Get a summary') and efficiently conveys the essential information 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?
Given the tool has 3 parameters, 100% schema coverage, and no output schema, the description covers the purpose adequately. However, it does not describe what the summary contains (e.g., total hours, daily breakdown) or return format, which would be helpful for an AI agent to understand the output.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the context that scope can be 'user' or 'team', which matches the schema. It does not add significant new meaning beyond what the schema provides, hence baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'summary of hours logged', and the scope 'for a user or team over a date range'. It distinctly differentiates from sibling tools like 'get_my_time_entries' or 'list_my_time_entries' which return individual entries rather than an aggregated summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an aggregated summary of hours is needed, but it does not explicitly state when to use this tool over alternatives (e.g., for individual time entries use 'get_my_time_entries'). There is no guidance on when not to use it or prerequisites.
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 exist, so description carries full burden. It discloses tool retrieves a CSV template (read-only). No side effects mentioned, but adequate for a simple retrieval 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 concise sentences: first states purpose, second provides workflow instructions. 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 no output schema and no annotations, description adequately covers return (CSV template) and usage context. Could optionally mention return format details, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters (baseline 4). Description adds no param info, but none needed since there are no inputs to document.
Input schemas describe structure but not intent. Descriptions should explain 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 returns the CSV template for bulk-importing work hierarchy, specifying exact resources (customers, projects, tasks, subtasks). This distinguishes it from sibling tools 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?
Description provides sequential workflow: get template, fill, validate, commit. It implies when to use (before bulk import) but does not explicitly exclude alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceBInspect
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 fully disclose behavior. It only says 'Get the full details', which implies a read operation, but fails to mention authentication, rate limits, or that this is a safe read-only action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded with the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should explain what 'full details' includes or the structure of the response. It leaves the agent without crucial information about return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond what is already in the schema. The phrase 'by ID' is redundant with the schema's 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 verb 'Get', the resource 'invoice', and the method 'by ID'. It distinguishes from sibling tools like list_invoices which return multiple invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any conditions or prerequisites. It lacks contextual decision support for the agent.
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 carries the full burden. It describes the output structure (breakdowns by project/customer, billable split, target comparison) but does not mention whether the operation is read-only, requires specific permissions, or has any limitations like pagination or date range constraints. The description is adequate but could be more explicit about behavioral expectations.
Agents need to know what a tool does to the world before calling 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 25 words, front-loaded with the core action and resource, and every part 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?
Given no output schema and the tool's analytical nature, the description adequately lists the key breakdowns (project, customer, billable split, target comparison). It lacks details on formatting or aggregation level but is sufficient for an agent to understand the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions (100% coverage), so the description adds no additional semantic value beyond the schema. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'Get' and the resource 'current user's time entry analytics', and specifies the outputs: hours breakdown by project and customer, billable vs non-billable split, target comparison. This distinguishes it from sibling tools like list_my_time_entries (raw list) and get_hours_summary (aggregated without breakdowns).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when an agent needs analytics with breakdowns for a date range, but it does not explicitly state when not to use it or mention alternative tools such as list_my_time_entries for raw data. Usage context is clear but exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_statusCInspect
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?
With no annotations, the description should disclose behavioral traits like read-only nature or authentication requirements. It does not mention any such traits, leaving the agent to infer that it is a safe read operation based on the tool name alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary purpose. It is efficient, though could benefit from slight structuring (e.g., listing returned fields explicitly).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple getter with one parameter, mentioning key informational components (budget, hours, task breakdown). However, without an output schema, it could be more complete by confirming the response structure or noting any constraints like date ranges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a description for project_id (100% coverage), so the description adds no additional semantics. 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 detailed project status including budget, hours, and task breakdown, which distinguishes it from siblings like get_hours_summary or get_budget_alerts. However, it could be more explicit about the exact scope of 'detailed status' and how it differs from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_budget_health or get_hours_summary. The description lacks context-specific usage instructions 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_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?
No annotations are provided, so the description carries full burden. It discloses that the tool returns assigned and top contributor data, and hints at integration with budget alerts. It doesn't discuss permissions or limits on contributor count, but is largely 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 concise—three sentences—each serving a clear purpose: defining output, stating use case, and providing context. 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?
Given the tool's simplicity (1 parameter, no output schema, no annotations), the description covers primary purpose, usage context, and parameter source. It could briefly mention default number of top contributors or response format, but overall 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?
With 100% schema description coverage, baseline is 3. The description adds value by linking project_id to budget-alert results and emphasizing that the ID can be resolved via other tools. This extra context justifies a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving project-associated people, distinguishing between assigned personnel and top contributors by hours logged. It uses specific verbs and resources, and uniquely positions itself among 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 specifies when to use the tool, particularly for budget overrun questions, and explains how project_id can be obtained from budget-alert results. It does not explicitly state when not to use it, but guidance is clear.
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?
With no annotations, the description carries full burden for behavioral disclosure. It states the output fields but does not clarify read-only nature, aggregation scope (e.g., per team vs. whole org), timezone handling, or whether historical data is included. This leaves significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 18 words, no filler. Every word adds value. Front-loaded with the key action and output summary. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description must explain return value. It lists key fields (target hours, actual hours, billable hours, utilization percentage) but omits aggregation level (team/project?) and format. Adequate but not fully complete for a query 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 both parameters described in schema. The description mentions date range implicitly but adds no new meaning beyond the schema. Baseline 3 is appropriate since description does not compensate for any missing parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a resource utilization summary with specific fields (target, actual, billable hours, percentage). The tool name itself is a strong indicator, and the description adds enough detail to distinguish from similar tools like get_hours_summary, although it does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_hours_summary or get_frame_order_utilization. No exclusions or prerequisites mentioned. The description implicitly suggests it is for overview, but lacks explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unbilled_timeAInspect
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?
No annotations are provided, so the description carries the full burden. It states the tool returns a summary but does not disclose whether the operation is read-only, any side effects (none expected), or data freshness (real-time vs. cached). The missing behavioral traits reduce transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that efficiently conveys the tool's purpose and output. No redundant words; it is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description names the output fields but lacks details on data scope (e.g., organization-wide? per customer?), format, or any filtering. It is adequate for a simple summary but could be 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 0 parameters with 100% coverage, so baseline is 4. The description correctly adds no parameter information, as there are none. This is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('summary of unbilled time'), clearly stating what the tool does. It lists the included fields (total hours, total amount, number of entries, aging information) and distinguishes from sibling tools like 'get_billing_report' which focuses on billing aggregates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'get_billing_report' or 'get_hours_summary'. It does not mention prerequisites, filtering, or context. This omission could lead to confusion in selecting the correct tool.
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?
With no annotations, the description carries full responsibility. It discloses role validation constraints and the fact that the invitee receives an email with an acceptance link. However, it omits behavioral details such as what happens on failure (e.g., duplicate invite, invalid email), rate limits, or whether the invitation creates a pending user record.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three sentences that deliver the core action, constraints, and outcome. Every sentence earns its place, with the main action and context front-loaded. No wasteful or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema, no nested objects), the description covers the essential context: organization binding, role constraints, and the email notification. However, it lacks information about the return value (e.g., success indicator, invite ID) which would be helpful for 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 beyond the schema by clarifying that the organization is implicitly determined by context, that role validation checks against the caller's privilege, and that the idempotency_key can be used for safe retries. This enriches the 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 ('invite a person') and the resource ('to join your organization by email at a chosen role'). It uses specific verbs and nouns, and differentiates from sibling tools like cancel_invite and resend_invite by focusing on the initial invitation 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 provides explicit context on usage: the organization is fixed (do not pass an id) and role constraints based on the caller's privilege. It does not explicitly list when not to use or mention alternatives, but the context is clear enough for an agent to decide when to invoke this tool.
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?
No annotations provided, so description bears full burden. It fully discloses irreversible nature, token expiration (~10 min), and idempotency behavior. 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: first covers purpose and consequences, second covers usage pattern. Every word adds value, no fluff, front-loaded with key 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?
Despite no output schema or annotations, the description thoroughly explains the tool's behavior: two-step workflow, irreversibility, token lifecycle, and idempotency. It effectively covers all essential aspects 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 has 100% coverage, but description adds critical context: confirm_token usage (preview prerequisite, expiration) and idempotency_key role (prevents duplicate actions). This enriches parameter understanding 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 states the specific action ('Issue a Draft invoice'), details the effects (assigns gapless number, locks as immutable, marks hours), and distinguishes from siblings like void_invoice and reissue_invoice by mentioning irreversibility. It clearly identifies the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit instructions for a two-step process: call without token to preview, then re-call with confirm_token and idempotency_key to commit. Also warns of irreversibility, guiding when to use and when alternatives (void+reissue) are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersBInspect
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, and the description does not disclose any behavioral traits (e.g., read-only, pagination, rate limits). The agent is left without insight into side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is perfectly concise 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?
Given the simplicity (no parameters, no output schema), the description is adequate. However, it could mention the default output format or any system behavior (e.g., ordering) for 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 input schema has zero parameters, so schema coverage is 100%. The description adds no parameter semantics, but the baseline for zero parameters is 4 as per guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('all customers'), with scope ('in the organization'). It is specific and directly distinguishes from sibling tools like 'get_customer_info' by implying a collection 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?
No guidance on when to use this tool versus alternatives (e.g., search, get_customer_info). The description lacks context for appropriate usage, such as prerequisites or exclusions.
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?
No annotations provided. The description reveals no behavioral details such as whether the list includes metadata, pagination limits, or ordering. It simply states the function without disclosing traits like read-only nature or potential performance characteristics.
Agents need to know what a tool does to the world before calling 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 key action and resource. Every word contributes meaning, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description adequately defines the tool's purpose. However, it could be improved by noting the return format (e.g., list of favorite objects) to provide complete context 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?
With zero parameters and 100% schema coverage, the description adds meaning by clarifying that favorites are 'time-entry favorites (quick-entry shortcuts)', which helps an agent understand the domain context beyond the empty 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 lists the current user's saved time-entry favorites (quick-entry shortcuts). It specifies the resource type and user scope, distinguishing it from sibling tools like create_favorite or 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?
The description implies usage for viewing all saved favorites but does not explicitly state when to use this tool versus siblings like use_favorite or create_favorite. No when-not or alternatives mentioned.
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 provided, and the description lacks details on pagination behavior, default ordering, or any constraints. Does not disclose what happens when no results or error 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?
Single sentence, front-loaded with action, no redundant information. 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?
Sufficient for a simple list operation but missing explicit mention of pagination mechanism (though implicit in parameters). No output schema to describe return values, so description should at least hint at result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 4 parameters with descriptions (100% coverage). The description merely restates the optional filter parameters without adding nuance 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 action 'List invoices' and the scope 'for your organization' with optional filters. Differentiates from sibling tools like get_invoice or issue_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?
Implied usage through optional filters, but no explicit guidance on when to use this tool versus alternatives like get_invoice 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.
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 provided, so the description fully carries the burden. It does not explicitly state that the tool is read-only, safe, or any behavioral traits like pagination, rate limits, or authorization requirements. It only implies a listing operation without disclosure of side effects or constraints beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first sentence efficiently states the core functionality and returned fields. The second sentence provides brief usage guidance. No redundant or extraneous 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, the description compensates by listing the key fields returned (project name, task/subtask ids, hours, description, billable flag, status). It also clarifies the scope (current user's entries) and differentiates from aggregated totals. It does not mention pagination or ordering, but the schema handles those. Overall, it's nearly complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add any extra meaning or formatting details beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'current user's own individual time entries' for a date range. It also lists specific fields returned (project name, task/subtask ids, hours, description, billable flag, status), and distinguishes from aggregated totals, providing a precise 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 explicitly tells when to use this tool: 'Use this to see exactly what was logged (the per-entry detail), as opposed to aggregated totals.' This contrasts with aggregated reporting tools. It could mention scenarios where not to use it, but the contrast is effective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsAInspect
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?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the basic listing operation without mentioning pagination, rate limits, permissions, or access scoping beyond 'organization'. This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence containing only essential information. 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?
Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers purpose and scope. However, it could be improved by clarifying what 'status and budget information' entails, though this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (one parameter with a clear description in the schema). The description adds no additional meaning to the parameter. According to guidelines, baseline is 3 when coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 a verb ('List'), resource ('all projects'), scope ('in the organization'), and included information ('status and budget'). It distinguishes this listing tool from sibling tools like 'create_project' or 'get_project_status'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a list of all projects, but it does not provide explicit guidance on when to use this tool versus alternatives like 'get_project_status' or 'search'. No exclusions or alternative mentions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recycle_binBInspect
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?
No annotations are provided, so the description must fully disclose behavioral traits. It does not mention whether the operation is read-only, requires permissions, or returns sensitive data. The term 'soft-deleted' is not elaborated, and the return format is unspecified.
Agents need to know what a tool does to the world before calling 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 16-word sentence that is front-loaded with the action. It is efficient but slightly under-informative given the lack of annotations and output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description leaves the agent uninformed about the return format, pagination details, and whether the operation is safe. More context on what 'soft-deleted' means and what fields are returned is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description summarizes the optional filter and pagination but adds no new meaning 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 uses the specific verb 'list' and resource 'recycle bin', clearly indicating what the tool does. It adds optional filtering by entity type and paging, which distinguishes it from sibling tools that list active entities (e.g., list_customers, list_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?
The description implies usage for viewing soft-deleted entities before restoration or permanent deletion, but it does not explicitly state when to use this tool vs alternatives. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduled_reportsBInspect
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?
With no annotations provided, the description carries full burden for behavioral disclosure but offers no info on permissions, side effects, pagination, or response format, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence with no redundancy, 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?
Despite low complexity (no params), the description lacks behavioral and output context (e.g., read-only, pagination, authorization), which is insufficient given no output schema and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with zero parameters, so the description adds marginal value by clarifying scope ('all') but does not exceed the baseline expected for no-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 verb 'list' and resource 'scheduled report definitions' with scope 'for the organization', distinguishing it from sibling tools like create_scheduled_report or 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 guidance is provided on when to use this tool versus alternatives, such as get_billing_report or list_invoices, nor are there any when-not or prerequisite conditions.
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?
With no annotations provided, the description carries the full burden. It states the tool creates a time entry and requires permission, but does not disclose behavioral traits such as idempotency, rate limits, or side effects like conflict handling. 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?
The description is extremely concise with two sentences that front-load the key action and resource. Every word serves a purpose with no redundancy, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose, permission requirement, and target (subtask). However, it lacks information about the return value (no output schema), which would help an agent understand the result of the operation. Given the tool's simplicity, it is fairly complete but has a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already provides clear definitions for each parameter (e.g., date format, hours constraint, default start_time). The tool description adds no additional meaning beyond what the schema already states, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create a single time entry', specifies the resource 'subtask', and identifies the scope 'for the current user'. It distinguishes itself from siblings like 'start_timer' and 'bulk_create_time_reports' by focusing on a single entry on a 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 mentions a prerequisite ('Requires permission to log time'), but does not explicitly state when not to use this tool or what alternatives exist (e.g., 'bulk_create_time_reports' for multiple entries). The usage context is clear but lacks exclusion guidance.
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?
Without annotations, the description reveals it is a mutation tool (CRUD + assign). It clarifies the meaning of 'assign' but omits details like side effects of deletion (e.g., if the active schedule is deleted), limits on schedule creation, or authentication requirements beyond 'your own.' Some aspects remain opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence captures the core purpose and actions, and the second provides additional constraints and param guidance. No extraneous text; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description gives no information about return values, error conditions, or behavior under edge cases (e.g., deleting an active schedule). The concept of 'simple schedule' is left unexplained. For a tool with six parameters and no annotations, the description is insufficiently 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 parameters are already documented. The description adds modest value by explaining the 'assign' action and 'default_hours' purpose, but largely repeats schema information. No parameter lacks clarity, but the description does not significantly augment schema meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages the user's own personal work schedule, lists the four actions (create, update, delete, assign), and distinguishes it from siblings like set_org_work_schedule by emphasizing 'your own' and 'organization fixed by context.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when each action is appropriate and which parameters are required (e.g., schedule_id for update/delete/assign). It includes context about the organization being fixed, but does not explicitly state when not to use this tool versus siblings like delete_work_schedule.
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?
The description clearly discloses the preview mode behavior ('Returns a preview unless confirm=true is set'), which is a critical safety trait. It also notes optional recording of paid amount and payment date. However, it does not mention permissions or idempotency behavior, though the latter is documented 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 two concise sentences that efficiently communicate the tool's purpose, key behavior (preview/confirm), and optional features. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with no output schema, the description does not explain the return value beyond preview, nor does it describe the effect on the invoice (e.g., changes to status or payments). While sibling context may suffice, the description itself lacks full 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 mentions 'Optionally record the paid amount', but the input schema has no 'paid_amount' parameter. This is misleading and adds confusion. All four schema parameters are documented in the schema itself (100% coverage), so the description adds negative value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Mark' and the resource 'invoice as Paid', and specifies the required state 'issued or sent'. This distinguishes it from sibling tools like issue_invoice, reissue_invoice, void_invoice, etc., which handle other states.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after invoice is issued/sent, but does not explicitly state when not to use it or provide alternatives. No guidance on prerequisites or edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_time_invoicedAInspect
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 mentions the role requirement and the optional linking, but it fails to explain the preview nature of the action (the confirm parameter) or idempotency behavior, leaving significant gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: one for the core action and one for the role requirement. Every word earns its place; no unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 4 parameters and no output schema, the description adequately covers the main operation but omits important context about the preview mode and idempotency, which are crucial for safe 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 description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what is already in the schema, though it does reiterate the optional invoice linking. It does not elaborate on confirm or idempotency_key.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('mark one or more time reports as invoiced') and the resource (time reports), with an optional linking to an invoice. This distinguishes it from sibling tools like update_time_report or generate_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 mentions the required role (Manager or above), which is a usage prerequisite. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide scenarios where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It states the operation is a move (mutating), requires Manager role, and imposes constraints. However, it does not mention what happens to project data or billing history, nor does it discuss idempotency behavior of the idempotency_key parameter beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. The first sentence states the primary purpose, the second adds a constraint, and the third adds a role requirement. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three parameters and no output schema, the description covers the essential context: what it does, constraints, and required role. It lacks details on expected return or failure modes, but given the simplicity, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, the baseline is 3. The description adds no new parameter information beyond restating that project_id and new_customer_id are required, which the schema already specifies. The idempotency_key is only mentioned 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 ('Move'), the resource ('billing project'), and the context ('to a different customer within your organization'). It effectively distinguishes this tool from siblings like 'move_subtask' or 'move_task' by specifying 'billing project' and '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 provides clear context for use ('Move a billing project to a different customer'), prerequisites ('Both project and destination customer must belong to your organization'), and a required role ('Requires Manager role or above'). It does not explicitly state when not to use, but the conditions are sufficient for proper selection among siblings.
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?
The description discloses the organizational constraint and role requirement, but with no annotations, it should reveal more behavioral traits such as whether the operation is reversible, what happens to the subtask's position or nested items, or any side effects. It is adequate 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 two concise sentences with no unnecessary words. It front-loads the core operation and immediately adds constraints. 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 has no output schema and no annotations, the description could be more complete by mentioning typical results, error conditions, or confirmation of success. It covers the essential constraints but leaves out what the agent should expect after 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%, fulfilling the baseline of 3. The description adds value by stating the Manager role requirement, which is not in the schema, and reinforces the organization constraint. However, it does not provide additional detail on idempotency_key beyond the schema's built-in explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 'subtask', and the destination 'different task'. It distinguishes this tool from siblings like 'move_task' and 'update_subtask' by specifying the exact operation and constraints (must belong to organization, Manager role required).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a subtask needs to be reassigned to a different task, but it does not explicitly state when to use this vs alternatives like 'update_subtask' (which might also change the parent task). No guidance on prerequisites or when not to use this tool is provided.
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?
Discloses that the tool performs a move (mutation) and requires specific role and organizational membership. But with no annotations, it lacks details on side effects, reversibility, return value, or error conditions. The idempotency key parameter is not mentioned 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?
Two sentences: first states purpose, second states constraints. Front-loaded and efficient, though could include more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential constraints but lacks return value description and differentiation from siblings beyond naming. Given no output schema, more context on behavior 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 clear parameter descriptions. The description reiterates the organizational constraint for new_project_id but adds no new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Move' and the resource 'task to a different billing project', distinguishing it from sibling tools like move_project and move_subtask. Also specifies the organizational 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 conditions (both entities must belong to your organization) and required role (Manager or above). However, does not explicitly mention when not to use 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.
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 discloses irreversible deletion, child entity removal, role requirement, and the commit pattern. It does not cover error conditions or rate limits, but provides sufficient behavioral detail for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences), front-loads the irreversible nature, and logically flows from purpose to usage steps. 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?
While the description covers core behavior and usage, it lacks details about the return value (e.g., preview token structure) and error scenarios. Given the complexity of the two-step operation, this omission slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds context beyond the schema: the two-step process, confirm_token origin, idempotency_key purpose, and entity_type constraints, thus providing meaningful 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 the tool's purpose: permanently and irreversibly hard-delete an entity from the recycle bin. It specifies entity types and the two-step process, distinguishing it from other deletion 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 use (permanent deletion from recycle bin), requires Admin role, and outlines the two-step preview-commit process. However, it does not explicitly state when not to use or compare with alternatives like soft-delete.
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?
With no annotations, the description carries full burden. It discloses the action (withdraw to Draft, reopen entries) and the precondition (only valid while Submitted). Minor omission: no mention of what happens if called on an already draft timesheet.
Agents need to know what a tool does to the 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 action and purpose. 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?
For a simple mutation tool with no output schema, description covers preconditions and effect. Could mention error cases (e.g., invalid period), but overall complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description repeats schema info for year and month (which is fine), but does not add meaning for idempotency_key. No additional clarity 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 verb 'Withdraw' and resource 'submitted timesheet', and distinguishes from siblings like 'reject_timesheet' and 'reopen_timesheet' by specifying it only works while the period is Submitted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (only while Submitted) and when not to use (after approval, use a manager to reopen), providing clear alternatives.
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?
Despite no annotations, the description fully discloses that the void is IRREVERSIBLE, explains the two-step commit process, and notes that the original is retained for audit. This covers all critical 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 3-4 sentences, front-loaded with the main purpose, and efficiently explains the key aspects 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?
The description explains the workflow fully but omits the return format of the preview call. Given no output schema and moderate complexity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The description adds value by explaining that confirm_token comes from preview and expires, and idempotency_key prevents duplicate commits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Void an issued invoice and clone it into a new editable Draft (void + reissue)', which is a specific verb+resource. It distinguishes from the sibling 'void_invoice' which only voids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage instructions: call once to preview, then commit with token. It implies this is for reissuing but does not explicitly exclude alternatives like voiding manually.
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 effectively discloses key behaviors: state change to Rejected (editable), required comment, confirm flag for execution, and role constraints. It could mention preview mode more explicitly, but overall it is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences), front-loaded with the main action, and each sentence adds essential 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 no output schema and full parameter coverage, the description adequately covers the tool's purpose, effect, and usage constraints. It could mention return values, but this is 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%, so baseline is 3. The description adds value by explaining the overall effect and the requirement of a comment, going beyond parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Reject' and the resource 'timesheet period', explaining the effect of returning it to the reporter. This distinguishes it from sibling tools like approve_timesheet and recall_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?
The description provides context for when to use (rejecting a submitted timesheet) and includes role requirements with exclusions. However, it does not explicitly compare to alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
Despite no annotations, description fully discloses irreversibility, preview requirement, token expiration (~10 min), and idempotency guarantee. Covers behavioral traits thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and warning, every word earns its place. 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?
Complete description for an agent: purpose, usage pattern, parameter roles, irreversibility, and token behavior. No gaps given no output schema or annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining confirm_token's preview origin and idempotency_key's dedup role, 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?
Clearly states 'Permanently remove an organization member' with emphasis on irreversibility. Distinguishes from sibling tools like disable_user or invite_user by specifying permanent removal and re-invite requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two-step preview/commit pattern with confirm_token and idempotency_key. Lacks explicit comparison to alternatives, but the irreversible nature and token mechanism provide clear usage context.
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?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions the destructive nature (revoking access) and the need for confirm=true, but omits the preview behavior when confirm is false or omitted (documented only in the schema). This is a significant gap for 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 with no redundant information. The purpose and a critical usage note are front-loaded, making it 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?
Given the tool's moderate complexity (4 params, no output schema), the description covers the primary action and precondition. However, the missing preview behavior disclosure and lack of guidance on alternatives leave the description slightly incomplete for fully autonomous 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 are fully described in the input schema (100% coverage), so the description adds minimal new semantic value. It does reinforce the confirm parameter's role, but this is already clear from 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 ('Remove a user's assignment') and the target resource ('from a customer'), with the effect of revoking access. It distinguishes itself from sibling tools like 'remove_user' and 'remove_user_project' by specifying the customer context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the critical precondition 'Requires confirm=true to proceed,' which is essential for safe usage. However, it does not offer guidance on when to use this tool versus alternatives (e.g., remove_user_project for project-level removal) or mention any exclusions.
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, description discloses removal behavior, potential indirect visibility, and authentication nuances (org context, privilege check). Lacks idempotency details and error scenarios, but 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 succinct sentences with essential info front-loaded. Every sentence adds value: action, consequence, required fields, and 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 key behavioral aspects and constraints for a simple removal tool. Lacks return value or error handling info, but not critical given no output schema. Slightly above average 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 100% so baseline 3. Description adds value by clarifying org_user_id is not Firebase user id and reiterates required parameters. Idempotency_key not mentioned, but overall adds 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?
Clearly states verb 'remove' and resource 'project assignment'. Distinguishes from siblings like 'remove_user' and 'remove_user_from_customer' by specifying 'from a specific 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?
Explains effect on visibility, required IDs, fixed organization context, and privilege restriction. Does not explicitly state when not to use or list alternatives, but constraints are clear.
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?
Discloses preview-commit flow, token expiration, idempotency, and reversibility. No annotations provided, so description carries burden adequately.
Agents need to know what a tool does to the 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 efficient sentences: first states purpose, second explains usage and reversibility. 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 4 parameters and no output schema, the description fully covers behavior, parameter interplay, token expiration, idempotency, and reversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers all 4 parameters with descriptions; description adds context by explaining the two-step flow and relationship between confirm_token and idempotency_key.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Reopen' and resource 'billing month', clearly distinguishes from siblings 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?
Explicitly describes the two-step preview-commit pattern and mentions reversibility, but does not list alternatives among siblings.
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?
With no annotations, the description carries the burden. It discloses that the action reverts the period to Rejected and requires confirm=true for execution; preview otherwise. However, it does not cover idempotency or side effects like notifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and state change, followed by usage, role, and confirmation. At 6 sentences, it is concise and avoids unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no output schema, the description covers the core action, state change, role requirement, and preview behavior. It is mostly complete, though it lacks mention of idempotency behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal meaning beyond the schema, noting that comment is optional and confirm triggers the action. No new parameter context is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reopens a Submitted or Approved timesheet period for corrections, with specific verb and resource. It distinguishes from sibling tools like reject_timesheet by indicating the period reverts to Rejected 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?
It advises when to use ('when an approved period needs fixing') and specifies required roles (Manager or Admin/Owner, excluding Finance). It also mentions the confirm=true requirement for execution, providing clear context.
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 provided; description covers action and effect (resends email, resets status). Mentions organizational context constraint. Lacks details on permissions, rate limits, or error behavior, but is not misleading.
Agents need to know what a tool does to the 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 states purpose and effect, second provides usage instructions. 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?
Given 2 parameters and no output schema, description covers core functionality, input requirement, and key constraint. Could mention success/failure indication or error handling, but overall sufficient for a simple 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%. Description adds meaning by specifying invite_id as pending invitation and explaining idempotency_key's retry behavior. Also warns about not passing organization id, adding 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?
Description uses specific verb 'Re-send' and resource 'pending invitation email', explicitly stating the effect 'reset its status to Pending'. It clearly distinguishes itself from siblings like cancel_invite and 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?
States requirement for invite_id and instructs to discover it via list of pending invites. Explicitly warns against passing an organization id. Does not explicitly list when not to use, but provides clear context.
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?
Discloses Admin requirement and that children are restored. No annotations provided, so description carries full burden. Does not mention idempotency behavior or error handling, but covers core 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?
Two concise sentences front-loaded with purpose and prerequisites. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers restore action with required role and entity types. Lacks return value description and error scenarios, but sufficient for a simple restore 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 description adds minimal value. Repeats entity_type enum but does not add new info for idempotency_key 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 restores soft-deleted entities (customer, project, task, subtask) and their children from the recycle bin. Distinguishes from sibling tools 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?
Specifies required Admin role and allowed entity_type values. Does not explicitly mention when not to use or alternative tools, 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.
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?
With no annotations, the description carries full burden. It explains matching behavior (id prefix, name contains) and result structure (flat, assignment-scoped). However, it does not disclose further behavioral traits like order, case sensitivity, or read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose and result format with no wasted words. The description is front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should compensate. It covers entity types and search matching but omits details like result fields, order, and the meaning of 'assignment-scoped'. This leaves some 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?
Schema coverage is 100% with parameter descriptions. The description adds minimal semantic value beyond restating the search method. Baseline for high 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 searches work-structure entities by id or name and returns a flat result list. It uses a specific verb and resource, and while it does not explicitly differentiate from siblings, its cross-entity scope is distinct among the listed 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 usage for finding entities by id/name but lacks explicit guidance on when to use this tool versus specific list tools or other search tools. No when-not or alternatives are 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 carries the burden. It discloses the preview behavior and idempotency, but does not explicitly state whether the action is destructive or what side effects occur beyond marking as sent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action and precondition. No unnecessary words, and the second sentence explains the critical confirm 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?
For a simple state-change tool with no output schema, the description covers the precondition, parameter behavior, and return behavior (preview vs confirm). Missing details on what the preview contains but adequate overall.
Complex tools with many parameters or behaviors need more documentation. Simple 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 context: the confirm parameter's preview versus action behavior, and the idempotency key's retry semantics, which adds significant 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 verb 'Mark as Sent' and specifies the resource 'issued invoice'. It also distinguishes from siblings like issue_invoice or mark_invoice_paid by requiring the invoice to already be in Issued status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly sets a precondition ('must already be in Issued status') and describes the behavior of the confirm parameter. However, it does not compare directly with other tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 provided, so description carries full burden. It discloses PATCH behavior (only provided fields changed) and validation constraints. Does not explicitly state destructiveness, but 'set' implies mutation sufficiently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and front-loaded, with no wasted words. Every sentence adds essential information: purpose, parameter roles, constraint, and patch 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?
For a simple tool with 3 parameters and no output schema, the description is sufficiently complete. Covers constraints, patch semantics, and idempotency. Could mention error handling but not necessary for basic 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%, but description adds value by explaining threshold meanings and the idempotency key behavior. It clarifies relationships between parameters and patch semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets organization-level budget alert thresholds, explaining the two parameters and their meanings. It distinguishes itself from sibling tools like check_budget_limits and get_budget_alerts by focusing on setting thresholds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidelines on when to use: supplies validation rule (warning < critical) and PATCH semantics. Does not explicitly compare to siblings, but context signals and parameter descriptions offer clear usage context.
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?
No annotations are provided, so the description must carry the full burden. It notes organization context, permission requirements, and the need for a predefined field, but does not disclose side effects, return value, or error handling behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the main action, followed by necessary context. Every sentence earns its place without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, prerequisites, and entity types, but is incomplete for a mutation tool with no output schema—it does not specify the return value, success indicators, or error conditions. Additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the coercion of value to field type and the optional idempotency key, improving semantic understanding beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('set the value of a custom field') and specifies the target entity types (project, task, etc.), distinguishing it from sibling tools like create_custom_field or entity-specific update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to set a custom field value) and mentions prerequisites (field must be defined, permission required), but does not explicitly contrast with alternative tools or specify 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.
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 provided, the description carries the full burden. It discloses idempotency key behavior and partial update semantics, but lacks details on permissions, rate limits, or potential side effects. The description adds value but is not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It front-loads the primary action in the first sentence, then explains key behaviors in subsequent sentences. 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 absence of an output schema and the tool's mutation nature, the description should ideally mention return values or error conditions. It covers the main operational aspects but lacks information about what the tool returns upon success or failure.
Complex tools with many parameters or behaviors need more documentation. Simple 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 meaning beyond schema by providing an example for weekly_schedule JSON format and explaining how schedule_id controls create vs. update. This elevates it above 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's action: 'Create or update a named organization-level work schedule (a weekly working-time profile).' It distinguishes from siblings by specifying 'organization-level,' differentiating it from 'manage_user_work_schedule' which deals with user schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 create vs. update: 'Provide schedule_id to update an existing one, or omit it to create a new one.' Also clarifies that the organization is fixed by context and that updates are partial. However, it does not mention alternatives or when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 provided, so description carries full burden. It discloses that the rate value is never echoed back, which is critical behavior. It also implies a write operation, which is clear. 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?
Three sentences, no fluff. The key action and constraints are front-loaded in the first sentence. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description covers purpose, key constraints, and a behavioral trait (no echo). It lacks detail on success/failure responses but is sufficient for the agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds marginal value by reiterating constraints like 'cannot set your own cost rate' (related to user_id) and 'never pass org id', but does not provide new 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 sets the internal hourly cost rate for a single organization member, using specific verb 'set' and resource 'user cost rate'. It distinguishes from sibling bulk_update_cost_rates by specifying 'one member', and from update_user_profile by focusing on 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?
The description provides explicit context: organization is fixed (never pass org id) and self-cost-rate-setting is prohibited. This guides when to use and important constraints, though it does not explicitly name alternative tools for bulk operations.
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?
With no annotations, the description fully carries the burden of behavioral disclosure. It transparently states that at most one timer runs per user and starting a new one replaces old ones, which is critical for a mutation tool. Missing details on auth or errors, but the key side effect is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, with the most important action and side effects front-loaded. The sentence 'Supply subtask_id.' is a bit terse but clear. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and 3 parameters, the description covers the core behavior: start/replace, lifecycle, and required input. It could mention what the tool returns (e.g., timer ID), but the current completeness is adequate for a single-action timer 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 description adds minimal value beyond the schema: it repeats 'subtask_id' and notes that description is optional. The idempotency_key is already well described 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's action ('Start or replace your running timer') and resource ('on a subtask'). It also distinguishes it from sibling tools like stop_timer and cancel_timer, providing a specific verb+resource combination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 lifecycle: starting a new timer replaces any existing, and directs to stop_timer or cancel_timer for subsequent actions. It does not explicitly mention prerequisites or when not to use, but provides clear context for timer management.
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?
No annotations provided, so description carries burden. It describes the main behavior (compute elapsed time, create draft, return it) but does not mention error handling (e.g., if no timer is running) or the idempotency key behavior. The 'no arguments needed' statement conflicts slightly with the optional parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the action and result, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, description is fairly complete. It covers the action, result, and return value. Could mention prerequisites (timer must be running) but otherwise 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% with the idempotency key described. The description adds only that no arguments are needed, which is redundant with the schema marking it optional. It adds no new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stops a running timer, computes elapsed time, creates a draft time entry, and returns it. It distinguishes from siblings like 'cancel_timer' (which likely does not create an entry) and 'log_time' (manual 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?
The description implies when to use (when a timer is running) and what to expect (draft entry created). It does not explicitly list 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.
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?
Without annotations, description discloses key behavior: transitions Draft and Rejected entries to Submitted, and billing-closed months are blocked. Could mention irreversibility or permissions, but adequate for a submission 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, front-loaded with main action, no fluff. Efficiently conveys purpose, effect, and constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 key aspects: what is submitted, status transitions, blocking condition. No output schema, but the outcome is implied. Missing details on response or confirmation, but still fairly 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%; description reinforces year/month and adds '1-12' range, but doesn't add new meaning beyond schema. Idempotency key description in schema already explains 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 the action (submit), resource (time entries for a month), and effect (transition Draft and Rejected to Submitted). Distinguishes from sibling tools like approve_timesheet and 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 clear context: billing-closed months cannot be submitted, and specifies required inputs (year and month). Lacks explicit when-not-to-use or alternative tool names, but the condition is useful.
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, the description explains the authoritative sources, draft output with day types, and warns against invention. It lacks details on authentication or side effects but covers key behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with multiple sentences that are clear and front-loaded. It avoids unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with no output schema, the description covers the purpose, source behavior, return format, and usage instruction. It is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines both parameters. The description adds ISO-2 examples and source info but doesn't significantly 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 tool does a lookup of public holidays using authoritative sources, returning a draft list. It is distinct from sibling tools like create_holiday_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this to propose a holiday profile and not to invent dates, providing clear guidance. It doesn't list alternatives but distinguishes from create/update siblings.
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?
No annotations provided, so description carries full burden. Discloses it reverses only the most-recent write-off and requires open month and specific role. Does not detail side effects or preview behavior (though confirm param in schema covers that). Lacks explanation of output or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action. No wasted words. Efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output description (no schema). Does not mention error conditions (e.g., no write-off to undo or month already closed). Preconditions are stated but overall completeness is moderate 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?
Schema covers all 3 parameters with descriptions (100% coverage). Description adds no new parameter-level detail beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action: reverse the most-recent write-off on a time report and restore hours. It distinguishes from sibling 'write_off_time' and other month-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies prerequisites (billing month open) and required role (Finance or above). Does not explicitly exclude scenarios but provides enough context for appropriate use.
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?
Discloses PATCH semantics and that only provided fields change. No annotations exist, so description compensates well, though could mention idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose and key behavioral note. 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?
With 10 optional parameters and no output schema, description adequately covers core behavior and ID retrieval. Could optionally mention return value, but not essential for a simple 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 description coverage is 100%, so baseline is 3. Description adds marginal value by emphasizing discovery of customer_id via another tool, but does not elaborate on parameter meanings 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 verb 'Update', resource 'existing billing customer', and specifies PATCH semantics. Distinguishes from sibling tools like create_customer and delete_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 tells how to discover the customer ID using find_billing_work and instructs never to ask the user. Provides clear context for when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 provided. Description discloses partial update behavior and fixed organization, but omits return value format and potential side effects. Adequate but not 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?
Three sentences, front-loaded with core purpose. Efficient with no fluff, but could be slightly more concise if it dropped the redundant 'organization fixed' note (already implied by 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?
No output schema exists, but description provides no info on return value (e.g., updated field object or success flag). For a mutation tool with multiple updateable properties, this is a notable 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 already fully describes each parameter (100% coverage). The description reinforces partial update semantics ('Only the properties you supply are changed') but adds little 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?
Clearly states it updates an existing custom field definition, lists what properties can be changed (title, type, options, mandatory flag), and explicitly says what cannot be changed (field_id, entity). Distinguishes from create_custom_field and delete_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?
Specifies organization is fixed and only supplied properties change. Implies use when modifying an existing custom field, but does not explicitly contrast with set_custom_field_value or provide when-not scenarios.
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?
With no annotations, the description carries the full burden. It indicates mutation via 'update' and lists editable fields, but does not disclose authorization needs, side effects, rate limits, or what happens on failure. The draft constraint is helpful but insufficient 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?
The description is a single, compact sentence that front-loads the action and resource. It efficiently conveys the essential information without any 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?
Despite 8 parameters and no output schema, the description does not explain the return value, success/failure indication, or any preconditions (e.g., required permissions). The draft constraint is noted, but overall completeness is lacking for a mutation tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The tool description simply lists the same fields without adding extra meaning or context beyond what is in 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 'Update' and resource 'DRAFT invoice', listing specific editable fields (notes, internal notes, etc.). It distinguishes this tool from sibling tools that perform other actions on invoices (e.g., issue_invoice, void_invoice) or update other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the tool is 'only valid while the invoice is still a Draft', providing a clear condition for use. While it doesn't mention alternatives for non-draft invoices, the draft constraint itself guides when to use and when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
With no annotations provided, the description carries the full burden. It states that fields are updated, implying mutation, but does not disclose idempotency behavior, error conditions for closed orders, or partial vs full update semantics. The schema description coverage is 100%, which somewhat mitigates the gap, but behavioral traits remain underexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with a parenthetical list of fields. It is front-loaded with purpose and contains no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters and no output schema, the description covers the core constraint (open vs closed) and lists editable fields. However, it does not explain return value, error handling, or relation to other tools like close_frame_order, leaving gaps for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%, so the parameter descriptions in the schema already provide details. The tool description adds a high-level grouping of fields but does not add significant new meaning beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update', the resource 'Open frame order', and lists the editable fields (reference, description, caps, dates, currency, notes). It distinguishes itself from sibling tools like close_frame_order by explicitly noting that closed frame orders cannot be edited.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage constraint: 'use this only for Open frame orders' and indicates that closed orders cannot be edited. However, it does not explicitly name alternatives for closed orders or provide additional context about when to use this tool versus 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_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 the description carries full burden. It discloses key behaviors: partial update, replacement of holidays, year immutability, organization fixed, and date constraints. This is sufficient for an agent to understand the mutation semantics without hidden surprises.
Agents need to know what a tool does to the world before calling 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 (5 sentences), front-loaded with purpose, and each sentence adds necessary information without redundancy. It efficiently covers purpose, constraints, and behavioral nuances.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, mutation, no output schema), the description covers essential aspects: modifiable fields, partial update, replacement, year constraint, date validation. It does not describe return values or errors, but these are often implicit or handled by the platform, making the description adequate for most agent interactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions. The description adds value beyond schema by clarifying that the organization is fixed, year cannot change, and holidays replace the list. It also emphasizes the profile_id requirement and organization ownership, enhancing the agent's 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 it updates an existing holiday profile, lists the modifiable fields (name, holiday list, default-for-countries, active flag, notes), and specifies the scope ('in your organization'). The verb 'update' and resource 'holiday profile' are explicit, distinguishing it from create or delete operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance: it updates only existing profiles, the organization is fixed, the year cannot be changed, and only supplied fields are updated (partial update). It warns that holidays replace the entire list. Lacks explicit mention of when to avoid this tool in favor of siblings, but the constraints are well communicated.
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?
With no annotations, the description carries full burden. It describes the update operation, mentions the constraint on budget thresholds, and implies idempotency via the idempotency_key parameter. It does not mention auth or rate limits, which is acceptable for an org settings 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 concise sentences with zero waste. The description is front-loaded with the action and resource, and all information is relevant and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 9 parameters, the description adequately covers the tool's behavior: partial update, fixed org context, and the budget threshold constraint. It lacks details on return values or error handling, but these are not critical for a simple 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% with descriptions for all 9 parameters. The description adds value by listing the key parameters, noting the constraint that budget_warning_threshold_percent must be less than budget_critical_threshold_percent, and clarifying that organization ID should not be passed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and the resource 'core settings for your organization', listing the specific fields. It distinguishes from sibling tools that operate on other entities like projects, customers, or 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 explicitly states that the organization is fixed by context and not to pass an organization ID, and that only provided fields are changed. It does not explicitly mention when not to use, but the context is clear given the sibling tools cover different operations.
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?
The description discloses PATCH semantics ('Only the fields you provide are changed'), which is key behavioral info. However, it does not mention permissions, rate limits, atomicity, or side effects. Since no annotations are provided, the description carries the burden; 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 concise (three sentences), front-loaded with purpose, and each sentence adds necessary detail. There is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, 1 required, and no output schema, the description covers the main workflow (update fields, use find_billing_work for id). However, it does not describe return values, error conditions, or constraints like the required project_id being valid. It is mostly complete for the primary use case but lacks some 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 value by explaining PATCH behavior and clarifying that billing_types 'Replaces the entire set — include all types you want to keep.' This goes beyond the schema, which simply says 'Comma-separated list.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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: 'Update an existing billing project'. It specifies the resource (billing project) and verb (update), and distinguishes itself from sibling tools like create_project and delete_project by focusing on updating. The listing of updatable fields further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Discover ids with find_billing_work - never ask the user for an id.' This tells the agent to use a specific sibling tool to obtain the project_id, avoiding user prompts. It implies not to use this tool for creation (use create_project) but does not explicitly compare to other update tools among siblings.
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 the full burden. It discloses the partial update behavior, which is important, but does not mention authorization needs, potential side effects, or error conditions. The addition of idempotency_key is noted in schema but not in description. Overall, adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences. The first sentence states the primary purpose, and the second elaborates on behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (7 params, no output schema), the description covers the essential behavior of partial update. It omits the idempotency key behavior but that is covered in the schema. The description is sufficient for an agent to understand the tool's function without missing critical 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 the schema already documents all parameters. The description adds no additional parameter details beyond the partial update semantics. 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 updates an existing scheduled report definition, using a specific verb and resource. It distinguishes from sibling tools like create_scheduled_report and cancel_scheduled_report by implying an existing entity is modified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on usage: partial update semantics (only provided fields change, unspecified fields kept). However, it does not explicitly state when to use this tool versus alternatives or mention any prerequisites, making it slightly less than perfect.
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 full burden. It discloses PATCH semantics (only provided fields change) and mentions idempotency key behavior via the schema, but lacks details on validation rules, permissions, side effects, or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences covering the essential purpose, PATCH behavior, updatable fields, and an important usage tip. 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?
Despite having 7 parameters and no output schema, the description omits what the tool returns after update, error scenarios, and required permissions. This is a notable gap for a mutation tool without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate descriptions. The description adds value by emphasizing PATCH semantics and directing the agent to use find_billing_work for the subtask_id, which aids selection 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 it's an update operation with PATCH semantics, lists the specific fields that can be changed (name, description, status, billing type, hour limit), and distinguishes from sibling tools like create_subtask 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 advises to discover subtask IDs using find_billing_work and never ask the user, providing clear context for when to use this tool. It doesn't explicitly list exclusions but the sibling set implies when not to use (e.g., delete or move operations).
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?
With no annotations, the description carries the burden of behavioral disclosure. It explains PATCH semantics and lists updatable fields, which is adequate for a non-destructive update. However, it does not mention permissions, error cases, or idempotency key behavior beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both essential: the first defines the core action, the second adds critical PATCH semantics and ID handling guidance. 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?
Given 8 parameters, no output schema, and no annotations, the description covers PATCH behavior, updatable fields, and ID discovery. It is sufficient for the agent to invoke the tool correctly, though it omits mention of return values or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple 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 is already well-documented. The description adds overarching context (PATCH, field categories) but does not significantly enhance individual parameter understanding. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Update an existing task', identifies the resource (task), and specifies PATCH semantics. It distinguishes from sibling tools like create_task, delete_task, and move_task by focusing on updating fields. The guidance to use find_billing_work for IDs further clarifies its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains PATCH behavior ('Only the fields you provide are changed') and advises against asking users for IDs, directing to find_billing_work instead. It implies usage for updates only, though it does not explicitly list alternatives or exclusions.
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?
Discloses PATCH semantics (only supplied fields change) and mentions the idempotency key behavior. No annotations are provided, so the description carries the burden; it lacks details on permissions, error handling, 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, no fluff. Front-loaded with the key PATCH concept, immediately followed by usage syntax.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core update operation but does not describe the response format or error scenarios. Given no output schema, more detail on return values 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%, so the schema already describes each parameter. The description adds context about the idempotency key and partial update behavior but mostly restates the parameter list.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Update fields'), resource ('time entries'), and scope ('your own'). Differentiates from related tools by specifying PATCH 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?
Tells the user to supply time_report_id plus any combination of updateable fields, implying which parameters are required vs optional. However, does not explicitly guide when to use this tool versus siblings like bulk_update_time_reports.
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 provided. The description discloses PATCH behavior, global scope, and user-fixed context. However, it does not mention idempotency (despite idempotency_key being in schema) or error handling. It adequately describes safety (non-destructive) but lacks full behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with purpose, and every sentence adds unique information. No fluff, perfectly 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?
Given no output schema and moderate parameter count (7 optional), the description covers the key aspects: what it does, scope, and semantics. Missing return value or error details are acceptable for a preference update tool. Could mention that unchanged fields persist, 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 good enum descriptions. The description adds value by clarifying PATCH semantics ('Only the fields you provide are changed'), which is not in the schema. It also groups parameters by category (view preferences, theme, time format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'your own UI preferences', listing specific fields (time-entry view, sub-views, theme, time format). This distinguishes it from sibling tools like update_user_profile and update_org_settings, which handle different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states context: 'only change your own preferences', 'applies to your account globally across all organizations', and PATCH semantics. It implicitly excludes changing others' preferences, but does not mention alternative tools for profile or org settings.
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 are provided, so the description carries the full burden. It discloses PATCH semantics (only provided fields change) and privilege restrictions. However, it does not describe the return value or error behavior, which would improve 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 deliver all necessary information without redundancy. Each sentence serves a purpose: listing fields, explaining PATCH semantics, excluding role changes, clarifying organization context, and stating privilege constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and many siblings, the description covers purpose, usage guidelines, behavioral traits, and parameter constraints. A mention of the return value (e.g., updated profile object) would enhance completeness, but it's 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% (all 7 parameters described), setting a baseline of 3. The description adds value beyond schema by explaining PATCH semantics (partial update), clarifying the org_user_id's fixed organization context, and mentioning the idempotency key's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb (Update), the resource (team member's organization-profile), and lists the specific fields (first name, last name, country, timezone, job title). It distinguishes itself from the sibling tool 'change_user_role' by explicitly stating that role changes are not supported.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (update profile fields) and when not to (role changes), directing to the dedicated role-change tool. It also provides critical usage constraints: the organization is fixed (never pass an org id) and you cannot target a more privileged user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_favoriteBInspect
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?
No annotations provided, so description bears full burden. It states incrementing count and updating timestamp but omits side effects, authorization needs, rate limits, or the idempotency mechanism described 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?
Single sentence, 15 words, directly conveys the action. No filler, front-loaded with key 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 2-param tool with no output schema, coverage is moderate. Covers basic action but lacks usage context and behavioral details that are not already in schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both favorite_id and idempotency_key described). Description adds no extra meaning beyond schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (record), resource (time-entry favorite), and actions (incrementing use count, updating timestamp). This distinguishes it from sibling tools like create_favorite, delete_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?
No guidance on when to use this tool vs alternatives. Does not mention when not to use, nor provides context on prerequisites, idempotency behavior, or relationships to other favorite-related tools.
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?
With no annotations, the description carries full burden. It states 'without persisting anything' (non-destructive), and mentions returns of 'row-level errors and a summary'. Could add detail on handling malformed CSV, but is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficiently communicates everything needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return type ('row-level errors and a summary') adequately. Mentions the template from sibling tool. For a simple 1-param validator, it's fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for 'csv_content'. The description adds value by referencing 'use the template from get_import_template', guiding usage beyond the schema. No param info missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Validate' and the resource 'a bulk-import CSV'. It distinguishes from sibling 'commit_import' by emphasizing no persistence, and from 'get_import_template' by focusing on 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?
The description explicitly tells when to use this tool: 'before calling commit_import'. It implies when not to use it (when persistence is desired) and provides a clear workflow step.
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?
With no annotations provided, the description fully bears the burden of transparency. It discloses irreversibility, the preview-commit workflow, token expiration (~10 minutes), and idempotency behavior—all critical for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero fluff; front-loaded with the action and immediately followed by critical usage details. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers the workflow, side effects, and parameter usage comprehensively. It could mention what the preview returns (the confirm_token) more explicitly, but overall it's sufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the preview-commit flow and the roles of confirm_token and idempotency_key beyond their schema descriptions, elevating 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 ('Void an issued invoice') and resource, and distinguishes it from sibling tools like 'mark_invoice_paid' or 'send_invoice' by detailing the specific effects (releasing hours back to Approved, retaining immutable void record).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 usage instructions: call once with no token to preview, then re-call with confirm_token and idempotency_key to commit. It does not explicitly state when not to use or name alternatives, but the pattern is clearly actionable.
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?
Discloses the write-off effect and authorization requirement. However, with no annotations, the description should detail side effects (e.g., hours become non-billable, tracked separately) and output behavior. The preview via confirm parameter is only mentioned in schema, not 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 concise sentences: first defines purpose with example, second states requirement. No redundant information. Front-loaded with key 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?
Covers prerequisites and high-level purpose, but lacks detail on return value, confirmation workflow, and post-write-off tracking. With no output schema, the agent would benefit from knowing what happens after invocation (e.g., hours removed, no invoice generated).
Complex tools with many parameters or behaviors need more documentation. Simple 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%; parameters are well-documented with constraints. The description adds context (e.g., 'discounts or goodwill' for reason) but does not explain idempotency_key or confirm beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Write off hours'), the resource ('approved time report'), and the effect ('removing from billable pool without invoicing'). Examples (discounts, goodwill) help distinguish from related tools like delete_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 the required role ('Finance role or above') and implies use on approved time reports, but does not explicitly contrast with alternatives (e.g., when to use undo_write_off or mark_time_invoiced). The when-not context is missing.
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!
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables tracking work time with start/stop timers, logging entries, and generating reports.410MIT
- Flicense-qualityDmaintenanceEnables AI assistants to analyze log time data from various sources to summarize project health, employee performance, and client status.
- AlicenseAqualityDmaintenanceEnables interaction with Productive.io for task management, time tracking, budget monitoring, and project overview through natural language.8323ISC
- Alicense-qualityDmaintenanceAn MCP server for time tracking and billing that allows freelancers to control timers, manage projects, and export invoices via natural language in any MCP-compatible AI assistant.5MIT