Skip to main content
Glama
christianclaudio

mcp-server-smartsheet-rm

๐Ÿ“‹ mcp-server-smartsheet-rm

CI PyPI Python License: Apache-2.0 Coverage CodeRabbit Reviews

Enterprise Model Context Protocol (MCP) server for Resource Management by Smartsheet (10,000ft API).

Enables AI coding agents, planners, and assistants (Claude, Cortex, Antigravity, VS Code) to orchestrate the complete Smartsheet RM REST API surface: time tracking & timesheet reconciliation, resource scheduling & allocations, capacity planning, project & phase management, leaves/holidays, expense tracking, and custom fields.


๐Ÿ—๏ธ System Architecture

graph TD
    Client["AI Agent (Claude / Cortex / Antigravity / Cursor)"] -->|"MCP Stdio / Streamable HTTP /mcp"| Server["Root Gateway create_server()"]
    Server --> Middle["Parent Middleware (ParentAudit / ReadOnly Gate)"]
    Middle --> SubTime["time namespace (time_* โ€” 14 tools, 15 with bulk)"]
    Middle --> SubProj["projects namespace (projects_* โ€” 24 tools, 25 with bulk)"]
    Middle --> SubAdmin["admin namespace (admin_* โ€” 60 tools)"]
    SubTime --> Guards["Domain Guards"]
    SubProj --> Guards
    SubAdmin --> Guards
    Guards --> ClientPool["SmartsheetRMClient (httpx.AsyncClient Pool)"]
    ClientPool -->|"Bearer Auth + 429 Jitter Retry"| API["Smartsheet RM (10,000ft API)"]

create_server mounts the time, projects, and admin sub-servers with FastMCP 4 namespace=, so tools/list names are time_*, projects_*, and admin_*. Legacy rm_* names are not registered on the gateway.


Related MCP server: @lewinnovation/clockify-mcp-server

๐Ÿš€ FastMCP 4 Server Composition

  • Domain mounts (root.mount(..., namespace=...)):

    • namespace="time" โ†’ time_* (14 tools; 15 when bulk is enabled).

    • namespace="projects" โ†’ projects_* (24 tools; 25 when bulk is enabled).

    • namespace="admin" โ†’ admin_* (60 tools).

  • Hierarchical middleware:

    • Parent: ParentAuditMiddleware (timing, lifecycle logs, secret redaction) and ReadOnlyGateMiddleware (fail-closed mutation block when SMARTSHEET_RM_READONLY=1).

    • Child: TimeDomainGuardMiddleware (logged hours must be 0โ€“24), ProjectsDomainGuardMiddleware (project names must be non-empty), AdminDomainGuardMiddleware (per_page must be โ‰ค 1000).

  • Profiles via --profile / SMARTSHEET_RM_PROFILE (full, time, projects, admin, readonly). Mounts are selective; read-only filtering and bulk gating run after mount:

    • full (default): time + projects + admin โ€” 98 tools (100 with bulk).

    • time: time sub-server only โ€” 14 tools (15 with bulk).

    • projects: projects sub-server only โ€” 24 tools (25 with bulk).

    • admin: admin sub-server only โ€” 60 tools.

    • readonly: mounts all three domains, then drops every tool without readOnlyHint โ€” 39 tools. SMARTSHEET_RM_READONLY=1 applies that same filter on top of any profile.

  • Bulk gate: time_bulk_delete_time_entries and projects_bulk_delete_assignments are registered only when SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1. They stay absent in read-only mode.

  • Tool search: flat tools/list by default. --enable-tool-search or SMARTSHEET_RM_ENABLE_TOOL_SEARCH=1 adds RegexSearchTransform.


โšก Tool Surface Overview

The server exposes tools covering projects, resources, timesheets, and capacity. Call the namespaced names below:

  • Default Registration: 98 tools (with bulk-destructive operations gated by default).

  • With Bulk Operations: 100 total tools when SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1.

  • Read-Only Mode: 39 tools (readOnlyHint=true).

  • Destructive Gates: 21 tools requiring explicit confirm=True (19 standard + 2 bulk).

  • Idempotent Operations: 43 tools with idempotentHint=true (the 39 read-only tools, plus time_update_time_approval_status, time_lock_timesheet, admin_set_custom_field_values, and admin_set_user_status).

Domain Overview

Agents call these tools/list names. Counts for time and projects include the bulk-gated tool.

  1. Time (time_*, 15 tools): time_list_time_entries, time_get_time_entry, time_create_time_entry, time_update_time_entry, time_delete_time_entry, time_list_user_suggestions, time_update_time_approval_status, time_lock_timesheet, time_fill_weekly_timesheet, time_confirm_suggested_hours, time_reconcile_and_submit_week, time_list_approvals, time_create_approval, time_delete_approval. Bulk-gated: time_bulk_delete_time_entries.

  2. Projects (projects_*, 25 tools): projects_list_projects, projects_get_project, projects_create_project, projects_update_project, projects_delete_project, projects_list_project_users, projects_list_project_phases, projects_get_project_phase, projects_create_project_phase, projects_update_project_phase, projects_delete_project_phase, projects_list_assignments, projects_get_assignment, projects_create_assignment, projects_update_assignment, projects_delete_assignment, projects_clone_project_schedule, projects_list_status_options, projects_list_placeholder_resources, projects_create_placeholder_resource, projects_delete_placeholder_resource, projects_list_assignment_subtasks, projects_create_assignment_subtask, projects_delete_assignment_subtask. Bulk-gated: projects_bulk_delete_assignments.

  3. Admin (admin_*, 60 tools):

    • Users, roles, disciplines, and capacity: admin_list_users, admin_get_user, admin_create_user, admin_update_user, admin_delete_user, admin_list_user_bill_rates, admin_create_user_bill_rate, admin_get_user_availability, admin_get_user_utilization, admin_list_roles, admin_create_role, admin_update_role, admin_delete_role, admin_list_disciplines, admin_create_discipline, admin_update_discipline, admin_delete_discipline.

    • Clients and contacts: admin_list_clients, admin_get_client, admin_create_client, admin_update_client, admin_delete_client, admin_list_client_contacts, admin_create_client_contact, admin_delete_client_contact.

    • Leaves and holidays: admin_list_leave_types, admin_get_leave_type, admin_create_leave_type, admin_update_leave_type, admin_delete_leave_type, admin_list_holidays, admin_get_holiday, admin_create_holiday, admin_update_holiday, admin_delete_holiday.

    • Expenses: admin_list_expenses, admin_get_expense, admin_create_expense, admin_update_expense, admin_delete_expense, admin_list_expense_categories, admin_create_expense_category, admin_delete_expense_category.

    • Tags and custom fields: admin_list_tags, admin_create_tag, admin_delete_tag, admin_list_custom_fields, admin_get_custom_field, admin_create_custom_field, admin_update_custom_field, admin_delete_custom_field, admin_list_custom_field_values, admin_set_custom_field_values.

    • Status, reports, and webhooks: admin_get_user_statuses, admin_set_user_status, admin_get_report_rows, admin_get_report_totals, admin_list_webhooks, admin_create_webhook, admin_delete_webhook.


๐Ÿš€ Quickstart & Installation

1. Run via uvx

Console scripts in [project.scripts] both call smartsheet_rm_mcp.server:main: smartsheet-rm-mcp (used below) and mcp-server-smartsheet-rm. Install examples stay unpinned. To freeze a release, pin the version from Releases or CHANGELOG.

uvx --from mcp-server-smartsheet-rm smartsheet-rm-mcp

After an upgrade, reload the MCP host so the live process start time is after the new binary mtime (stale process โ‰  new package).

2. Installation

# Using uv (recommended)
uv pip install mcp-server-smartsheet-rm

# Or standard pip
pip install mcp-server-smartsheet-rm

3. Environment Variables

Variable

Description

Default

SMARTSHEET_RM_API_TOKEN

Smartsheet RM (10,000ft) API Token (Required)

-

SMARTSHEET_RM_BASE_URL

Base API URL

https://api.rm.smartsheet.com/api/v1

SMARTSHEET_RM_PROFILE

Tool profile subset: time, projects, admin, full, readonly

full

SMARTSHEET_RM_READONLY

Set to 1 to restrict server to read-only tools

0

SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE

Set to 1 to unlock bulk delete operations

0

SMARTSHEET_RM_ENABLE_TOOL_SEARCH

Set to 1 (or --enable-tool-search) for dynamic regex search

0

SMARTSHEET_RM_LOG_FORMAT

Set to json for Datadog/CloudWatch structured logs

text

SMARTSHEET_RM_ALLOWED_HOSTS

Comma-separated allowlist of hostnames for base URL overrides (mitigates SSRF/DNS-rebinding)

unset (allows valid HTTPS domains)


๐Ÿ’ป Client Configurations

Google Antigravity (~/.gemini/antigravity-cli/mcp_config.json)

{
  "mcpServers": {
    "smartsheet-rm": {
      "command": "uvx",
      "args": ["--from", "mcp-server-smartsheet-rm", "smartsheet-rm-mcp"],
      "env": {
        "SMARTSHEET_RM_API_TOKEN": "your-api-token"
      },
      "lazy": true
    }
  }
}

Snowflake Cortex (~/.snowflake/cortex/mcp.json)

{
  "servers": {
    "smartsheet-rm": {
      "command": "uvx",
      "args": ["--from", "mcp-server-smartsheet-rm", "smartsheet-rm-mcp"],
      "env": {
        "SMARTSHEET_RM_API_TOKEN": "your-api-token"
      }
    }
  }
}

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "smartsheet-rm": {
      "command": "uvx",
      "args": ["--from", "mcp-server-smartsheet-rm", "smartsheet-rm-mcp"],
      "env": {
        "SMARTSHEET_RM_API_TOKEN": "your-api-token"
      }
    }
  }
}

Streamable HTTP

Prefer Streamable HTTP. --transport sse is deprecated (MCP spec SEP-2577); main() logs a migration warning and does not advertise /sse as the client path.

uvx --from mcp-server-smartsheet-rm smartsheet-rm-mcp --transport streamable-http --host 127.0.0.1 --port 8000

Connect clients to http://127.0.0.1:8000/mcp (FastMCP's default Streamable HTTP path). run(transport="streamable-http") does not set a custom path. Binding to 0.0.0.0 or :: requires an explicit --allowed-host (a wildcard * is rejected).


๐Ÿ›ก๏ธ Safety & Reliability

  • Secret Redaction: API tokens, bearer headers, and sensitive keys are automatically scrubbed from errors and logs.

  • Destructive Gates: Every deletion tool declares confirm: bool = False and rejects execution unless the caller explicitly passes confirm=True.

  • Profile Filtering: Minimize token footprint by loading only relevant tool sets (time, projects, admin).

  • Resilience: Exponential backoff with randomized jitter on HTTP 429 rate limits.


๐Ÿงช Testing & Validation

# Run tests with 100% coverage requirement
pytest --cov=src/smartsheet_rm_mcp --cov-fail-under=100 -v

# Run Tool Contract verification
python scripts/check_tool_contract.py

# Run OpenAPI Drift check
python scripts/check_openapi_drift.py

Available Tools

98 tools
admin_create_clientAdmin Create ClientC

Create a new client record.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
nameYes
stateNo
addressNo
countryNo
zipcodeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare the operation is non-read-only, non-idempotent, non-destructive and open-world, so the safety profile is covered. The description adds nothing beyond that: no required permissions, no duplicate-name behavior, no mention of which fields are mandatory, and no note on side effects such as creating related records.

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

Conciseness3/5

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

A single front-loaded sentence with zero filler, which is structurally clean. The problem is under-specification rather than verbosity, so it is concise but does not earn much informational value.

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

Completeness2/5

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

For a mutation tool with six parameters, one required field, and no schema documentation, the description should at minimum state the required field and any creation constraints. An output schema exists, so return values need not be explained, but the input-side completeness is inadequate.

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

Parameters2/5

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

Schema description coverage is 0% across 6 parameters, so the description is the only place semantics could be added, yet it mentions no parameters at all. The field names (name, address, city, state, country, zipcode) are largely self-explanatory, which prevents a 1, but the description does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Create a new client record'), so an agent immediately knows this is the creation counterpart to admin_get_client/admin_update_client/admin_delete_client. However, it offers no differentiation from adjacent create tools such as admin_create_client_contact or admin_create_user, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus admin_create_client_contact, admin_update_client, or admin_create_user, and no prerequisites or conditions are stated. The agent must infer usage purely from the name.

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

admin_create_client_contactAdmin Create Client ContactC

Add a contact for a client.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
phoneNo
titleNo
client_idYes
last_nameYes
first_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare the full safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true), so the agent knows this is a non-idempotent write. The description adds nothing beyond that โ€” no note on auth/permission requirements, duplicate-handling behavior, or whether the contact is attached to an existing client only. With annotations carrying the load, the description's zero added behavioral context warrants a low score.

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

Conciseness3/5

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

It is a single front-loaded sentence with no filler, which is structurally clean. However, at this size it is under-specified rather than concise โ€” the brevity comes at the cost of missing information an agent needs.

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

Completeness2/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. But for a 6-parameter mutation tool with 0% schema description coverage and no usage context, the description is far too thin to let an agent call it confidently.

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

Parameters1/5

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

Schema description coverage is 0% across 6 parameters, so the description carries the full burden of explaining them โ€” and it explains none. Only the vaguest hint of a client association is implied by "for a client"; the three required fields (client_id, first_name, last_name) and the optional email/phone/title fields are never mentioned.

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

Purpose4/5

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

The description gives a specific verb ("Add") and resource ("a contact for a client"), which is clear enough to distinguish it from siblings like admin_create_client or admin_update_client. It stops short of explicitly naming the sibling boundary (e.g., that this creates a client-contact record, not a client), so it is clear but not sibling-differentiating.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g., client must already exist), and no reference to the adjacent tools admin_list_client_contacts or admin_delete_client_contact. The agent is left to infer that this is the creation path for the contact resource.

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

admin_create_custom_fieldAdmin Create Custom FieldA

Create a custom field definition (field_type: text, number, select, date; target_type: Project, User, Phase).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
optionsNo
field_typeYes
target_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the mutation profile: readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds the allowed field/target types but does not disclose permissions, side effects, or the relationship between field_type='select' and the optional options parameter.

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

Conciseness5/5

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

A single front-loaded sentence with a compact parenthetical list. There is no filler, and the most important information appears first.

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

Completeness3/5

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

An output schema exists, and annotations cover the safety profile, so return values need not be described. However, with 0% schema coverage and missing usage/parameter details, the description is only moderately complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It supplies allowed values for field_type and target_type, which the schema does not, but it leaves required 'name' and optional 'options' undocumented, including when options should be used.

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

Purpose5/5

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

The description states a specific verb and resource: 'Create a custom field definition.' It also enumerates allowed values for field_type and target_type, making the tool's purpose unambiguous against list/get/update/delete siblings.

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

Usage Guidelines2/5

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

No when-to-use guidance is provided. It does not mention alternatives such as admin_update_custom_field or admin_list_custom_fields, nor any prerequisites or conditions for creating a custom field.

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

admin_create_disciplineAdmin Create DisciplineC

Create a new discipline.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety and idempotency profile is covered by structured data. The description adds nothing beyond that: no note on required privileges, uniqueness of the discipline name, or what side effects creation triggers.

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

Conciseness3/5

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

One short, front-loaded sentence with zero filler, so it is concise and well-structured. However, the brevity is achieved by omission rather than by precision, so it reads as under-specified rather than efficient.

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

Completeness2/5

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

The existence of an output schema means return values need not be described, which helps. Still, for a mutation tool in the admin surface, the definition supplies no permission requirements, no name-uniqueness or validation rules, and no guidance on the surrounding discipline workflow, leaving the agent materially under-informed.

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

Parameters2/5

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

Schema description coverage is 0%: the single required parameter "name" is typed as a plain string with no description, constraints, or format. The description does not compensate in any way, leaving the agent to guess whether the value is a display label, a code, or must be unique.

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

Purpose2/5

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

"Create a new discipline" is essentially a restatement of the tool name and title (Admin Create Discipline), which is the textbook tautology case. It does identify a verb and resource, so it is not misleading, but it conveys nothing an agent could not read off the name itself, and it draws no distinction from admin_update_discipline or admin_delete_discipline.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g. admin permission required), and no mention of the sibling CRUD operations. The agent must infer entirely from the name that this is the create-side of the discipline lifecycle.

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

admin_create_expenseAdmin Create ExpenseC

Log a project expense item.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
notesNo
amountYes
user_idYes
project_idYes
is_billableNo
expense_category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true. The description adds nothing beyond this: it does not mention that the call is non-idempotent (repeated calls create duplicate expenses) nor that it references external entities. With annotations covering the safety profile, the remaining non-idempotency caveat is exactly the kind of context that should have been stated and is not.

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

Conciseness3/5

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

The single sentence is front-loaded and wastes no words, but its brevity stems from under-specification rather than discipline. It is a minimum-viable one-liner, not a compact but complete definition.

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

Completeness2/5

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

An output schema exists, so return values need not be described. But for a 7-parameter mutation tool with zero schema description coverage, no usage guidance and no behavioral notes beyond the annotations, the definition leaves too much for the agent to guess in order to call it correctly.

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

Parameters1/5

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

Schema description coverage is 0% across 7 parameters, five of them required, and the description says nothing about any of them. Critical semantics such as whether amount is in major or minor units, the expected date format, and that user_id/project_id/expense_category_id accept either integers or strings are entirely undocumented.

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

Purpose3/5

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

The description states a specific verb (log/create) and resource (project expense item), so the operation is identifiable. However, it gives no differentiation from the many sibling expense tools (admin_update_expense, admin_delete_expense, admin_list_expenses) or from admin_create_expense_category, which share the same domain prefix.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus admin_update_expense or admin_list_expenses, no prerequisites (e.g. that project_id, user_id and expense_category_id must reference existing records), and no exclusions. The agent is left to infer everything from the name.

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

admin_create_expense_categoryAdmin Create Expense CategoryC

Create an expense category.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds nothing beyond that safety profileโ€”it does not mention authentication requirements, uniqueness constraints on category names, or any side effects. No contradiction, but no added behavioral context either.

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

Conciseness2/5

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

The one-sentence description is short but does not earn its place: it merely repeats the tool title. This is under-specification rather than useful conciseness.

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

Completeness2/5

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

For a create tool with an output schema and annotations, the description still omits all parameter semantics and creation constraints. The structured fields provide the safety profile and return shape, but the description leaves the agent without enough context to invoke the tool confidently beyond the obvious resource name.

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

Parameters2/5

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

Schema description coverage is 0% for the single required 'name' parameter. The description does not compensate by explaining format, uniqueness, or any constraints on the name. The agent gets no semantic detail beyond the bare parameter name.

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

Purpose2/5

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

The description restates the title and tool name almost verbatim: 'Create an expense category.' It states a verb and resource but offers no differentiation from sibling tools such as admin_list_expense_categories or admin_delete_expense_category. This is a tautological restatement rather than a clarifying purpose statement.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description gives no usage context whatsoever.

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

admin_create_holidayAdmin Create HolidayC

Create a new company holiday or non-working day.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
nameYes
end_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds almost nothing beyond that: it doesn't say whether creating a duplicate name is allowed, what happens to overlapping dates, or that it affects company-wide non-working days. The phrase "or non-working day" is the only semantic addition.

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

Conciseness4/5

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

One short, front-loaded sentence with no filler. It is appropriately sized for a simple create tool, though it is terse to the point of under-specification rather than genuinely efficient.

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

Completeness2/5

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

For a three-parameter mutation with 0% schema coverage and no annotation-adjacent detail in the description, the definition is too thin. An output schema exists so return values need no explanation, but the date format, end_date behavior, and name uniqueness are all left undocumented.

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

Parameters2/5

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

Schema description coverage is 0% and the description mentions none of the three parameters. The existence of end_date (optional, nullable) implies multi-day holidays, but neither the schema nor the description explains its semantics or the date format. The description does not compensate for the documentation gap.

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

Purpose4/5

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

States a specific verb and resource: "Create a new company holiday or non-working day." An agent can immediately tell this creates a holiday record. It does not differentiate itself from admin_update_holiday or admin_create_leave_type, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this versus admin_update_holiday (for existing holidays) or admin_create_leave_type (for leave categories). No prerequisites or permissions mentioned. The agent must infer context from the tool name alone.

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

admin_create_leave_typeAdmin Create Leave TypeC

Create a new leave type.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond 'create' - it says nothing about required permissions, whether leave type names must be unique, or what happens on duplicates.

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

Conciseness3/5

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

One short, front-loaded sentence with no wasted words. However, the brevity reflects under-specification rather than disciplined conciseness, since nothing beyond the tool name is communicated.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Still, for a mutation tool whose only input is an undocumented 'name' field, the description omits everything an agent would need to invoke it confidently.

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

Parameters2/5

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

The single parameter 'name' has 0% schema description coverage, so the schema does not explain its format, constraints, or uniqueness. The description does not compensate - it never mentions the parameter at all.

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

Purpose4/5

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

The description states a specific verb and resource ('Create a new leave type'), so an agent knows exactly what the tool does. It does not differentiate itself from the many sibling admin_create_* tools (holiday, role, discipline, tag, etc.), which all share the same verb pattern.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as admin_update_leave_type or admin_list_leave_types, nor any stated preconditions. The one-line description leaves all routing to inference from the tool name alone.

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

admin_create_roleAdmin Create RoleC

Create a new role.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and openWorldHint=true, and "Create" is consistent with them (no contradiction). The description adds nothing beyond that profile: no mention of side effects, uniqueness constraints on role names, whether duplicate creation fails, or what access level is needed.

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

Conciseness3/5

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

The single sentence is front-loaded and free of waste, but it is under-specified rather than genuinely concise โ€” there is simply almost no content to structure.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. For a mutating, non-idempotent, open-world creation tool with an undocumented required parameter, however, the description is too thin: it omits conflict/duplicate behavior, permission requirements, and how the new role relates to sibling role-management tools.

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

Parameters2/5

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

There is one required parameter (name) with 0% schema description coverage, so the description carries the burden of explaining it. It does not: nothing is said about whether name must be unique, its format, or whether roles require additional configuration to be usable.

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

Purpose3/5

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

The description states a verb and resource ("Create a new role"), so the agent knows this is a creation operation rather than the sibling update/delete/list variants. However, it is essentially a restatement of the tool name and title, adding no scope, target-system detail, or differentiation beyond what the identifier already conveys.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus admin_update_role or admin_delete_role, nor any prerequisites such as required permissions or whether the role must later be populated with permissions. Usage must be fully inferred from the name.

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

admin_create_tagAdmin Create TagD

Create a tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that โ€” no tag-name uniqueness constraint, no permission requirements, and no note on what happens if a duplicate tag exists, which matters for a non-idempotent create.

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

Conciseness2/5

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

Three words are technically front-loaded and waste-free, but this is under-specification rather than conciseness. The brevity removes information instead of compressing it.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a non-idempotent create operation the description should still cover input constraints and failure behavior. The description leaves the agent with only the tool name to work from.

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

Parameters1/5

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

Schema description coverage is 0% and the single required "name" parameter has no description in the schema or the description text. The agent learns nothing about naming rules, length limits, or whether the value must be unique.

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

Purpose2/5

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

"Create a tag." only restates the tool name (admin_create_tag / Admin Create Tag) with no additional specificity. It never distinguishes this from admin_list_tags or admin_delete_tag, so the agent gets no more information than the identifier already carries.

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

Usage Guidelines2/5

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

There is no guidance on when to create a tag versus listing or deleting one, no prerequisites, and no mention of the sibling tools. The agent must infer everything about context from the name alone.

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

admin_create_userAdmin Create UserC

Create a new user profile in Smartsheet RM.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
emailYes
locationNo
bill_rateNo
cost_rateNo
last_nameYes
disciplineNo
first_nameYes
user_type_idNo
billability_targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already disclose the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the create-and-write nature is covered. The description adds nothing beyond this โ€“ no mention of whether the email must be unique, whether an invitation/notification is sent, required role assignment, or what happens on duplicate creation.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or redundancy. It is efficient, though arguably under-specified rather than appropriately sized for a 10-parameter mutation tool.

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

Completeness2/5

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

An output schema exists so return values need not be described, but with 10 parameters at 0% schema coverage and no usage or behavioral guidance, the definition is far too thin for a create tool that mutates an open-world system.

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

Parameters1/5

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

Schema description coverage is 0% across 10 parameters, so the description carries the full burden of explaining them โ€“ and it names none. Non-obvious fields like user_type_id, billability_target, bill_rate, cost_rate, and discipline are left entirely unexplained.

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

Purpose4/5

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

The description states a specific verb and resource ('Create a new user profile'), which is clearly identifiable. However, it offers no differentiation from siblings like admin_update_user or admin_create_user_bill_rate, so the agent must rely on the name alone to route correctly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus admin_update_user, admin_create_role, or any of the other admin_create_* siblings. No prerequisites, no exclusions, no context about what 'profile in Smartsheet RM' entails.

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

admin_create_user_bill_rateAdmin Create User Bill RateB

Add a bill rate tier with an effective date range for a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
rateYes
user_idYes
end_dateNo
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the write/non-destructive/non-idempotent profile is covered. The description adds the meaningful detail that tiers are date-ranged ('effective date range'), but omits permissions needed, overlap behavior, and what happens on re-invocation despite idempotentHint=false.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted words, though it is arguably too terse for a 4-parameter mutation tool with no schema documentation.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Still, for a write tool with 0% schema description coverage, the description lacks date formats, rate units, and conflict-handling detail an agent would need to call it correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden. It conceptually maps all four parameters (rate, user_id, start_date/end_date as the 'effective date range'), which is useful, but adds no format, unit, or currency details and says nothing about whether an end_date is optional or how overlapping tiers are handled.

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

Purpose4/5

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

The description gives a specific verb ('Add') and resource ('bill rate tier ... for a user') and indicates the tier is date-scoped, which lets an agent distinguish it from admin_list_user_bill_rates and admin_create_user. It does not, however, explicitly name or contrast a sibling tool.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as admin_list_user_bill_rates for viewing existing tiers. No prerequisites or exclusions are given, leaving the agent to infer usage entirely.

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

admin_create_webhookAdmin Create WebhookC

Register a webhook subscription (e.g. 'time.entry.created', 'project.updated', 'assignment.created').

ParametersJSON Schema
NameRequiredDescriptionDefault
event_typeYes
callback_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already disclose that this is a non-read-only, non-idempotent mutation with open-world effects, so the safety profile is covered. The description adds nothing beyond that: it doesn't say a POST is issued to callback_url, whether duplicate subscriptions are possible (idempotentHint=false), or that delivery is asynchronous/at-least-once.

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

Conciseness4/5

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

One tight, front-loaded sentence with concrete examples and no filler. It is efficient, though it is arguably too sparse for a mutation tool rather than padded.

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

Completeness2/5

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

An output schema exists so return values needn't be described, but for an open-world webhook registration the description omits callback delivery semantics, duplicate handling, permission requirements, and whether event_type is an open string or a fixed enum. These gaps are material for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% for both required parameters. The examples ('time.entry.created', 'project.updated') give real value for the event_type string, but callback_url is left entirely unexplained and there is no indication whether the listed event types are the full set or a sample.

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

Purpose4/5

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

States a specific verb and resource: 'Register a webhook subscription', which clearly distinguishes it from admin_list_webhooks and admin_delete_webhook. The event-type examples reinforce what a subscription is, but the description never explicitly contrasts itself with those siblings.

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

Usage Guidelines2/5

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

No guidance on when to register a webhook versus using the list/delete siblings, and no prerequisites such as admin scope or a reachable, publicly resolvable callback endpoint. The agent must infer all of this from the tool name.

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

admin_delete_clientAdmin Delete ClientB
Destructive

Delete a client record (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
client_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered structurally; the description nonetheless adds a real, non-annotation behavior โ€” the confirm=True guard โ€” which is essential to a successful call. It stops short of saying what else is destroyed (e.g. linked contacts) or what permissions are needed.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the destructive warning and the confirm requirement come immediately after the verb phrase. Nothing is wasted, though the parenthetical packs two distinct facts (destructiveness, confirm) into one clause.

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

Completeness3/5

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

With an output schema present, return values need not be described, and annotations cover the destructive profile. Still missing for a destructive mutation: cascade/blast radius, reversibility, and required permissions, plus any client_id guidance.

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

Parameters2/5

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

Schema description coverage is 0% for two parameters. The description clarifies the semantics of confirm (it must be True to proceed), but says nothing about client_id โ€” neither its accepted types (integer or string per the schema) nor how to obtain a valid value.

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

Purpose4/5

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

States a specific verb and resource ("Delete a client record"), which separates it from admin_delete_client_contact and the other delete siblings in the admin family. It does not explicitly name the nearest alternative, but the resource noun is precise enough for an agent to route correctly.

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

Usage Guidelines3/5

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

The description implies its usage (this is the delete path for a client) and gives one invocation prerequisite, confirm=True, but never states when to prefer it over admin_update_client or what to do when a delete is not appropriate. Usage is inferable rather than stated.

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

admin_delete_client_contactAdmin Delete Client ContactB
Destructive

Delete a client contact (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
client_idYes
contact_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the destructive nature is covered structurally. The description adds the non-obvious fact that confirm=True is mandatory (the schema only shows a boolean defaulting to false), which is genuinely useful. However, it does not disclose side effects such as cascading deletions or referential impact.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler; the destructive warning is embedded economically and nothing is redundant.

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

Completeness3/5

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

With an output schema present, return values need no explanation, and annotations cover the safety profile. The remaining gap is behavioral detail about what deletion entails and confirmation of the id parameters, making this minimally adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0% across 3 parameters, so the description must compensate. It only addresses the confirm parameter, leaving client_id and contact_id entirely undocumented in both schema and description (their meaning is only inferable from their names).

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

Purpose4/5

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

The description states a specific verb (Delete) and resource (a client contact), so an agent immediately understands the operation. It does not explicitly distinguish itself from closely-named siblings like admin_delete_client or admin_create_client_contact, relying on the tool name to carry that differentiation.

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

Usage Guidelines2/5

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

The only guidance is the prerequisite 'requires confirm=True', which is a call mechanic rather than when-to-use direction. There is no mention of when this tool is appropriate versus alternatives, no prerequisites about the contact, and no exclusions.

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

admin_delete_custom_fieldAdmin Delete Custom FieldA
Destructive

Delete a custom field definition (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
custom_field_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral information the annotations do not carry: the call requires confirm=True. It still omits downstream effects (e.g., whether stored values are destroyed) and any permission requirements.

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

Conciseness5/5

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

A single sentence that front-loads the action and appends the critical precondition in parentheses. Nothing is redundant and nothing is buried.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and annotations cover the destructive profile. However, with zero schema description coverage the description should say more about what deletion entails and what the call requires, and it does not fully close that gap for a permanent, non-idempotent mutation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter burden, and it only partially does: it documents the confirm gate and the value it must take. The custom_field_id parameter, including its int-or-string anyOf shape, is left entirely undocumented.

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

Purpose4/5

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

States a specific verb and resource ('Delete a custom field definition'), which implicitly separates it from sibling operations like admin_set_custom_field_values and admin_update_custom_field. It does not explicitly name a sibling or contrast scope, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to delete a definition versus updating it or clearing values, nor any prerequisites beyond the inline confirm flag. The agent must infer the usage context entirely from the tool name and the deletion semantics.

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

admin_delete_disciplineAdmin Delete DisciplineA
Destructive

Delete a discipline (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
discipline_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the destructive nature is covered structurally. The description adds value beyond them by disclosing the confirm=True guard, but it says nothing about cascading effects (what happens to users or records referencing the discipline) or reversibility.

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

Conciseness5/5

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

One sentence, front-loaded with the action, and the parenthetical adds the highest-value constraint without padding. Nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. What remains missing for a destructive admin mutation is the blast radius of the deletion and any permission prerequisites, leaving the definition minimally viable.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden for two parameters. It documents the confirm parameter's requirement (must be True) but adds nothing about discipline_id's accepted forms, even though the schema allows either integer or string.

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

Purpose4/5

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

States a specific verb and resource ('Delete a discipline'), which cleanly separates it from the sibling admin_list_disciplines, admin_create_discipline, and admin_update_discipline. It does not explicitly name those siblings, but the verb makes the distinction unambiguous.

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

Usage Guidelines3/5

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

The description supplies one real precondition, confirm=True, which is a genuine usage gate for invoking this tool. It offers no when-not-to-use guidance and does not point to alternatives such as admin_update_discipline or admin_list_disciplines, so usage is only implied.

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

admin_delete_expenseAdmin Delete ExpenseA
Destructive

Delete an expense item (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
expense_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered; the description adds real value beyond them by disclosing the confirm=True gate, which is not documented anywhere in the schema. It omits other declared traits (non-idempotent, open-world), but the confirm requirement is the operationally important addition.

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

Conciseness4/5

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

A single sentence with zero filler, and the destructive/confirm warning is front-loaded in a parenthetical where it will be read. It is tight, though arguably terse given the tool is irreversible.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description supplies the one thing the structured fields lack, the confirm gate; only the expense_id identifier format is left for the agent to infer.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden for two parameters. It explains confirm (must be True) but says nothing about expense_id's accepted form despite the schema allowing either integer or string, leaving half the parameters undocumented.

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

Purpose4/5

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

The description gives a specific verb and resource ("Delete an expense item"), and the word "item" implicitly separates it from the sibling admin_delete_expense_category. It is clear on its own, but it never names a sibling or scope constraint to make routing unambiguous.

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

Usage Guidelines3/5

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

It states a precondition ("requires confirm=True") which is a genuine usage rule, but offers no when-to-use vs. when-not guidance and no pointer to alternatives such as admin_update_expense or admin_list_expenses. Usage is only implied by the verb.

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

admin_delete_expense_categoryAdmin Delete Expense CategoryA
Destructive

Delete an expense category (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description still adds genuine value by disclosing the confirm=True gate, which the schema does not document (0% coverage) and which would otherwise cause silent failures. It stops short of saying what happens to dependent expenses or whether the delete cascades.

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

Conciseness5/5

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

A single sentence with the verb and resource front-loaded and the destructive/confirm constraint appended where it is most needed. No filler, no repetition of the title.

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

Completeness4/5

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

For a two-parameter destructive delete with an output schema already covering return values and annotations covering the safety profile, the description supplies the one thing structured data omits: the confirm requirement. Missing only consequence details (cascade behavior, failure when the category is in use), which are secondary here.

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

Parameters3/5

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

Schema description coverage is 0% for two parameters, so the description must compensate. It does explain the semantics of 'confirm' (must be True to proceed), but says nothing about 'category_id' โ€” notably that it accepts either an integer or a string, a non-obvious anyOf the schema leaves unexplained.

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

Purpose4/5

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

States a specific verb (Delete) and resource (expense category), which cleanly separates it from the adjacent admin_delete_expense and admin_delete_tag siblings. It does not explicitly name those siblings or contrast scope, but the resource noun is unambiguous.

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

Usage Guidelines3/5

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

The parenthetical 'requires confirm=True' gives an actionable precondition for invoking the tool, which is real usage guidance. However, there is no statement of when to prefer deletion over deactivation, no warning about categories still referenced by expenses, and no mention of the admin permission scope implied by the name.

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

admin_delete_holidayAdmin Delete HolidayB
Destructive

Delete a holiday (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
holiday_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the 'Destructive' label is largely redundant. The genuinely additive piece is that confirm=True is required, which is real behavioral information the annotations do not convey. It still omits what else is affected (e.g. whether holiday references in timesheets break) and whether the delete is recoverable.

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

Conciseness4/5

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

A single short sentence with the destructive constraint front-loaded in parentheses. No wasted words, though the parenthetical could be better integrated as a precondition sentence.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, for a destructive tool with zero schema description coverage and no sibling routing guidance, the definition leaves an agent without enough to safely call it โ€” the holiday_id format and side effects are missing.

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

Parameters2/5

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

Schema coverage is 0%, so the description must carry parameter meaning. It explains the confirm flag's role, but holiday_id is left entirely unexplained โ€” notably its anyOf integer/string type and which form to use. Only half the parameters are covered, leaving a real gap.

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

Purpose4/5

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

States a specific verb and resource ('Delete a holiday'), which is unambiguous and easily distinguished from admin_update_holiday / admin_create_holiday by name. It does not explicitly name siblings, but the operation is clear enough that an agent can select it correctly.

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

Usage Guidelines2/5

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

No guidance on when to delete vs. update or archive a holiday, no prerequisites, no warning about consequences. The only usage-like content is the confirm=True requirement, which is a mechanical gate rather than selection guidance.

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

admin_delete_leave_typeAdmin Delete Leave TypeA
Destructive

Delete a leave type (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
leave_type_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description earns credit by adding the confirm=True gate, which is not derivable from the annotations and only weakly visible in the schema (confirm defaults to false). It still says nothing about what happens to leave types already referenced by users.

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

Conciseness5/5

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

A single short sentence with the destructive warning and the confirm requirement front-loaded. No filler.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and annotations cover the safety profile. However, for a destructive, non-idempotent delete the description omits irreversibility, any in-use/referential-integrity effects, and permission requirements.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It partially compensates by explaining the confirm gate, but leave_type_id is left entirely undocumented despite being the required parameter.

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

Purpose4/5

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

States a specific verb and resource ("Delete a leave type"), which cleanly separates it from the admin_list/get/create/update_leave_type siblings in the same family. It does not explicitly name those siblings, but the verb alone is unambiguous.

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

Usage Guidelines3/5

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

The description supplies the critical invocation precondition ("requires confirm=True"), which implies when the tool will actually execute, but it gives no context on when deletion is appropriate versus other leave-type operations, and names no alternatives.

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

admin_delete_roleAdmin Delete RoleA
Destructive

Delete a role (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
role_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the 'Destructive' label is largely redundant. The added value is the confirm=True requirement, which is a behavioral gate an agent must satisfy for the call to succeed and is not stated in the annotations themselves.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the destructive warning and the confirm gate are both surfaced immediately.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, for a destructive admin mutation the description omits blast radius (role reassignment of users) and role_id format, leaving meaningful gaps for correct invocation.

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

Parameters3/5

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

Schema description coverage is 0% for 2 parameters, so the description must compensate. It does explain the confirm parameter's required value, but role_id gets no explanation of accepted formats (integer or string) or sourcing. Partial compensation only.

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

Purpose4/5

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

States a specific verb and resource ('Delete a role'), which cleanly separates it from the admin_create_role, admin_update_role, and admin_list_roles siblings. It stops short of explicitly naming those alternatives, so it is clear but not sibling-differentiating.

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

Usage Guidelines3/5

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

The parenthetical gives a hard precondition (confirm=True must be set), which is genuine usage guidance. However, there is no when-to-use vs. update/disable guidance and no warning about consequences (e.g., what happens to users holding the role).

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

admin_delete_tagAdmin Delete TagB
Destructive

Delete a tag (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_idYes
confirmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and non-idempotency, so the safety profile is covered structurally. The description adds the genuinely useful fact that confirm=True is required, but says nothing about irreversibility, what happens to entities carrying the tag, or required permissions.

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

Conciseness4/5

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

A single short sentence with the destructive constraint front-loaded inside parentheses; nothing is padded. It is tight, though the parenthetical could be promoted to a clearer standalone clause.

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

Completeness3/5

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

An output schema exists, so return values need no explanation. For a destructive mutation with 0% schema coverage the description is minimally adequate: it covers the confirm gate but omits irreversibility, side effects on tagged entities, and tag_id semantics.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate; it explains the confirm parameter's role, which is real added value. However, tag_id is left unexplained, including why it accepts either an integer or a string.

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

Purpose4/5

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

States a specific verb (Delete) and resource (tag), which cleanly separates it from admin_list_tags and admin_create_tag in the sibling set. It stops just short of naming the alternative siblings or scope (e.g., admin-scoped only), so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to delete a tag versus other operations, no prerequisites (permissions), and no warning about consequences. The parenthetical hints at destructive intent but gives no usage context or alternatives.

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

admin_delete_userAdmin Delete UserB
Destructive

Delete or archive a user (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is largely covered. The description usefully adds the confirm=True requirement, which is not visible in the schema defaults, but it never clarifies whether the outcome is permanent deletion or a recoverable archive.

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

Conciseness4/5

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

A single sentence with no filler, and the destructive nature plus the confirm precondition are front-loaded. The concision is slightly bought at the cost of the delete-vs-archive ambiguity.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a destructive, non-idempotent mutation the critical confirm gate is covered, but the unresolved delete/archive distinction and the undocumented user_id formats leave gaps.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry the burden: it does explain the non-obvious confirm=True requirement, which matches the parameter's default of false. It says nothing about user_id's accepted forms (integer or string), leaving half the parameters unexplained.

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

Purpose4/5

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

States a specific verb and resource ("Delete or archive a user") that clearly distinguishes it from siblings like admin_list_users, admin_get_user, and admin_update_user. The "or archive" wording leaves some ambiguity about which operation actually occurs, which keeps it short of a 5.

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

Usage Guidelines3/5

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

It signals a destructive operation and names the required confirm=True gate, which is a usage precondition. It does not say when to choose delete/archive over an alternative such as admin_update_user for deactivation, so routing guidance is only implied.

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

admin_delete_webhookAdmin Delete WebhookA
Destructive

Delete a webhook subscription (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
webhook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the operation is gated on confirm=True. It stops short of saying what happens if confirm is omitted or false (the schema default is false), leaving the failure mode unspecified.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. The destructive warning and confirm gate are placed immediately after the action, where an agent will see them.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a destructive mutation the description covers the essential confirm requirement, but omits the consequence of omitting confirm, whether deletion is permanent, and any auth/permission expectations โ€” gaps that matter for a destructive admin operation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the confirm parameter's required value, which is real added meaning, but says nothing about webhook_id (its int-or-string form, where to obtain it, or whether it is reusable after deletion). Partial compensation warrants the baseline-ish 3.

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

Purpose4/5

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

States a specific verb+resource ('Delete a webhook subscription') that is unambiguous and clearly separable from the sibling admin_create_webhook and admin_list_webhooks. It does not explicitly route against those siblings, but the action plus resource name is enough for an agent to tell them apart.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as admin_list_webhooks for identifying the target webhook_id first. The parenthetical only restates the destructive nature already implied by the name.

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

admin_get_clientAdmin Get ClientC
Read-onlyIdempotent

Get details for a specific client.

ParametersJSON Schema
NameRequiredDescriptionDefault
client_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds no behavioral context whatsoever โ€” nothing about permissions, failure modes for nonexistent IDs, or lookup scope. With annotations doing all the work, this is a bare-minimum contribution.

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

Conciseness4/5

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

A single short sentence with no filler, appropriately front-loaded. It is brief rather than bloated โ€” the low score elsewhere reflects under-specification, not verbosity.

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

Completeness3/5

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

An output schema exists, so return values need not be described. What is missing is the identifier format and any usage context; for a simple one-parameter lookup this is borderline adequate but clearly thin.

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

Parameters2/5

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

One required parameter with 0% schema description coverage. The description only implies 'client_id' via the word 'client'; it does not explain that the ID accepts either an integer or a string, nor what form of identifier is expected. It fails to compensate for the documentation gap.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('client'), and the resource name distinguishes it from the other admin_get_* siblings. However, it does not explicitly differentiate itself from admin_list_clients or explain the scope of 'details'.

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

Usage Guidelines2/5

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

No when-to-use context is given, and the obvious alternative (admin_list_clients) is never mentioned. The agent must infer that this is the single-record lookup counterpart to the list tool.

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

admin_get_custom_fieldAdmin Get Custom FieldC
Read-onlyIdempotent

Get details of a custom field definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
custom_field_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered without the description. The description adds nothing beyond the purpose sentence - no note on which definition types are supported, whether inactive/deleted fields are returned, or any auth/scope requirement.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient, though at this length it is arguably under-specified rather than optimally concise.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. What remains missing is context the structured fields cannot supply: the distinction between a custom field definition and custom field values, and the expected identifier format.

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

Parameters2/5

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

One required parameter with 0% schema description coverage: custom_field_id is typed only as anyOf integer|string with no explanation. The description does not clarify what form of identifier is expected (numeric ID vs. string key) or where to obtain it, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (Get) and resource (details of a custom field definition), which clearly marks it as a single-item lookup as opposed to the sibling admin_list_custom_fields. It stops short of explicitly naming or distinguishing itself from siblings, but the singular 'definition' does the disambiguating work.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g. where a custom_field_id comes from), and no mention of alternatives such as admin_list_custom_fields or admin_list_custom_field_values. The agent must infer usage entirely from the name.

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

admin_get_expenseAdmin Get ExpenseB
Read-onlyIdempotent

Get details for a specific logged expense.

ParametersJSON Schema
NameRequiredDescriptionDefault
expense_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds only the word 'logged', hinting it operates on persisted rather than draft expenses, but says nothing about admin-level permissions or behavior on a missing/invalid id.

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

Conciseness4/5

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

A single short sentence with the action and target front-loaded and no filler. It is efficient, though so terse that it borders on under-specification rather than true conciseness.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the tool is a simple read with one parameter. Still, the identifier's origin and the int-or-string ambiguity are left entirely unresolved for a tool an agent must call correctly.

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

Parameters2/5

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

The sole parameter expense_id has 0% schema description coverage and the description provides no compensating meaning. It does not explain that the id comes from admin_list_expenses, nor address the unusual anyOf integer|string type. This is the one place the description had room to add real value and it did not.

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

Purpose4/5

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

The description states a clear verb+resource: 'Get details for a specific logged expense.' An agent knows it retrieves one expense record. However, it never distinguishes itself from the adjacent admin_list_expenses sibling, so the differentiation is left implicit.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g., needing an expense_id obtained from admin_list_expenses), and no named alternative. The single sentence offers no routing information at all.

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

admin_get_holidayAdmin Get HolidayC
Read-onlyIdempotent

Get details for a specific holiday.

ParametersJSON Schema
NameRequiredDescriptionDefault
holiday_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is fully covered by structured data. The description contributes nothing beyond that โ€” no note on permissions, error behavior for a missing/invalid ID, or lookup semantics โ€” so it adds no behavioral value.

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

Conciseness3/5

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

One short sentence, front-loaded and free of padding, so it is not verbose. But it is under-specified rather than genuinely concise โ€” the brevity comes from omitting useful information.

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

Completeness2/5

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

Although an output schema exists (so return values need not be described), the definition omits parameter format, ID source, and any routing hint versus admin_list_holidays. For a lookup tool with 0% schema description coverage, this leaves real gaps.

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

Parameters2/5

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

Schema description coverage is 0% and the single holiday_id parameter accepts an anyOf of integer or string with no explanation of which form is valid or where to obtain the ID. The description's phrase 'specific holiday' adds no meaning beyond what the schema already shows.

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

Purpose3/5

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

Names a verb (Get) and a resource (holiday), and 'specific' implies a single-item lookup, which distinguishes it loosely from admin_list_holidays. However it never names the sibling it contrasts with and gives no scope detail, so the agent must infer the distinction from the tool name alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives such as admin_list_holidays. The agent is left to infer that a known holiday_id is required.

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

admin_get_leave_typeAdmin Get Leave TypeC
Read-onlyIdempotent

Get details for a specific leave type.

ParametersJSON Schema
NameRequiredDescriptionDefault
leave_type_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered elsewhere. The description adds nothing on top of that - no note on lookup behavior, error/not-found semantics, or auth requirements - so it contributes no incremental 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.

Conciseness3/5

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

A single short sentence with no wasted words, but its brevity comes from under-specification rather than disciplined compression. It is appropriately sized for a simple lookup but earns little.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the description still omits the identifier format for its one required parameter and any distinction from the sibling list/create/update/delete leave-type tools. For a lookup tool it is minimally adequate but leaves real gaps.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter leave_type_id is an anyOf of integer or string with no documentation in either place. The description does not clarify the accepted identifier format or which form callers should pass, leaving the only required input under-specified.

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

Purpose3/5

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

It states a verb (Get) and a resource (leave type) scoped to one item, which distinguishes it from the list variant by implication. However, "details" is vague and the sentence largely restates the name and title rather than saying what is actually returned.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of the obvious alternative admin_list_leave_types. The agent must infer that this is the by-ID lookup versus the collection listing.

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

admin_get_report_rowsAdmin Get Report RowsC
Read-onlyIdempotent

Generate detailed custom report rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_parametersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds nothing beyond that โ€“ notably it doesn't explain the opaque report_parameters blob, whether results are paginated, or how the open-world report schema is interpreted.

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

Conciseness3/5

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

A single short sentence that is front-loaded and wastes no words, but its brevity stems from under-specification rather than disciplined concision. There is room for another clause about report parameters without bloat.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, the one input is an entirely undocumented nested object and the relationship to the sibling admin_get_report_totals is unstated, leaving the agent without enough to call this correctly.

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

Parameters1/5

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

The single required parameter is a free-form object with additionalProperties:true and 0% schema description coverage, so the schema conveys zero semantics. The description must compensate and does not โ€“ the structure, keys, or expected report identifiers of report_parameters are never hinted at.

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

Purpose2/5

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

The description largely restates the tool name: 'Generate detailed custom report rows' vs. 'Admin Get Report Rows'. The only added words ('detailed', 'custom') don't tell an agent what distinguishes this from the sibling admin_get_report_totals or what a 'row' contains.

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

Usage Guidelines2/5

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

No guidance on when to use this versus admin_get_report_totals, which is the obvious alternative for report data. No prerequisites, no mention of whether rows and totals are meant to be called together or what report types are supported.

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

admin_get_report_totalsAdmin Get Report TotalsC
Read-onlyIdempotent

Generate aggregated custom report totals.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_parametersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds almost nothing beyond that โ€” no indication of auth requirements, scope of the aggregation, or cost/latency. The word 'Generate' could read as a mutation if the annotations weren't present, but it doesn't directly contradict them.

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

Conciseness3/5

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

One short, front-loaded sentence with no filler, so it is concise. But the brevity comes at the cost of substance rather than being tight-but-complete.

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

Completeness2/5

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

An output schema exists, so return values need no explanation. But for a tool whose only input is an untyped, undocumented nested object, the description should at minimum describe the shape of report_parameters; it leaves the agent unable to form a valid request.

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

Parameters1/5

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

The single required parameter 'report_parameters' is a free-form nested object with additionalProperties=true and 0% schema description coverage. The description provides no hint about which keys are accepted, so the agent has essentially nothing to construct a valid call.

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

Purpose3/5

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

States a verb (Generate) and a resource (aggregated custom report totals), and the 'totals' vs 'rows' wording loosely distinguishes it from the sibling admin_get_report_rows. However, 'custom report' is never defined and the scope of the aggregation is left vague.

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

Usage Guidelines2/5

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

No guidance on when to use this versus admin_get_report_rows or the many admin_list_* tools. The agent must infer that 'totals' means summarized output rather than row-level data, with no explicit conditions or exclusions given.

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

admin_get_userAdmin Get UserC
Read-onlyIdempotent

Get details for a specific user.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds nothing beyond that: it doesn't say what detail set is returned, whether admin privileges are required (the 'admin_' prefix implies it), or what happens for an unknown user_id.

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

Conciseness4/5

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

One short, front-loaded sentence with zero padding or redundancy. It is efficient, though its brevity is partly under-specification rather than disciplined concision.

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

Completeness3/5

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

An output schema exists, so return values needn't be explained, and the operation is simple (one parameter). However, with a polymorphic user_id and no sibling differentiation in a namespace containing several near-identical 'get user'-style tools, the description is thinner than an agent would like.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for the single user_id parameter and simply doesn't address it. The schema allows either an integer or a string, and the description gives no hint about which form is expected or whether the two are interchangeable.

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

Purpose4/5

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

The description pairs a clear verb ('Get') with a specific resource ('details for a specific user'), so the core purpose is unambiguous. It offers no differentiation from the many closely-related siblings (admin_list_users, admin_get_user_availability, admin_get_user_utilization), which is the only thing keeping it from a 5.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus admin_list_users or the user availability/utilization getters. No prerequisites, no exclusions, no alternative named. The agent must infer all routing from the tool name alone.

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

admin_get_user_availabilityAdmin Get User AvailabilityC
Read-onlyIdempotent

Query scheduled hours vs available capacity for a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNo
user_idYes
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds no behavior beyond that: nothing about whether omitted from_date/to_date default to a window, permission requirements, or what the availability comparison includes.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, which is the right size for a simple read. It is terse to the point of under-specification, but nothing is wasted.

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

Completeness2/5

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

An output schema exists so return values need not be described, but with 0% parameter coverage, no usage routing against the overlapping utilization sibling, and no behavioral detail, the definition is too thin for an agent to call it confidently.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, and the description never mentions user_id, from_date, or to_date. It doesn't clarify that user_id accepts either integer or string, nor what format the date strings take or what omitting them means.

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

Purpose4/5

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

States a specific verb (Query) and resource concept (scheduled hours vs available capacity for a user), so the operation is identifiable. However, it gives no differentiation from the near-identical sibling admin_get_user_utilization, which an agent would reasonably confuse it with.

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

Usage Guidelines2/5

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

There is no statement of when to use this over admin_get_user_utilization, admin_get_user, or the time_* tools, and no prerequisites or exclusions. Usage must be inferred entirely from the name and one-line description.

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

admin_get_user_statusesAdmin Get User StatusesB
Read-onlyIdempotent

Retrieve work status history for a specific user (ITO, WFH, SIC, OOO, VAC, OOF).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds only the domain vocabulary of status codes (ITO, WFH, SIC, OOO, VAC, OOF), saying nothing about auth scope, result volume, pagination, or time-range limits.

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

Conciseness4/5

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

A single compact sentence that front-loads the action and resource, with the status-code enumeration tucked in parenthetically. Nothing is wasted, though the brevity comes at the cost of missing context.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a user-scoped admin read tool the description omits parameter format, permission requirements, and any temporal scoping, leaving notable gaps.

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

Parameters2/5

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

With one required parameter and 0% schema description coverage, the description carries the full burden, but 'a specific user' only restates the obvious. It never clarifies whether user_id is a numeric ID, email, or username, despite the schema accepting both integer and string.

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

Purpose4/5

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

The description states a specific verb and resource ('Retrieve work status history for a specific user'), which is clearly distinct from the setter sibling admin_set_user_status and from admin_get_user. It does not explicitly name or differentiate itself from any sibling, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as admin_get_user or admin_get_user_availability, and no stated prerequisites (e.g., admin privileges). Usage is only inferable from the name.

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

admin_get_user_utilizationAdmin Get User UtilizationB
Read-onlyIdempotent

Get billable utilization metrics for a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNo
user_idYes
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds only the 'billable' qualifier to indicate the metric type; it says nothing about date-range scoping, aggregation window, or what the metrics contain.

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

Conciseness4/5

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

A single front-loaded sentence with zero padding. It is efficient, though its brevity contributes to the gaps noted in other dimensions rather than being a model of tight-but-complete writing.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the tool is low-complexity with only 3 parameters. Still, the undocumented date-range parameters and the absence of any usage context leave the definition thinner than a read metric tool should be.

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

Parameters2/5

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

Schema description coverage is 0% across 3 parameters, so the description carries the full documentation burden. 'For a user' loosely maps to user_id, but from_date and to_date are never mentioned, leaving the date-range semantics entirely undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb (Get) and resource (billable utilization metrics) scoped to a user, which distinguishes it from sibling admin_get_user (profile data) and admin_get_user_availability. It does not, however, explicitly name or contrast with those siblings, so the differentiation is inferable rather than stated.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives such as admin_get_user_availability or admin_get_user_bill_rates. An agent must infer the selection criteria from the tool name alone.

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

admin_list_client_contactsAdmin List Client ContactsC
Read-onlyIdempotent

List contacts associated with a client.

ParametersJSON Schema
NameRequiredDescriptionDefault
client_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that โ€” no pagination, filtering, ordering, or auth/scope context for a list operation.

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

Conciseness4/5

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

A single short sentence with the resource front-loaded and zero padding. It is efficient, if minimal.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations carry the safety profile. However, for a list tool the definition omits any note about result scope (all contacts vs. paginated) or the dual integer/string identifier, leaving it only minimally complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the single client_id parameter accepts either an integer or string without explanation. The description only implies that the parameter identifies a client, which the schema already conveys via the name, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb+resource (list contacts) with the scoping association (associated with a client). It is clearly distinct from admin_create_client_contact and admin_delete_client_contact, though it does not explicitly name them. Clear and unambiguous.

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

Usage Guidelines2/5

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

Contains no when-to-use guidance, no preconditions, and no mention of alternatives such as admin_get_client or the create/delete contact siblings. Usage must be inferred entirely from the name.

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

admin_list_clientsAdmin List ClientsD
Read-onlyIdempotent

List clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
archivedNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that โ€” no pagination behavior, no note on the archived default (null), no indication of result size.

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

Conciseness2/5

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

It is short and front-loaded, but this is under-specification rather than conciseness. Two words cannot carry the burden of a three-parameter listing tool.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a paginated admin list tool the description should at least clarify the archived tri-state and paging. As written, it leaves the agent to infer everything about how results are scoped.

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

Parameters1/5

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

Schema description coverage is 0% and the description says nothing about page, per_page, or the tri-state archived filter (null/true/false). Three undocumented parameters with zero compensating text โ€” the agent must guess semantics from names and defaults alone.

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

Purpose2/5

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

"List clients." restates the tool name and title verbatim without adding scope, filtering behavior, or differentiation from the many sibling list tools (admin_list_users, admin_list_roles, etc.). It is a tautology rather than an explanation.

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

Usage Guidelines2/5

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

No guidance on when to use this versus admin_get_client, admin_list_client_contacts, or any other list endpoint. No mention of pagination expectations, the archived filter, or prerequisites.

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

admin_list_custom_fieldsAdmin List Custom FieldsB
Read-onlyIdempotent

List custom field definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds no further behavioral context such as pagination, filtering, or output format; it merely restates the operation.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It communicates the operation immediately and every word earns its place.

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

Completeness4/5

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

For a no-parameter list tool with rich annotations and an output schema, the description is nearly sufficient. It does not need to explain return values, but it also offers no additional scope such as 'all definitions' or pagination behavior that would make it fully self-contained.

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

Parameters4/5

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

There are no parameters, so the baseline is 4 per the rubric. Schema coverage is 100% (empty schema), and the description does not need to compensate for any parameter meaning.

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

Purpose4/5

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

States a specific verb ('List') and resource ('custom field definitions'), which distinguishes it from siblings like admin_list_custom_field_values and admin_get_custom_field. However, it does not explicitly name an alternative or scope, so it lacks the explicit sibling-differentiation of a 5.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, prerequisites, or alternative tools. The agent can infer it is for reading definitions, but the description offers no selection criteria among the many admin_list_* siblings.

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

admin_list_custom_field_valuesAdmin List Custom Field ValuesC
Read-onlyIdempotent

List custom field values for a specific entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idNo
target_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered. The description adds nothing beyond thatโ€”no pagination, authorization, or scoping behavior for a tool that lists arbitrary entity data.

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

Conciseness4/5

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

A single short sentence with the resource front-loaded and no filler. Efficient, though its brevity is partly a symptom of under-specification rather than discipline.

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

Completeness2/5

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

An output schema exists so return values need not be described, but with zero parameter documentation, no usage guidance, and no sibling differentiation, the description is too thin for a polymorphic-target admin listing tool.

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

Parameters2/5

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

Schema description coverage is 0% for both target_id (anyOf integer/string/null) and target_type. The phrase 'for a specific entity' only dimly gestures at these two parameters and gives no accepted type values or ID format, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

States a clear verb+resource: list custom field values scoped to a specific entity. It does not, however, differentiate itself from adjacent siblings like admin_list_custom_fields or admin_set_custom_field_values, leaving the agent to infer which one applies.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as admin_set_custom_field_values or admin_list_custom_fields. The agent gets no help routing between these closely named tools.

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

admin_list_disciplinesAdmin List DisciplinesA
Read-onlyIdempotent

List all configured disciplines.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds only the word 'all', which hints at unfiltered/unpaginated output but stops short of confirming it, so it contributes modest extra context.

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

Conciseness5/5

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

A single six-word sentence with the verb and resource front-loaded and zero filler. Nothing could be trimmed without losing meaning.

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

Completeness4/5

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

With zero parameters and an output schema present, the description need not explain return values, and annotations carry the safety profile, so the definition is nearly complete. It could still note that results are unfiltered and unpaginated (relevant for a workspace with many disciplines) to fully close the loop.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics for the description to explain; the baseline for a 0-param tool applies. Nothing in the description misleads about inputs.

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

Purpose4/5

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

States a specific verb ('List') and resource ('disciplines'), making it immediately distinguishable from sibling mutations like admin_create_discipline and admin_delete_discipline. It does not explicitly contrast itself with those siblings, but the naming pattern makes the read intent unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the read path used to discover disciplines before creating, updating, or deleting one. There is no explicit when-to-use statement, no mention of whether the result feeds admin_create_discipline, and no exclusions.

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

admin_list_expense_categoriesAdmin List Expense CategoriesB
Read-onlyIdempotent

List configured expense categories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the word 'configured', which hints that unconfigured categories are excluded, but discloses nothing further about scope, ordering, or pagination behavior.

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

Conciseness4/5

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

A single efficient sentence with no filler, and the operation is front-loaded. It is appropriately sized for a zero-argument list tool, though it stops at the minimum.

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

Completeness4/5

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

With zero parameters, an output schema present, and rich annotations, the description is adequate for this simple read tool. Return values need not be explained, and nothing essential to calling it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('expense categories'), making the operation unambiguous. It does not, however, distinguish itself from adjacent siblings such as admin_list_expenses or admin_create_expense_category beyond the resource name.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives (e.g., admin_create_expense_category for adding new categories). The agent must infer usage from the name alone.

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

admin_list_expensesAdmin List ExpensesB
Read-onlyIdempotent

List logged expenses across projects or filtered by project/user.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
to_dateNo
user_idNo
per_pageNo
from_dateNo
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so the safety profile is covered. The description adds only the filter scope and says nothing about pagination defaults (page/per_page) or how date bounds behave, which would be the useful extra context here.

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

Conciseness4/5

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

One tight sentence with the resource and filter scope front-loaded and no filler. Its brevity is appropriate, though it is brief at the cost of the parameter detail the schema lacks.

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

Completeness3/5

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

An output schema exists so return values need not be described, and annotations cover safety. But with six undocumented parameters at 0% schema coverage, the description is incomplete on the filter/pagination semantics an agent needs to call this list tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it only hints at project_id and user_id. It says nothing about page, per_page, from_date, or to_date, leaving the time-range and pagination parameters entirely unexplained.

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

Purpose4/5

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

States a specific verb+resource ('List logged expenses') and its scope ('across projects or filtered by project/user'). It does not name a contrasting sibling such as admin_get_expense or admin_list_expense_categories, so the agent gets clarity on what it does but not on how it differs from neighbors.

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

Usage Guidelines3/5

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

The mention of filtering 'by project/user' implies the use case, but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives like admin_get_expense for a single expense. Usage is inferable but not guided.

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

admin_list_holidaysAdmin List HolidaysB
Read-onlyIdempotent

List company and regional holidays.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNo
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds only the fact that both company and regional holidays are returned, which is modest added context beyond the annotations.

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

Conciseness4/5

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

A single short sentence with zero filler and the resource front-loaded. It is efficient, though the brevity edges into under-specification rather than pure conciseness.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety semantics. The gap is the undocumented date-range parameters and lack of any routing versus admin_get_holiday, making the definition minimally viable rather than complete.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions from_date or to_date, leaving both parameters (and their expected date format) completely undocumented anywhere. With low coverage, the description was obliged to compensate and does not.

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

Purpose4/5

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

Specific verb (List) and resource (holidays), plus a scope qualifier (company and regional) that helps frame the data. However, it does not distinguish itself from the sibling admin_get_holiday, nor does it mention the date filtering the tool clearly supports.

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

Usage Guidelines2/5

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

No guidance on when to use this versus admin_get_holiday or the create/update/delete holiday siblings. No prerequisites or exclusions are stated; usage must be inferred entirely from the name.

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

admin_list_leave_typesAdmin List Leave TypesA
Read-onlyIdempotent

List leave types (e.g. Vacation, Sick, Parental, PTO).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows this is a safe, repeatable read. The description adds minor value by exemplifying the content ('Vacation, Sick, Parental, PTO') but says nothing about pagination, ordering, or total-count behavior for what is declared an open-world listing.

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

Conciseness5/5

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

A single front-loaded sentence with the examples placed where they clarify the resource rather than padding. Nothing is wasted and nothing needs to be trimmed.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the safety profile is covered by annotations. For a zero-parameter read tool the description is essentially sufficient, with only pagination/ordering behavior left unstated.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is no parameter information the description could legitimately add. It neither omits nor misstates anything on this dimension.

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

Purpose4/5

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

States a clear verb+resource ('List leave types') and the parenthetical gives concrete examples of the values returned, which makes the resource unambiguous. It does not explicitly distinguish itself from admin_get_leave_type or admin_create/update/delete_leave_type, though the plural 'List' verb carries that distinction implicitly.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisite or permission notes, and never names an alternative such as admin_get_leave_type for a single record. The only usage signal is the imperative 'List', which is inferred rather than stated.

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

admin_list_rolesAdmin List RolesB
Read-onlyIdempotent

List all configured user roles.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds no extra behavior detail (e.g., whether roles are paginated or sorted), so it neither helps nor harms beyond the structured data.

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

Conciseness4/5

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

A single tight sentence with the resource front-loaded and zero filler. Appropriate for a trivial list tool, though it is minimal enough that a little more context could have been included without becoming bloated.

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

Completeness4/5

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

With an output schema documenting the return shape, rich annotations covering the safety profile, and no input parameters, the description covers everything an agent strictly needs to invoke the tool correctly. Only the usage routing gap keeps it from being fully complete.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There is no parameter semantics for the description to clarify, and the schema fully describes the empty input object.

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

Purpose4/5

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

States a clear verb (List) and resource (user roles) with scope (all configured). It is distinguishable from admin_create_role/update_role/delete_role by the verb, though it doesn't explicitly call out that distinction.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as admin_get_user when role detail is needed. Usage must be inferred entirely from the name and verb.

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

admin_list_tagsAdmin List TagsC
Read-onlyIdempotent

List tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that โ€” no mention of pagination, ordering, or result volume, which is the kind of context that would be genuinely useful here.

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

Conciseness2/5

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

The single sentence is short but that brevity reflects under-specification rather than efficiency. There is no front-loaded scope, filtering note, or routing information to earn the space.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a paginated list tool with 0% parameter documentation and no usage context, the description is inadequate. It leaves the agent with only the name to work from.

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

Parameters2/5

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

Schema description coverage is 0%, so both page and per_page are undocumented in the schema, and the description does not compensate at all โ€” it never mentions pagination, defaults, or limits. The parameters are simple optional integers with defaults, which keeps this above a 1, but the description contributes zero parameter meaning.

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

Purpose2/5

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

"List tags." restates the tool name (admin_list_tags) almost verbatim and adds no specificity. It does not distinguish this from the many sibling list tools (admin_list_users, admin_list_roles, admin_list_clients), so an agent gains nothing beyond the identifier itself.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus alternatives, no mention of prerequisites, and no note about pagination behavior when result sets are large. The agent must infer usage entirely from the name.

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

admin_list_user_bill_ratesAdmin List User Bill RatesB
Read-onlyIdempotent

List bill rate tiers for a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, providing a clear safety profile. The description adds no additional behavioral context beyond confirming it's a list operation. It doesn't mention pagination, rate limits, or what the tiers represent.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the core action. Every word earns its place, with no redundancy or filler.

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

Completeness3/5

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

The tool has an output schema, so return values needn't be explained. However, with only one parameter and 0% schema description coverage, the description should do more to clarify the parameter semantics and usage context. It's minimally complete but leaves gaps for an agent to infer.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'for a user,' which implies the user_id parameter, but doesn't explain the parameter's expected format (integer or string UUID?) or constraints. The anyOf type in the schema suggests flexibility, but the description doesn't clarify.

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

Purpose3/5

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

The description states a verb (List) and resource (bill rate tiers for a user), which is adequate. However, it doesn't differentiate from the sibling admin_create_user_bill_rate tool or explain how it relates to admin_get_user. It's vague about whether this lists historical tiers or current ones.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs. alternatives. There is a sibling admin_create_user_bill_rate tool, but the description doesn't mention the relationship or when to choose one over the other. No context on prerequisites or typical use cases.

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

admin_list_usersAdmin List UsersB
Read-onlyIdempotent

List users in the organization with role/discipline filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
roleNo
archivedNo
per_pageNo
disciplineNo
include_billabilityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds only organizational scoping; it says nothing about pagination defaults or whether archived users are excluded by default, which would be genuinely useful behavioral context.

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

Conciseness4/5

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

One short sentence, front-loaded with the operation and scope, with no filler. Brevity is appropriate, though it errs toward under-specification given the parameter count.

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

Completeness3/5

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

An output schema exists so return values need not be described. However, with 6 parameters at 0% schema coverage, the description should at minimum explain the archived toggle and pagination defaults, which it omits.

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

Parameters2/5

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

Schema description coverage is 0% across 6 parameters, so the description carries the burden. It only names role and discipline filtering, leaving page, per_page, archived, and include_billability entirely undocumented anywhere, so agents must guess their semantics.

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

Purpose4/5

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

States a specific verb (list) and resource (users) with the scope 'in the organization' and notes filterable dimensions. It does not distinguish itself from siblings like admin_get_user or admin_create_user, but for a list tool the operation is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer admin_get_user for a single record, and no prerequisites. The filtering mention implies a use case but gives no alternative-routing information.

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

admin_list_webhooksAdmin List WebhooksB
Read-onlyIdempotent

List configured organization webhooks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only that the webhooks are organization-scoped, which is modest extra context beyond the annotations.

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

Conciseness4/5

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

A single short sentence with the resource front-loaded and no filler. It is appropriately sized, though it is so terse that it conveys no information beyond the name and title.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and the annotations plus zero-parameter schema mean little is missing. The remaining gap is the absence of any hint about pagination or filtering, which is minor for a no-arg list tool.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter-related claims are made or needed.

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

Purpose4/5

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

States a specific verb (List) and resource (organization webhooks) with the scope qualifier 'organization'. It is clear what the tool returns, though it never names the write siblings (admin_create_webhook, admin_delete_webhook) that an agent must distinguish it from.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this versus alternatives, no mention of prerequisites (e.g. admin permissions) and no exclusions. The read-only listing intent is only implied by the verb 'List'.

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

admin_set_custom_field_valuesAdmin Set Custom Field ValuesC
Idempotent

Set custom field values for an entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYes
target_idYes
target_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, readOnlyHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say whether values are merged or replace existing ones, what happens to unmentioned fields, or what permission level is required for an admin-scoped write.

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

Conciseness2/5

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

A single eight-word sentence is technically compact and front-loaded, but here the brevity reflects under-specification rather than efficiency. There is no structure for an agent to anchor on beyond the bare verb and resource.

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

Completeness2/5

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

An output schema exists, so return values need not be described. But for a three-parameter mutation tool with a nested free-form object, zero schema coverage, and an open-world admin scope, the description omits the target_type vocabulary, the values format, and any usage context, leaving the agent without enough to call it correctly.

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

Parameters2/5

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

Schema description coverage is 0% and the three required parameters are entirely undocumented. The phrase 'custom field values for an entity' only loosely hints at the values map and the target_id/target_type pair; it never explains the accepted target_type strings or the expected shape of the nested values object (additionalProperties: true).

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

Purpose3/5

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

The description names a specific verb ('Set') and resource ('custom field values') and scopes it to 'an entity', so the basic action is identifiable. However, it does not distinguish this write tool from nearby siblings such as admin_list_custom_field_values, admin_create_custom_field, or admin_update_custom_field, and 'entity' is never resolved to a concrete type.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites (e.g., admin privileges, pre-existing custom fields), and no reference to the list/get siblings an agent would need to call first to obtain field identifiers. The agent gets no help choosing this tool over the related custom-field tools.

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

admin_set_user_statusAdmin Set User StatusB
Idempotent

Set current working status for a user (status: 'ITO', 'WFH', 'SIC', 'OOO', 'VAC', 'OOF').

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
statusYes
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already disclose this is a non-read-only, idempotent, non-destructive write, so the safety profile is covered. The description adds the valid status values, but says nothing about permissions required, whether the status overwrites a prior entry or creates a dated record, or how it interacts with timesheets. With annotations carrying the safety load, a 3 is appropriate.

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

Conciseness4/5

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

A single compact sentence with the action front-loaded and the enum list parenthetically attached. Nothing is wasted, though the acronyms would benefit from a brief gloss rather than raw codes.

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

Completeness3/5

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

An output schema exists, so return values need no explanation. But for a mutation of user working status, the definition omits what the codes mean (ITO/WFH/SIC/OOO/VAC/OOF), whether the change is dated or overwrites, and any permission requirement โ€” meaningful gaps for an agent to call this correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the schema documents nothing about the three parameters. The description notably compensates for the biggest gap by enumerating the six allowed status codes, which the schema defines only as a bare string. Still, the meaning of those acronyms and the optional 'notes' parameter are left unexplained.

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

Purpose4/5

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

States a specific verb and resource: 'Set current working status for a user.' An agent immediately knows this is a status-mutation tool. However, it does not distinguish itself from close siblings such as admin_get_user_statuses or admin_update_user, so differentiation is left to the reader.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus admin_update_user or admin_get_user_statuses, nor any preconditions (e.g., admin privileges, whether the user must be active). Usage is only implied by the name.

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

admin_update_clientAdmin Update ClientD

Update a client record.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
nameNo
stateNo
addressNo
countryNo
zipcodeNo
archivedNo
client_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is partly covered. The description adds nothing beyond them: it does not explain partial-update semantics, what happens to omitted/nullable fields, or any auth requirements. Minimal added value.

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

Conciseness2/5

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

The single sentence contains no wasted words, but for an 8-parameter mutation tool this level of terseness is under-specification rather than effective conciseness. Nothing is front-loaded because nothing of substance is present.

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

Completeness2/5

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

An output schema exists, so return values need not be described, but the tool still has 8 undocumented parameters and a mutation semantic (partial update, archive flag) that is nowhere explained. For a mutation tool this is incomplete.

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

Parameters1/5

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

Schema description coverage is 0% across 8 parameters, and the description names none of them. An agent gets no explanation of client_id, the nullable address fields, or the 'archived' flag, so the description fails to compensate for the documentation gap.

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

Purpose2/5

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

The description merely restates the name/title: 'Update a client record.' It names a verb and resource but adds no scope, no distinguishing detail versus siblings like admin_update_user, admin_update_role, or admin_update_discipline. It is effectively a tautology of the title.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative guidance. An agent cannot tell from this text when to update an existing client versus create one, nor whether partial updates are expected. No exclusions or prerequisites are given.

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

admin_update_custom_fieldAdmin Update Custom FieldC

Update a custom field definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
optionsNo
custom_field_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already disclose that this is a non-read-only, non-idempotent, open-world mutation, so the safety profile is covered. The description adds nothing further: it does not say whether the update is partial (the nullable defaults suggest it is), what permissions are required, or what happens to values already stored under the field.

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

Conciseness3/5

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

A single front-loaded sentence with zero padding, so it is structurally clean. It is under-specified rather than concise, but there is no wasted text to penalize.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. Even so, for a mutation tool with 0% parameter coverage and no usage context, the definition leaves the agent guessing about partial-update behavior, field-type constraints on 'options', and how it differs from admin_set_custom_field_values.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, so the description must compensate and does not โ€” it never mentions name, options, or custom_field_id. The property names are self-explanatory enough to avoid a 1, but the semantics of 'options' (only valid for certain field types?) and of the nullable-default update pattern are undocumented everywhere.

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

Purpose3/5

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

The verb+resource combination is clear ('Update a custom field definition'), and the word 'definition' mildly distinguishes it from the adjacent admin_set_custom_field_values tool. However, it largely restates the tool name and does nothing to separate it from admin_create_custom_field or admin_delete_custom_field beyond the verb.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all. The most important ambiguity โ€” this tool edits the field's definition (name/options) while admin_set_custom_field_values writes per-record values โ€” is left entirely unresolved for the agent.

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

admin_update_disciplineAdmin Update DisciplineC

Update an existing discipline.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
discipline_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the mutation/reversibility profile is covered structurally. The description adds nothing beyond that โ€” no note on permissions required, whether name is replaced or merged, or what happens to unmentioned fields.

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

Conciseness3/5

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

The single sentence is front-loaded and wastes no words, but its brevity stems from under-specification rather than efficiency. It is neither bloated nor informative โ€” minimum viable size with no substance behind it.

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

Completeness2/5

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

For a mutation tool with two required parameters at 0% schema coverage, the description leaves the agent without parameter meanings, preconditions, or mutation semantics. The existing output schema means return values need not be explained, but the input-side gaps are substantial and unaddressed.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters, so the description carries the full burden and fails: it never mentions that discipline_id identifies the target or that name is the value being applied. An agent must infer parameter roles entirely from the schema property names.

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

Purpose4/5

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

The description states a specific verb (Update) and resource (discipline) with scope limited to existing records, so an agent knows exactly what operation is performed. It does not, however, differentiate itself from the adjacent admin_create_discipline / admin_delete_discipline / admin_list_disciplines siblings or indicate what aspects of a discipline are editable.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus admin_create_discipline or admin_delete_discipline, nor any prerequisite such as needing an existing discipline_id. The phrase 'an existing discipline' implies a precondition but never states it as a rule.

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

admin_update_expenseAdmin Update ExpenseC

Update a logged expense item.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
notesNo
amountNo
expense_idYes
is_billableNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so a mutation is expected. The description adds nothing beyond that: it does not say whether this is a partial patch (all non-required fields default to null) or a replacement, whether fields omitted are preserved, or what permissions are needed. For a non-idempotent mutation this is a meaningful gap.

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

Conciseness3/5

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

It is a single short sentence with no wasted words and the purpose is front-loaded. However, its brevity reflects under-specification rather than efficient communication, since it omits information the agent needs.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. But for a non-idempotent mutation with 5 parameters at 0% schema coverage and no contextual detail about partial updates or required permissions, the definition is well short of what an agent needs to call it correctly.

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

Parameters1/5

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

Schema description coverage is 0% across 5 parameters, so the schema documents none of them, and the description supplies no meaning for date, notes, amount, is_billable, or the required expense_id. The fact that four updatable fields are nullable and default to null makes partial-update semantics especially important, and the description does not address it.

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

Purpose4/5

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

The description states a specific verb ('Update') and resource ('a logged expense item'), which distinguishes it from the create/list/get/delete expense siblings by action. It is clear but adds no scope detail, such as which fields are mutable or whether it targets the whole record.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus admin_get_expense, admin_create_expense, or admin_delete_expense, nor any prerequisite such as needing admin rights or a prior lookup of the expense_id. Usage is only implied by the verb.

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

admin_update_holidayAdmin Update HolidayC

Update a holiday.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
nameNo
end_dateNo
holiday_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the mutation and non-destructive profile is already covered. The description adds nothing beyond that: no partial-update semantics (are omitted/null fields ignored or cleared?), no permission requirements, and no note on side effects.

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

Conciseness2/5

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

The one-sentence description is concise and front-loaded but far too thin for a four-parameter mutation tool. This is under-specification rather than efficient conciseness, since no useful content is packed into the sentence.

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

Completeness1/5

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

For a mutation tool with four undocumented parameters and only annotations carrying the safety profile, the description is inadequate. Although an output schema exists (so return values need not be explained), the missing parameter semantics and update behavior leave the definition materially incomplete.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no parameter information at all. With four parameters, including a required holiday_id and nullable date/name/end_date defaults, the description fails entirely to compensate for the undocumented schema.

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

Purpose4/5

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

The description gives a specific verb ('Update') and resource ('holiday'), so an agent can tell it is a mutation on a holiday. It offers no in-text differentiation from siblings like admin_create_holiday or admin_delete_holiday, but the name/title already carry that distinction.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool, when to prefer admin_create_holiday or admin_delete_holiday, or what preconditions apply (e.g., must the holiday already exist, are certain fields required). The agent is left to infer everything from the name alone.

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

admin_update_leave_typeAdmin Update Leave TypeC

Update a leave type name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
leave_type_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true, so the mutation profile is covered. The description adds nothing beyond that โ€” it does not say whether the update is partial or full-replace, whether renaming affects existing leave records, or what happens on invalid IDs.

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

Conciseness3/5

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

A single front-loaded sentence with no filler, which is structurally clean. However, its brevity comes at the cost of substance rather than being tight-but-complete.

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

Completeness2/5

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

For a mutation tool with two required undocumented parameters, no schema descriptions, and no usage guidance, the description is far too thin. An output schema exists so return values need not be explained, but the input contract and side effects remain unclear.

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

Parameters2/5

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

Schema description coverage is 0% for two required parameters, so the description carries the full documentation burden. It only gestures at 'name' and never explains leave_type_id (accepted as integer or string), leaving the parameter semantics essentially undocumented.

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

Purpose4/5

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

States a specific verb (Update) and resource (leave type name), so an agent can identify the operation immediately. It is narrow and precise, though it does not differentiate itself from sibling admin_update_* tools beyond the resource noun in the name.

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

Usage Guidelines2/5

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

No guidance on when to use this versus admin_create_leave_type, admin_delete_leave_type, or admin_get_leave_type, and no prerequisites or permissions are mentioned. The agent must infer usage purely from the name.

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

admin_update_roleAdmin Update RoleC

Update an existing role.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
role_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations cover the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), so the description is not required to restate those. However, the description adds nothing beyond them: it doesn't say which fields are editable, whether partial updates are supported, or what happens to unmentioned fields.

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

Conciseness3/5

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

One short sentence, front-loaded and free of padding, but that brevity is the result of under-specification rather than disciplined editing. There is no wasted text, yet nothing beyond the verb+resource is provided.

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

Completeness2/5

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

An output schema exists, so return values need no explanation, but this is a mutation tool with two undocumented parameters and zero schema coverage. An agent cannot tell what it is actually updating or how, leaving the definition inadequate for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% for both parameters, so the description carries the full burden of explaining 'name' and 'role_id'. It says nothing about either โ€” not the id format, not whether name is the new value, not whether other role properties can change. This is a clear parameter gap the description fails to compensate for.

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

Purpose4/5

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

States a specific verb (Update) and resource (role), so the agent knows exactly what entity is mutated. It doesn't differentiate from sibling update tools like admin_update_user or admin_update_client, but the resource name in the tool name already disambiguates.

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

Usage Guidelines2/5

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

No guidance on when to use this versus admin_create_role or admin_delete_role, no prerequisites, and no mention of what preconditions (e.g., the role must exist, permissions required) must hold. It only implies the role already exists via 'existing'.

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

admin_update_userAdmin Update UserC

Update a user's profile, role, discipline, bill rate, or archive state.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
emailNo
user_idYes
archivedNo
bill_rateNo
cost_rateNo
last_nameNo
disciplineNo
first_nameNo
billability_targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation profile is partly covered. The description adds nothing about permissions, whether archiving is reversible, or how untouched fields behave, and 'idempotentHint=false' combined with null defaults makes the update semantics genuinely unclear.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; it is efficiently sized, though that brevity comes at the cost of the missing details noted elsewhere.

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

Completeness2/5

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

For a 10-parameter mutation tool with 0% schema coverage, the description is too thin. An output schema exists so return values need no explanation, but the updatable field set, null-vs-omitted behavior, and permission requirements are all absent.

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

Parameters2/5

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

Schema description coverage is 0% across 10 parameters, so the description must compensate and only partly does: it names role, discipline, bill rate, and archive state but omits cost_rate, billability_target, and the name/email fields. Critically, it never explains the null-default semantics (whether passing null clears a value or leaves it unchanged), which is the most important semantic ambiguity for this schema.

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

Purpose4/5

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

States a clear verb ('Update') and resource ('a user'), and enumerates the main mutable facets (profile, role, discipline, bill rate, archive state), which distinguishes it from admin_create_user/admin_delete_user. It falls short of 5 because the field list is incomplete relative to the schema (no mention of cost_rate or billability_target) and no sibling is named outright.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus admin_create_user, admin_set_user_status, or the bill-rate-specific siblings such as admin_create_user_bill_rate. Nothing is said about required admin privileges or about partial vs full updates, leaving usage entirely to inference.

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

projects_clone_project_scheduleProjects Clone Project ScheduleB

Duplicate project budget settings, timeline, and phase milestone structure to a new project.

ParametersJSON Schema
NameRequiredDescriptionDefault
client_idNo
new_start_dateNo
source_project_idYes
target_project_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description usefully adds what is copied, but omits notable behavior: calling it twice with the same source presumably creates two separate projects (non-idempotent), and it does not say whether assignments/tasks or only budget/timeline/phases are carried over.

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

Conciseness5/5

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

A single sentence, front-loaded with the verb, that enumerates the copied artifacts without filler. Every clause earns its place.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover the mutation safety profile. However, with 0% parameter coverage the definition leaves meaningful gaps: the role of client_id and whether new_start_date re-bases the timeline are unexplained for a clone operation.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, so the description must carry the load. It only loosely implies source_project_id and target_project_name via 'duplicate ... to a new project'; it says nothing about client_id or, more importantly, whether new_start_date shifts the cloned timeline or preserves relative dates.

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

Purpose4/5

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

States a specific verb (Duplicate) and enumerates exactly what is copied (budget settings, timeline, phase milestone structure) into a new project, which is far more informative than the bare name. It is not explicitly distinguished from siblings like projects_create_project, so it falls just short of a 5.

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

Usage Guidelines2/5

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

The description says what the tool does but never says when to use it versus projects_create_project, nor what prerequisites exist (e.g. the source project must exist, required permissions). No exclusions or alternative-selection guidance is provided.

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

projects_create_assignmentProjects Create AssignmentC

Create a resource assignment on a project or phase (dates: YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
percentNo
user_idYes
end_dateYes
phase_idNo
project_idYes
start_dateYes
fixed_hoursNo
hours_per_dayNo
allocation_modeNopercent

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), so the bar is lower. The description adds only a date-format note and says nothing about required permissions, whether a resource must already exist, or how allocation_mode interacts with percent/fixed_hours/hours_per_day.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the format hint is parenthetical and unobtrusive. It is efficient, though the brevity reflects under-specification rather than disciplined conciseness.

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

Completeness2/5

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

An output schema exists, so return values need no explanation, but for a 10-parameter mutation tool with zero schema coverage the description is far too thin. The mutually exclusive scheduling parameters and the default allocation_mode='percent' behavior are critical gaps for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% across 10 parameters, so the description carries the full burden and mostly does not. It clarifies the date format for start_date/end_date and hints that phase_id is optional ('project or phase'), but leaves allocation_mode, percent, fixed_hours, hours_per_day, note, and user_id vs. placeholder resources entirely unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Create a resource assignment') plus the scoping targets (project or phase), which distinguishes it from projects_update_assignment and projects_create_assignment_subtask at a glance. It does not explicitly name a sibling, so it stops short of 5.

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

Usage Guidelines2/5

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

No when-to-use, prerequisite, or alternative guidance is given. An agent must infer from the verb alone that this is for new assignments rather than updates or subtask creation; the fact that either project_id or phase_id may be supplied is left completely unstated.

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

projects_create_assignment_subtaskProjects Create Assignment SubtaskC

Create a subtask under a project assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
completedNo
project_idYes
descriptionYes
assignment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that โ€” no statement of side effects, whether duplicate subtasks are allowed, or permission requirements, despite non-idempotent mutation semantics.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, which is efficient. Its brevity is the problem, though, since it omits necessary context rather than being deliberately lean.

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

Completeness2/5

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

An output schema exists so return values need not be described, but for a 4-parameter mutation with 0% schema coverage the definition is insufficient. Nothing tells the agent about required identifiers, defaults, or duplicate/conflict behavior.

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

Parameters2/5

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

Schema description coverage is 0% and the description explicitly names none of the four parameters. The phrase 'under a project assignment' loosely implies project_id and assignment_id are needed, but the required description string and the completed default remain unexplained, so the description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (Create) and resource (a subtask under a project assignment), which an agent can readily distinguish from projects_create_assignment and projects_list_assignment_subtasks. However, it does not explicitly contrast itself with those siblings, so the differentiation relies on the reader scanning the tool list.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus projects_create_assignment (the parent) or the list/delete subtask siblings, and no prerequisites such as needing an existing assignment_id are mentioned. The agent must infer usage entirely from the name.

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

projects_create_placeholder_resourceProjects Create Placeholder ResourceD

Create a placeholder resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
titleYes
locationNo
disciplineNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.3/5.0
Behavior1/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false, so the safety profile is already covered. Beyond that the description discloses nothing: no note that a placeholder is not a real user, whether the title must be unique, whether it becomes linked to assignments, or what side effects occur.

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

Conciseness2/5

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

The single sentence is technically concise with no waste, but the brevity here is under-specification rather than economy โ€” a one-line restatement of the title is not an appropriately sized description for a four-parameter mutation tool.

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

Completeness1/5

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

For a non-idempotent, open-world write operation with an output schema and 0% schema description coverage, the description leaves every meaningful question unanswered: semantics of the entity, parameter formats, and behavioral consequences. It is nowhere near adequate.

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

Parameters1/5

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

Schema description coverage is 0% across four parameters (title required; role, location, discipline optional with null defaults). The description provides zero field-level meaning, leaving the agent with no idea whether 'role' is a free string, an ID, or a role name, or what 'location' and 'discipline' refer to.

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

Purpose2/5

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

The description restates the tool name almost verbatim ('Create a placeholder resource' vs 'Projects Create Placeholder Resource'), adding no scope, domain context, or definition of what a 'placeholder resource' actually is. It is not misleading, but it is effectively a tautology that gives an agent nothing it couldn't read off the name.

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

Usage Guidelines1/5

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

There is no indication of when to use this versus projects_create_assignment, projects_create_project, or the many other create_* siblings, nor any prerequisite (e.g., that placeholder resources typically precede assignments). No when/when-not guidance whatsoever.

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

projects_create_projectProjects Create ProjectC

Create a new project in Smartsheet RM.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
budgetNo
secureNo
end_dateNo
client_idNo
start_dateNo
budget_typeNo
descriptionNo
project_typeNoBillable
project_stateNoTentative

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that โ€“ it does not mention required fields, default values (Billable, Tentative), auth/permission needs, or side effects.

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

Conciseness3/5

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

A single short sentence with zero waste and the action front-loaded, so it is structurally fine. However, it is under-specified rather than genuinely concise, leaving obvious room for necessary detail.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. But for a 10-parameter, non-idempotent write tool with 0% schema coverage and defaulted fields, the description is far too thin to let an agent invoke it correctly.

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

Parameters1/5

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

With 10 parameters and 0% schema description coverage, the description carries the full burden of explaining parameters, yet it mentions none. Key fields like budget_type, project_type, project_state, client_id, and secure are left entirely opaque, including their defaulted values.

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

Purpose4/5

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

States a clear verb ('Create') and resource ('project') plus the system (Smartsheet RM), so the agent knows the operation. It does not distinguish itself from sibling creation tools like projects_create_project_phase or projects_create_assignment, but the resource noun is specific enough to route correctly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g. needing a client_id or a valid project_type), and no mention of what happens on duplicate names. Usage must be inferred entirely from the name.

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

projects_create_project_phaseProjects Create Project PhaseC

Create a new phase under a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
budgetNo
end_dateYes
project_idYes
start_dateYes
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds nothing beyond that โ€” no note on required permissions, whether creating a phase mutates the parent project's schedule, or idempotency behavior. With annotations present the bar is lower, but zero added context warrants a 2.

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

Conciseness3/5

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

The single sentence is front-loaded and waste-free, but it is undersized for a 6-parameter mutation tool; brevity here reflects omission rather than discipline.

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

Completeness2/5

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

An output schema and annotations exist, so return values and safety are partly covered, but a 6-param create tool with 0% schema coverage needs parameter and prerequisite detail the description never supplies. It is inadequate for the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0% across 6 parameters (4 required), and the description compensates for none of it โ€” it never mentions project_id, name, start_date, end_date, budget, or description. Only the phrase 'under a project' faintly implies the project linkage.

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

Purpose4/5

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

States a specific verb (Create) and resource (a new phase under a project), which separates it from the update/get/delete/phase siblings by operation. It does not, however, name or contrast with any sibling explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites (e.g. project must exist), and no mention of alternatives such as projects_update_project_phase or projects_create_project. The agent must infer context entirely.

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

projects_delete_assignmentProjects Delete AssignmentA
Destructive

Delete a resource assignment (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
assignment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds concrete value beyond them by stating the confirm=True requirement, which is an actionable behavioral gate absent from the structured fields. It omits side effects such as cascading effects on subtasks or irreversibility guarantees.

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

Conciseness4/5

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

A single short sentence with the destructive nature and guard requirement front-loaded; no filler. It is perhaps too terse for a mutation tool, but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need no explanation. However, for a destructive mutation with 0% parameter coverage, the description should address identifier semantics and any cascade/permission implications; those gaps leave it merely adequate.

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

Parameters3/5

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

Schema description coverage is 0% for 2 parameters, so the description carries the burden. It explains the confirm parameter's required value, but the key input assignment_id (integer|string, its meaning, and acceptable forms) is left entirely undocumented.

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

Purpose4/5

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

States a specific verb+resource (delete + resource assignment), which is distinguishable from sibling deletes like projects_delete_project, projects_delete_assignment_subtask, and projects_delete_placeholder_resource. It does not explicitly note how it differs from the subtask-level delete, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only adds the precondition 'requires confirm=True', which implies the tool is guarded and deliberate, but it gives no guidance on when to delete an assignment versus alternatives (e.g., updating or reassigning). Usage conditions are implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_delete_assignment_subtaskProjects Delete Assignment SubtaskB
Destructive

Delete an assignment subtask (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
project_idYes
subtask_idYes
assignment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-idempotency, so the 'Destructive' label is largely redundant. The description does add real value beyond the annotations by disclosing the confirm=True gate, which is not inferable from the hints. It says nothing about cascade effects on children, reversibility, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the action and the critical guard clause front-loaded; nothing is padded. The only minor waste is restating 'Destructive', which the annotations already encode.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and annotations are present, so return values and safety profile are covered elsewhere. For a destructive, three-ID hierarchical operation, however, the definition omits the parent/child relationship semantics and any consequence of deletion, leaving an agent to guess at the blast radius.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it only explains the confirm parameter. project_id, assignment_id and subtask_id receive no semantic detail such as accepted ID types, whether the subtask must belong to that assignment, or hierarchy requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (delete an assignment subtask), which is clearly separable from the sibling projects_delete_assignment and projects_delete_project_phase because of the 'subtask' qualifier. However, it never explicitly names or contrasts with those siblings, so the differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The one operational rule that matters โ€” confirm=True is required for this destructive call โ€” is given, which is genuine when-to-use guidance. There is no guidance on when to delete a subtask versus updating it, nor on parent/child entity state or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_delete_placeholder_resourceProjects Delete Placeholder ResourceB
Destructive

Delete a placeholder resource (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
placeholder_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-idempotent, so the destructive nature is covered structurally. The description adds the confirm=True requirement, which is genuinely useful context beyond the annotation, but it says nothing about irreversibility, side effects on existing assignments, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler, and the destructive/confirm caveat is attached directly to the action. It is arguably too terse given the 0% schema coverage, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the low parameter count keeps complexity down. However, with 0% schema description coverage and no mention of placeholder_id semantics or deletion side effects, the description leaves real gaps for a destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden. It partially explains confirm (must be True to proceed), but the required placeholder_id parameter is completely undocumented in both schema and description, and the accepted int|string form is unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Delete) plus a distinct resource (placeholder resource), which clearly separates it from the many other delete siblings such as projects_delete_project or projects_delete_assignment. It does not need much sibling differentiation since the resource type is unique, but it adds no scope detail beyond the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use context, no prerequisite (e.g., must first list placeholder resources), and no guidance on alternatives to deletion. The only usage signal is the inline confirm=True requirement, which is more of a precondition than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_delete_projectProjects Delete ProjectA
Destructive

Delete a project (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature itself is redundant. However, the description adds the non-obvious operational requirement that confirm=True must be supplied (the schema only shows a default of false with no explanation), which is genuine behavioral value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the destructive flag and the required precondition are both stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. But for a destructive, non-idempotent, open-world operation, the description omits whether deletion cascades to phases, assignments, and time entries, and whether a failed confirm leaves anything changed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden. It explains the semantics of 'confirm' usefully, but says nothing about 'project_id' despite the schema allowing either an integer or a string via anyOf โ€” an ambiguity an agent could easily get wrong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Delete) and resource (project), which cleanly distinguishes it from the phase/assignment deletion siblings in the same namespace. It does not, however, explicitly mention any sibling by name or say what gets removed along with the project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies one hard precondition (confirm=True), which is real invocation guidance, but gives no when-to-use context, no alternative tooling, and no warnings about consequences of deletion. Adequate but clearly incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_delete_project_phaseProjects Delete Project PhaseA
Destructive

Delete a project phase (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
phase_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so 'Destructive' adds little on its own. The genuinely additive content is the confirm=True gating requirement, which appears nowhere in the schema (confirm is an undescribed boolean with default false) and is essential to a successful call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the destructive nature and the confirm gate front-loaded. Zero filler, nothing wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the risk profile plus the confirm requirement cover the essentials. For a two-ID delete, the definition is complete enough to invoke safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description only clarifies the confirm parameter and leaves project_id and phase_id unexplained. Those two names are largely self-evident and accept int-or-string, so the gap is modest rather than crippling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a project phase'), which cleanly separates it from sibling deletes like projects_delete_project and projects_delete_assignment. It does not explicitly name an alternative, but the resource scoping makes selection unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is the parenthetical prerequisite 'requires confirm=True', which tells the agent how to invoke but not when to choose this over update/other phase operations. No exclusions or warnings about deleting phases that still hold assignments or subtasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_get_assignmentProjects Get AssignmentC
Read-onlyIdempotent

Get details for a specific assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
assignment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that โ€” no note on auth/permission requirements, error behavior for unknown IDs, or what 'details' includes. It behaves as a near-tautology of the title.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded and free of filler. It is efficient, though the brevity comes at the cost of under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and this is a simple one-parameter read tool, which keeps the bar low. Still, with no usage guidance and an undocumented parameter, the description is only minimally sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description says nothing about the sole parameter. It does not explain that assignment_id accepts either an integer or string (anyOf), nor what an assignment ID represents or where to obtain one. With one undocumented required parameter, the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('Get') and resource ('assignment') scoped to a single record, which implicitly distinguishes it from projects_list_assignments. However, it offers no explicit differentiation from the ~30 sibling getters/CRUD tools, and 'details' is vague about what the payload contains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of the alternative (projects_list_assignments) for retrieving multiple records, and no prerequisites or conditions for calling this tool. The agent must infer everything from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_get_projectProjects Get ProjectB
Read-onlyIdempotent

Get project details including budget, phases, client, and dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
with_phasesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds useful content scope (budget, phases, client, dates) but says nothing about permissions, cost, or the side effect of with_phases=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the resource stated first and the payoff fields listed. Nothing is wasted, though it is arguably under-specified rather than tightly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is not required, and the annotations carry the safety story. The gap is the undocumented with_phases parameter, which materially shapes the response and is explained nowhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions project_id or with_phases. The word 'phases' hints obliquely at the with_phases toggle, but the agent gets no meaning for the ID format or what disabling phases actually changes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Get project details') with the returned fields enumerated (budget, phases, client, dates). This clearly distinguishes a single-project fetch from siblings like projects_list_projects or projects_get_project_phase, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this vs projects_list_projects, projects_get_project_phase, or projects_update_project. The required project_id and the with_phases toggle are never tied to a use case, so the agent must infer all routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_get_project_phaseProjects Get Project PhaseC
Read-onlyIdempotent

Get details for a specific project phase.

ParametersJSON Schema
NameRequiredDescriptionDefault
phase_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that - no note on what a missing phase returns, whether the lookup is scoped to the given project, or any access constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the operation front-loaded and no filler. It is efficient, though its brevity is achieved partly by omitting information the agent would find useful rather than by careful editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations carry the safety profile. The remaining gap is identifier semantics for two undocumented required params, which the description does nothing to close.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and both parameters are required, yet the description says nothing about project_id or phase_id. Notably, both accept integer OR string, and the description does not clarify the accepted identifier forms or that phase_id must belong to project_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get') and resource ('project phase'), making the operation unambiguous. It does not, however, distinguish this tool from close siblings such as projects_get_project or projects_list_project_phases, so the agent must rely on the tool name alone to route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no reference to the sibling tools that could be used instead (e.g., listing phases vs. fetching one). The agent is left to infer that this is a single-resource lookup from the name only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_list_assignmentsProjects List AssignmentsC
Read-onlyIdempotent

List resource scheduling assignments across projects or filtered by user/project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
to_dateNo
user_idNo
per_pageNo
from_dateNo
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds essentially nothing beyond those hints: no pagination behavior, no result volume, no ordering, and no auth/permission context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. Its efficiency is genuine, though the extreme brevity means it under-specifies rather than being optimally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, but the tool has 6 parameters at 0% schema coverage and the description omits pagination and date-range semantics entirely. For a list tool with date filtering, the description is materially incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It gestures at user/project filtering (mapping to user_id and project_id) but says nothing about the pagination params (page, per_page) or the date-range params (from_date, to_date), leaving 4 of 6 parameters unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (resource scheduling assignments) plus its scope (across projects or filtered by user/project). This distinguishes it from the single-record projects_get_assignment sibling, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'filtered by user/project' implies the retrieval scenarios, but there is no explicit when-to-use guidance, no exclusions, and no reference to alternative tools like projects_get_assignment for a single record. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_list_assignment_subtasksProjects List Assignment SubtasksB
Read-onlyIdempotent

List subtasks (checklist tasks) for a project assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
assignment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful clarification that subtasks are checklist tasks, but says nothing about pagination or result ordering. With annotations carrying the behavioral burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler and no redundancy. It is appropriately sized, though it is arguably a touch thin for a tool with two required parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be described, and annotations cover the safety profile. The definition is minimally complete, but it omits any hint about how subtasks relate to assignments or whether a project_id/assignment_id mismatch matters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so both parameters are undocumented structurally, but the names project_id and assignment_id are largely self-explanatory. The description adds nothing about ID formats or that both are required, so it neither compensates for nor worsens the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List), resource (subtasks/checklist tasks), and scope (for a project assignment), which clearly distinguishes it from projects_list_assignments and the create/delete subtask siblings. It doesn't explicitly name alternatives, but the resource specificity makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance, no prerequisites, and no mention of the related sibling tools (projects_create_assignment_subtask, projects_delete_assignment_subtask). Usage must be inferred entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_list_placeholder_resourcesProjects List Placeholder ResourcesC
Read-onlyIdempotent

List placeholder resources used for forecasting and capacity modeling.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond purpose - no pagination behavior, no volume expectations, no ordering guarantees - so it contributes little on top of the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no filler, and the purpose is front-loaded. It is efficient, though arguably under-specified rather than genuinely concise for a paginated list endpoint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The remaining gaps are pagination semantics and usage routing, which leave the definition merely adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters; page and per_page have only defaults, no semantics. The description does not compensate with any pagination guidance, so the agent cannot tell how to page through results or what the defaults imply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('placeholder resources') and adds domain framing ('used for forecasting and capacity modeling') that separates this resource from the other projects_* list endpoints. It does not, however, explicitly distinguish itself from its create/delete placeholder-resource siblings, though the list vs. mutation distinction is self-evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use context, no prerequisites, and no mention of alternatives such as projects_list_projects or projects_create_placeholder_resource. An agent gets only the bare purpose and must infer when this endpoint is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_list_project_phasesProjects List Project PhasesC
Read-onlyIdempotent

List phases belonging to a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no pagination, ordering, or result-size behavior, and no indication of what happens when the project has no phases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though bordering on under-specified rather than genuinely concise-and-complete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool, the output schema covers return values and the annotations cover the safety profile, so little is strictly required. Still, with 0% parameter coverage and no pagination or empty-result guidance, the description is minimum viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single project_id parameter accepts anyOf integer/string with no explanation in either place. The phrase 'belonging to a project' hints that project_id is the parent project, but adds no format or type guidance, so it does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (phases) scoped to a parent project, which separates it from projects_list_projects and the singular projects_get_project_phase. It stops short of naming any sibling or spelling out the distinction explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use statement, no prerequisites, and no mention of alternatives such as projects_get_project_phase for a single phase. Usage is only weakly implied by the word 'belonging'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_list_projectsProjects List ProjectsC
Read-onlyIdempotent

List projects in Smartsheet RM with filtering, phase inclusion, and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
archivedNo
per_pageNo
sort_fieldNo
sort_orderNoasc
with_phasesNo
filter_fieldNo
filter_valueNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and mutability profile is fully covered without the description. The description adds only the mention of pagination, which is already visible as page/per_page in the schema; it discloses nothing about auth requirements, rate limits, or result shape. With annotations carrying the behavioral load, this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficiently written, though the terseness is part of the problem given how much parameter behavior goes unstated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, but with 8 parameters at 0% schema coverage the description leaves the majority of the surface (sorting, archived filtering, default page size) undocumented. For a list tool with this many knobs, it is under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, so the description must compensate and largely does not. It alludes to filtering (filter_field/filter_value), phase inclusion (with_phases), and pagination (page/per_page), but gives no value syntax, and says nothing about sort_field, sort_order, or the archived flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (projects in Smartsheet RM), which is enough to separate it from projects_get_project and the create/update/delete siblings. It stops short of explicitly naming an alternative or scoping the result set, so it is clear but not maximally distinguishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'with filtering, phase inclusion, and pagination' gestures at capabilities but never says when to choose this tool over projects_list_project_phases or projects_get_project. There are no prerequisites, no exclusions, and no conditions that would route the agent to a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_list_project_usersProjects List Project UsersB
Read-onlyIdempotent

List users associated with or assigned to a specific project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the scope nuance (associated vs assigned users) but says nothing about pagination behavior despite page/per_page parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no waste, front-loading the verb and resource. It is appropriately sized for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a 3-parameter tool the description leaves pagination undocumented and offers no usage context, so it is only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description only implicitly covers project_id ('a specific project'). The page and per_page parameters are entirely undocumented, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: listing users scoped to a specific project. The phrase 'associated with or assigned to' is slightly ambiguous about which set is returned, and it does not differentiate itself from sibling tools like projects_list_assignments or admin_list_users.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives. With no mention of projects_list_assignments or admin_list_users, an agent cannot infer the right entry point when it needs users tied to a project.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_list_status_optionsProjects List Status OptionsA
Read-onlyIdempotent

List account-level assignment work status options.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the 'account-level' scope qualifier, which is useful, but says nothing about pagination, ordering, or whether results are cacheable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. Every word carries information about verb, scope, and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not enumerate return values, and annotations cover the read-only safety profile. The description is nearly sufficient, though it could note the intended consumer (assignment create/update flows) to fully situate the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and the schema is trivially complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List account-level assignment work status options.' An agent can tell this is a reference/enumeration lookup rather than a CRUD operation. It does not differentiate itself from siblings beyond the 'account-level' qualifier, but no sibling overlaps with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is offered. A caller is not told that this is a reference list for obtaining valid status values when creating or updating assignments, nor is it contrasted with any alternative source of status values.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_update_assignmentProjects Update AssignmentC

Update dates, allocation percentage, or hours on an existing assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
percentNo
end_dateNo
start_dateNo
fixed_hoursNo
assignment_idYes
hours_per_dayNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the description only needs to add context. It adds the set of mutable fields, which is useful, but stays silent on the critical mutation semantics: whether omitted fields are left unchanged (which the all-null-default schema strongly implies) and why a non-idempotent update behaves that way.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the resource/action lead the sentence. It is only penalized in that its brevity leaves the gaps noted above unaddressed rather than that it wastes words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. But for a non-idempotent mutation over 7 undocumented parameters, the description omits partial-update semantics, the required assignment_id, and the note field, leaving an agent materially under-informed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters, so the description carries the full burden. It loosely maps 'dates', 'allocation percentage', and 'hours' onto start_date/end_date, percent, and the three distinct hour fields (fixed_hours, hours_per_day) without disambiguating them, and it never mentions assignment_id (the sole required identifier) or note, which is silently updatable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (Update) plus resource (assignment) and enumerates the mutable field groups (dates, allocation percentage, hours), so an agent knows what it does. However, it does not distinguish itself from siblings like projects_update_project, projects_update_project_phase, or projects_update_assignment_subtask, all of which follow the same naming pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, no prerequisites (e.g., assignment must exist / permissions), and no mention of the read counterpart projects_get_assignment for inspecting current values before mutating. Usage must be entirely inferred from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_update_projectProjects Update ProjectC

Update project metadata, state, dates, budget or archive status.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
budgetNo
archivedNo
end_dateNo
project_idYes
start_dateNo
budget_typeNo
descriptionNo
project_stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing behavioral beyond the field list: it does not explain the null-default partial-update semantics, whether omitted fields are left untouched, or what permissions are required for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb first and zero filler. It is efficient, though given nine parameters and a mutation it is arguably under-specified rather than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a 9-parameter mutation with 0% schema coverage and no parameter documentation, one sentence is not enough: partial-update semantics, field value formats, and permissions are all missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It gestures at the updatable fields in vague categories ("metadata", "state", "dates", "budget", "archive status") but does not map them to concrete parameters like budget_type or project_state, does not mention the required project_id, and does not explain that null means no change.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (project) plus the field categories being changed (metadata, state, dates, budget, archive status). An agent can distinguish it from projects_update_project_phase or projects_update_assignment by the resource. It stops short of an explicit sibling comparison, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what can be changed but never says when to reach for this tool versus projects_update_project_phase, projects_clone_project_schedule, or projects_delete_project. There are no prerequisites, no note about which fields are optional, and no exclusions, leaving usage entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_update_project_phaseProjects Update Project PhaseC

Update an existing project phase.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
budgetNo
end_dateNo
phase_idYes
project_idYes
start_dateNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose non-destructive, non-idempotent, open-world behavior, so the description needed to add things like which fields are mutable, whether partial updates are supported, or permission requirements. It adds none of that โ€“ a single sentence with no behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is short and front-loaded, but at seven undocumented parameters this is under-specification rather than genuine conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, but a mutation tool with seven free-form parameters at 0% schema coverage needs the description to carry far more. It is inadequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Seven parameters with 0% schema description coverage and zero enum documentation; the description names no fields and explains no semantics. With the schema silent and the description silent, an agent gets no help distinguishing name, budget, start_date, end_date, or description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Update an existing project phase'), which is more than a bare tautology, but it adds nothing beyond the title and does not distinguish itself from siblings like projects_update_project or projects_delete_project_phase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus projects_update_project, projects_create_project_phase, or other phase operations. The agent must infer context entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_confirm_suggested_hoursTime Confirm Suggested HoursA

Auto-confirm all unconfirmed scheduled suggestions for a user within a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateYes
user_idYes
from_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful context the annotations do not: it is a bulk operation ('all unconfirmed scheduled suggestions') rather than a single-record write. Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. However, it does not say what happens to already-confirmed entries, whether partial failures roll back, or that re-running re-confirms state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the action and its scope are stated immediately. Nothing is repeated from the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, for a bulk mutation with three fully undocumented parameters and no date-format or no-suggestions-found behavior described, the definition is thinner than the tool's complexity warrants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden of explaining all three parameters; it does identify the user scope and date range conceptually, mapping to user_id, from_date, and to_date. But it adds no format or syntax detail (date format, whether user_id accepts int or string as the anyOf allows), so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('auto-confirm'), a specific resource ('unconfirmed scheduled suggestions'), and scope ('for a user within a date range'), so the agent knows exactly what operation is performed. It stops short of naming the sibling it pairs with, time_list_user_suggestions, so it does not fully differentiate within the time_* family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'unconfirmed' implies this should follow a suggestion-listing step (time_list_user_suggestions), but the description never states when to use this tool versus listing, updating, or manually confirming entries. Usage is inferable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_create_approvalTime Create ApprovalC

Submit or approve approvable records (approvable_type: 'time_entries' or 'expense_items').

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
statusNoapproved
approvable_idsYes
approvable_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, idempotent=false, destructive=false, openWorld=true, so the safety profile is covered. The description adds only that the tool can both submit and approve, but says nothing about permissions required, what state the records transition to, whether a default 'approved' status is applied, or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no padding, and the key scoping detail (the type values) is inline rather than buried. It is efficient, though it is arguably too terse for a four-parameter mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, but with 0% parameter coverage and an overlapping sibling (time_update_time_approval_status) the description is not complete enough to call this tool correctly and confidently. It should at minimum explain the status parameter's effect and the submit-vs-approve distinction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It usefully supplies the otherwise-undocumented enum for approvable_type ('time_entries' or 'expense_items'), but ignores notes, approvable_ids, and the status parameter (which defaults to 'approved' and clearly controls the submit-vs-approve behavior), leaving three of four parameters unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete action pair ('Submit or approve') and resource ('approvable records'), and enumerates the two valid approvable_type values. It does not, however, distinguish itself from the closely related sibling time_update_time_approval_status, leaving the boundary between 'approve' and 'update approval status' ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as time_update_time_approval_status, time_list_approvals, or the submit/approve flow. The only routing hint is the approvable_type values, which is scope, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_create_time_entryTime Create Time EntryC

Create a new time entry for a user on a project (date format: YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
hoursYes
notesNo
user_idYes
phase_idNo
project_idYes
is_billableNo
custom_field_valuesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing behavioral on top: it does not warn that repeated calls create duplicate entries (non-idempotent), does not state permission/auth requirements, and does not say what happens on validation failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the core operation front-loaded and the date format parenthetically appended. No wasted words, though it is arguably too terse for an 8-parameter mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, but for a non-idempotent write tool with 8 parameters at 0% schema coverage and no usage guidance, the description leaves major gaps. An agent cannot tell how the optional billing/phase/custom-field parameters affect the created entry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, so the description carries the full burden and mostly fails. It names user, project and date (with a YYYY-MM-DD format hint), but says nothing about hours, notes, phase_id, is_billable (which defaults to true and has billing impact), or custom_field_values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a new time entry") plus the linking entities (user, project), so the operation is unambiguous. It does not distinguish itself from the many sibling tools in the time family (update/delete/list time entries), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as time_update_time_entry or time_fill_weekly_timesheet. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_delete_approvalTime Delete ApprovalA
Destructive

Delete a pending approval record (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
approval_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered, but the description adds real value: the deletion is limited to "pending" records and the confirm=True precondition is disclosed. It still omits what happens on failure (e.g., non-pending record) or whether deletion is reversible, keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the verb front-loaded and the constraint in a parenthetical; every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description covers the two things an agent most needs for a destructive operation: the pending-only scope and the confirm flag. It could still state irreversibility or error behavior, but nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters, so the description must compensate. It does document the critical confirm=True requirement, which is not in the schema, but says nothing about the required approval_id (format, accepted integer-or-string types), leaving half the parameters unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Delete ... approval record") and narrows scope with "pending", so an agent knows it targets only pending approvals. However, it does not name or distinguish itself from nearby approval siblings (time_list_approvals, time_create_approval, time_update_time_approval_status), so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no named alternatives; the only guidance offered ("requires confirm=True") is a parameter precondition rather than routing advice. Usage is only weakly implied by the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_delete_time_entryTime Delete Time EntryA
Destructive

Delete a time entry (Destructive: requires confirm=True).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
entry_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds a critical behavioral requirement not captured in annotations: confirm=True is required for this destructive operation. It stops short of describing irreversible effects or constraints such as whether approved time entries can be deleted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. Every clause earns its place by communicating the action and the required confirmation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus annotations and output schema cover the core destructive nature and confirmation requirement. However, it leaves notable gaps for an agent: entry_id semantics are undocumented despite 0% schema description coverage, and no side-effect or constraint details are given for a destructive mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It does add meaningful semantics for the confirm parameter by stating that confirm=True is required, but it completely omits any explanation of entry_id, the only required parameter, including whether it accepts integer or string values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Delete') and resource ('a time entry'), making the tool's operation immediately understandable. It does not add scope or differentiation beyond what the name and title already convey, but the resource distinction is sufficient to separate it from sibling update/create/list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use guidance, no prerequisites, and no alternatives such as updating instead of deleting. It only states the destructive nature and confirmation requirement, leaving the agent to infer usage context from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_fill_weekly_timesheetTime Fill Weekly TimesheetB

Batch-fill weekly timesheet entries (Mon-Fri 8h default, or 7-day with include_weekends=True) for a user.

start_date: Monday date of the week in YYYY-MM-DD. include_weekends: When True, logs Saturday and Sunday entries as well. weekend_hours: Specific hours for Saturday/Sunday (defaults to daily_hours if omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoStandard logged hours
user_idYes
project_idNo
start_dateYes
daily_hoursNo
weekend_hoursNo
include_weekendsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a write operation (readOnlyHint false), open-world, non-idempotent, and non-destructive. The description adds default hours and weekend behavior, but it does not disclose whether existing entries are overwritten, how conflicts are handled, or any auth requirements, leaving meaningful behavioral gaps for a non-idempotent batch write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the main action, and uses terse line-per-parameter notes. Every line contributes useful information, though the parameter notes could be integrated slightly more smoothly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a batch write tool the description still omits conflict/overwrite behavior and several parameters, making it only minimally complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and 7 parameters, the description partially compensates: it explains start_date (must be Monday), include_weekends, weekend_hours, and implies daily_hours defaults to 8. It does not explain user_id, project_id, or notes, so significant parameter meaning is still missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Batch-fill weekly timesheet entries' for a user, with scope Mon-Fri or 7-day. It is distinguishable from single-entry siblings by 'batch-fill weekly,' but it does not explicitly name alternatives such as time_create_time_entry or time_reconcile_and_submit_week.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies when to use the tool by describing the weekly batch-fill scenario and the weekend option, but it gives no explicit when-to-use versus alternatives, no when-not-to-use, and no prerequisites. Usage must be inferred from the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_get_time_entryTime Get Time EntryB
Read-onlyIdempotent

Get details for a specific time entry by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds no behavioral context beyond restating a read: no mention of not-found/error behavior, auth requirements, or whether the ID must belong to the caller.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It is appropriately sized for a trivial lookup, though it is arguably too terse to carry much information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not required, and annotations cover the safety profile. For a simple get-by-ID read the description is close to sufficient, with only ID format and error behavior as minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the entry_id property carries no description or format, but the phrase 'by its ID' does clarify that the lone parameter is an entry identifier. It still does not state whether the ID is numeric or string (schema allows anyOf) or give an example, so it only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('time entry') scoped by ID, which is enough to distinguish it from the create/update/delete/list siblings in the same time_ family. However, it never names those siblings or clarifies the relationship, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance and names no alternatives. It does not say to use time_list_time_entries for browsing or when a single-entry lookup is preferable, leaving the agent to infer routing from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_list_approvalsTime List ApprovalsB
Read-onlyIdempotent

List submitted time entry and expense approvals across the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds one useful qualifier โ€” only 'submitted' approvals, and org-wide rather than user-scoped โ€” but says nothing about pagination limits, sort order, or result volume.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that carries the verb, the resource, the state filter ('submitted'), and the scope. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is unnecessary, and the read-only annotations cover safety. However, for a paginated org-wide list the description omits pagination semantics and result ordering, leaving scope questions to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters; page and per_page have no descriptions at all. The description mentions no parameters, no pagination behavior, and no defaults, so it does not compensate for the coverage gap despite the familiar parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus a clearly bounded resource ('submitted time entry and expense approvals') and scope ('across the organization'). It does not explicitly distinguish itself from siblings such as time_list_time_entries or the create/update/delete approval tools, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of alternatives (time_create_approval, time_delete_approval, time_update_time_approval_status), and no indication of prerequisites or typical workflow. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_list_time_entriesTime List Time EntriesB
Read-onlyIdempotent

List time entries across organization or filtered by project, user, or date range (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
to_dateNo
user_idNo
per_pageNo
from_dateNo
project_idNo
with_suggestionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds nothing behavioral beyond that โ€“ it doesn't explain pagination behavior, ordering, or the with_suggestions toggle โ€“ so a baseline 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; appropriately sized for a list tool. It is arguably too terse for seven parameters, but there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters at 0% schema coverage and a mutation-free list tool, the description leaves real gaps: pagination controls, with_suggestions semantics, and the ID types are unexplained. An output schema exists so return values need no coverage, but the input side is under-served.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it partially does by naming the filter dimensions and specifying the YYYY-MM-DD date format. However, it says nothing about page, per_page, with_suggestions, or the int|string duality of user_id/project_id, leaving several parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (List) and resource (time entries) and states the available filter dimensions (organization, project, user, date range). It is clearly distinct from the singular sibling time_get_time_entry, though it doesn't explicitly differentiate from other list tools like time_list_approvals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no mention of pagination defaults, and no exclusions. Usage is only implied by the word 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_list_user_suggestionsTime List User SuggestionsB
Read-onlyIdempotent

Read unconfirmed scheduled time suggestions for a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNo
user_idYes
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds one meaningful behavioral fact beyond that โ€“ it returns only *unconfirmed* suggestions, not confirmed ones โ€“ but says nothing about pagination, result limits, or what a confirmed suggestion looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. It is efficient, though the brevity borders on under-specification for a three-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the read-only nature is covered by annotations. What is missing is the date-range filter semantics and pagination behavior, which are relevant for a list tool with undocumented parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters, so the description carries the full burden and largely fails. It implies the 'user' scope of user_id but explains nothing about from_date/to_date filtering, their formats, defaults, or whether the date range is inclusive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and a well-defined resource ('unconfirmed scheduled time suggestions for a user'), so an agent understands exactly what comes back. It does not name or contrast with the related siblings time_confirm_suggested_hours or time_list_time_entries, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as time_confirm_suggested_hours (the natural follow-up action). The agent must infer usage purely from the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_lock_timesheetTime Lock TimesheetB
Idempotent

Lock or unlock timesheet records for a user up to a specified lock date (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
unlockNo
user_idYes
lock_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare not-read-only, non-destructive, idempotent, and open-world, so the safety profile is mostly covered. The description adds that the operation is bidirectional (lock or unlock via the same tool), which the annotations do not convey. However, it never explains what locking a timesheet actually prevents or whether a locked record can still be edited by privileged users.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and resource, with the date format inline. No filler, though the format hint could have been placed after the operation rather than mid-clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. For a state-changing tool with real-world effect, however, the description omits permission requirements and the downstream consequence of locking, which is a meaningful gap even allowing for the annotation coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It supplies the lock_date format (YYYY-MM-DD) and implies the unlock flag's role through 'Lock or unlock', but user_id semantics (accepting integer or string per anyOf) and the default false on unlock are never explained in prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (lock/unlock), a specific resource (timesheet records), a scope (for a user), and a boundary (up to a specified lock date). It is clearly distinct from the read/write siblings like time_update_time_entry because it is a lock-state operation, though it does not explicitly name those siblings to route the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this over the alternative write tools (time_update_time_entry, time_update_time_approval_status, time_reconcile_and_submit_week), nor any prerequisite or caution about locking. The condition that selects it is left entirely to inference from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_reconcile_and_submit_weekTime Reconcile And Submit WeekB

Audit weekly logged hours against a target (40h) and optionally submit/approve timesheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
start_dateYes
auto_submitNo
target_hoursNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description usefully adds that the write is optional and gated on auto_submit, but says nothing about why the tool is non-idempotent, what submission actually changes, or whether it needs approval rights.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the primary action ('audit weekly logged hours') leads. It is arguably too terse for a four-parameter mutating tool, which slightly undercuts 'appropriately sized'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and annotations cover safety. However, for a non-idempotent, open-world mutation with 0% parameter coverage, the description leaves key gaps: submission/approval semantics, prerequisites, and the meaning of the required date parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It loosely maps to two params ('target (40h)' โ†’ target_hours, 'optionally submit/approve' โ†’ auto_submit) but never names them, and the two required params (user_id, start_date) get no explanation at all โ€” notably whether start_date is a week-start or any date in the week.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names specific verbs (audit, submit/approve) and a specific resource (weekly logged hours / timesheet) with scope (weekly, 40h target). It is clear on its own, but never distinguishes itself from close siblings like time_fill_weekly_timesheet or time_update_time_approval_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'optionally submit/approve' phrasing implies the conditional use case and the default no-write path, but there is no explicit when-to-use versus the fill/approval siblings and no stated prerequisites (e.g., a timesheet must exist first). Usage is implied rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_update_time_approval_statusTime Update Time Approval StatusC
Idempotent

Approve or reject time entries for a user (status: 'approved', 'rejected', 'pending').

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
user_idYes
entry_idsYes
approver_notesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the safety bar is lower. But the description adds nothing behavioral beyond a status list - it doesn't disclose that this is a batch operation over entry_ids, nor any permission/precondition for approving another user's entries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. Efficient, though the brevity is partly a byproduct of under-specification rather than tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, but for a mutation tool with four parameters and 0% schema coverage, the description leaves too much unsaid: no batch semantics, no permission context, no guidance on the status transitions. It is thinner than the tool's complexity warrants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It does mention the valid status values ('approved', 'rejected', 'pending'), which is its only real contribution, but says nothing about user_id, entry_ids, or the optional approver_notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (approve/reject) and resource (time entries) scoped to a user, which is enough for an agent to understand the operation. However, it does not differentiate itself from nearby siblings like time_create_approval or time_delete_approval, so the boundary against those tools must be inferred.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternative. The description only lists the accepted status values, leaving the agent to guess when this tool should be chosen over the approval-creation or approval-listing siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_update_time_entryTime Update Time EntryC

Update an existing time entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
hoursNo
notesNo
entry_idYes
is_billableNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that โ€” it does not say whether the update is partial or full, what happens to omitted fields, or whether it requires permissions, leaving a gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no wasted words and the operation front-loaded. However, it is under-specified rather than genuinely concise, so it earns only a middling score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter mutation tool with an output schema and annotations, the description is too thin. It omits which fields are updatable, whether updates are partial, and any behavioral constraints an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters, so the description carries the full burden โ€” yet it mentions no parameter at all. It gives no meaning for entry_id, date, hours, notes, or is_billable beyond the bare property names, failing to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Update an existing time entry'), which is clear and distinguishable from the create/delete/get/list siblings by the verb alone. However, it does not explicitly name or contrast against any alternative tool, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus time_create_time_entry, time_get_time_entry, or time_delete_time_entry, nor any mention of prerequisites or conditions. The sentence merely restates the operation with no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 196 tool updatesv1.2.1
    • Addedadmin_create_client
    • Addedadmin_create_client_contact
    • Addedadmin_create_custom_field
    • Addedadmin_create_discipline
    • Addedadmin_create_expense
    • Addedadmin_create_expense_category
    • Addedadmin_create_holiday
    • Addedadmin_create_leave_type
    • Addedadmin_create_role
    • Addedadmin_create_tag
    • Addedadmin_create_user
    • Addedadmin_create_user_bill_rate
    • Addedadmin_create_webhook
    • Addedadmin_delete_client
    • Addedadmin_delete_client_contact
    • Addedadmin_delete_custom_field
    • Addedadmin_delete_discipline
    • Addedadmin_delete_expense
    • Addedadmin_delete_expense_category
    • Addedadmin_delete_holiday
    • Addedadmin_delete_leave_type
    • Addedadmin_delete_role
    • Addedadmin_delete_tag
    • Addedadmin_delete_user
    • Addedadmin_delete_webhook
    • Addedadmin_get_client
    • Addedadmin_get_custom_field
    • Addedadmin_get_expense
    • Addedadmin_get_holiday
    • Addedadmin_get_leave_type
    • Addedadmin_get_report_rows
    • Addedadmin_get_report_totals
    • Addedadmin_get_user
    • Addedadmin_get_user_availability
    • Addedadmin_get_user_statuses
    • Addedadmin_get_user_utilization
    • Addedadmin_list_client_contacts
    • Addedadmin_list_clients
    • Addedadmin_list_custom_field_values
    • Addedadmin_list_custom_fields
    • Addedadmin_list_disciplines
    • Addedadmin_list_expense_categories
    • Addedadmin_list_expenses
    • Addedadmin_list_holidays
    • Addedadmin_list_leave_types
    • Addedadmin_list_roles
    • Addedadmin_list_tags
    • Addedadmin_list_user_bill_rates
    • Addedadmin_list_users
    • Addedadmin_list_webhooks
    • Addedadmin_set_custom_field_values
    • Addedadmin_set_user_status
    • Addedadmin_update_client
    • Addedadmin_update_custom_field
    • Addedadmin_update_discipline
    • Addedadmin_update_expense
    • Addedadmin_update_holiday
    • Addedadmin_update_leave_type
    • Addedadmin_update_role
    • Addedadmin_update_user
    • Addedprojects_clone_project_schedule
    • Addedprojects_create_assignment
    • Addedprojects_create_assignment_subtask
    • Addedprojects_create_placeholder_resource
    • Addedprojects_create_project
    • Addedprojects_create_project_phase
    • Addedprojects_delete_assignment
    • Addedprojects_delete_assignment_subtask
    • Addedprojects_delete_placeholder_resource
    • Addedprojects_delete_project
    • Addedprojects_delete_project_phase
    • Addedprojects_get_assignment
    • Addedprojects_get_project
    • Addedprojects_get_project_phase
    • Addedprojects_list_assignment_subtasks
    • Addedprojects_list_assignments
    • Addedprojects_list_placeholder_resources
    • Addedprojects_list_project_phases
    • Addedprojects_list_project_users
    • Addedprojects_list_projects
    • Addedprojects_list_status_options
    • Addedprojects_update_assignment
    • Addedprojects_update_project
    • Addedprojects_update_project_phase
    • Removedrm_clone_project_schedule
    • Removedrm_confirm_suggested_hours
    • Removedrm_create_approval
    • Removedrm_create_assignment
    • Removedrm_create_assignment_subtask
    • Removedrm_create_client
    • Removedrm_create_client_contact
    • Removedrm_create_custom_field
    • Removedrm_create_discipline
    • Removedrm_create_expense
    • Removedrm_create_expense_category
    • Removedrm_create_holiday
    • Removedrm_create_leave_type
    • Removedrm_create_placeholder_resource
    • Removedrm_create_project
    • Removedrm_create_project_phase
    • Removedrm_create_role
    • Removedrm_create_tag
    • Removedrm_create_time_entry
    • Removedrm_create_user
    • Removedrm_create_user_bill_rate
    • Removedrm_create_webhook
    • Removedrm_delete_approval
    • Removedrm_delete_assignment
    • Removedrm_delete_assignment_subtask
    • Removedrm_delete_client
    • Removedrm_delete_client_contact
    • Removedrm_delete_custom_field
    • Removedrm_delete_discipline
    • Removedrm_delete_expense
    • Removedrm_delete_expense_category
    • Removedrm_delete_holiday
    • Removedrm_delete_leave_type
    • Removedrm_delete_placeholder_resource
    • Removedrm_delete_project
    • Removedrm_delete_project_phase
    • Removedrm_delete_role
    • Removedrm_delete_tag
    • Removedrm_delete_time_entry
    • Removedrm_delete_user
    • Removedrm_delete_webhook
    • Removedrm_fill_weekly_timesheet
    • Removedrm_get_assignment
    • Removedrm_get_client
    • Removedrm_get_custom_field
    • Removedrm_get_expense
    • Removedrm_get_holiday
    • Removedrm_get_leave_type
    • Removedrm_get_project
    • Removedrm_get_project_phase
    • Removedrm_get_report_rows
    • Removedrm_get_report_totals
    • Removedrm_get_time_entry
    • Removedrm_get_user
    • Removedrm_get_user_availability
    • Removedrm_get_user_statuses
    • Removedrm_get_user_utilization
    • Removedrm_list_approvals
    • Removedrm_list_assignment_subtasks
    • Removedrm_list_assignments
    • Removedrm_list_client_contacts
    • Removedrm_list_clients
    • Removedrm_list_custom_field_values
    • Removedrm_list_custom_fields
    • Removedrm_list_disciplines
    • Removedrm_list_expense_categories
    • Removedrm_list_expenses
    • Removedrm_list_holidays
    • Removedrm_list_leave_types
    • Removedrm_list_placeholder_resources
    • Removedrm_list_project_phases
    • Removedrm_list_project_users
    • Removedrm_list_projects
    • Removedrm_list_roles
    • Removedrm_list_status_options
    • Removedrm_list_tags
    • Removedrm_list_time_entries
    • Removedrm_list_user_bill_rates
    • Removedrm_list_user_suggestions
    • Removedrm_list_users
    • Removedrm_list_webhooks
    • Removedrm_lock_timesheet
    • Removedrm_reconcile_and_submit_week
    • Removedrm_set_custom_field_values
    • Removedrm_set_user_status
    • Removedrm_update_assignment
    • Removedrm_update_client
    • Removedrm_update_custom_field
    • Removedrm_update_discipline
    • Removedrm_update_expense
    • Removedrm_update_holiday
    • Removedrm_update_leave_type
    • Removedrm_update_project
    • Removedrm_update_project_phase
    • Removedrm_update_role
    • Removedrm_update_time_approval_status
    • Removedrm_update_time_entry
    • Removedrm_update_user
    • Addedtime_confirm_suggested_hours
    • Addedtime_create_approval
    • Addedtime_create_time_entry
    • Addedtime_delete_approval
    • Addedtime_delete_time_entry
    • Addedtime_fill_weekly_timesheet
    • Addedtime_get_time_entry
    • Addedtime_list_approvals
    • Addedtime_list_time_entries
    • Addedtime_list_user_suggestions
    • Addedtime_lock_timesheet
    • Addedtime_reconcile_and_submit_week
    • Addedtime_update_time_approval_status
    • Addedtime_update_time_entry
  2. 98 tool updatesv1.1.3
    • First observedrm_clone_project_schedule
    • First observedrm_confirm_suggested_hours
    • First observedrm_create_approval
    • First observedrm_create_assignment
    • First observedrm_create_assignment_subtask
    • First observedrm_create_client
    • First observedrm_create_client_contact
    • First observedrm_create_custom_field
    • First observedrm_create_discipline
    • First observedrm_create_expense
    • First observedrm_create_expense_category
    • First observedrm_create_holiday
    • First observedrm_create_leave_type
    • First observedrm_create_placeholder_resource
    • First observedrm_create_project
    • First observedrm_create_project_phase
    • First observedrm_create_role
    • First observedrm_create_tag
    • First observedrm_create_time_entry
    • First observedrm_create_user
    • First observedrm_create_user_bill_rate
    • First observedrm_create_webhook
    • First observedrm_delete_approval
    • First observedrm_delete_assignment
    • First observedrm_delete_assignment_subtask
    • First observedrm_delete_client
    • First observedrm_delete_client_contact
    • First observedrm_delete_custom_field
    • First observedrm_delete_discipline
    • First observedrm_delete_expense
    • First observedrm_delete_expense_category
    • First observedrm_delete_holiday
    • First observedrm_delete_leave_type
    • First observedrm_delete_placeholder_resource
    • First observedrm_delete_project
    • First observedrm_delete_project_phase
    • First observedrm_delete_role
    • First observedrm_delete_tag
    • First observedrm_delete_time_entry
    • First observedrm_delete_user
    • First observedrm_delete_webhook
    • First observedrm_fill_weekly_timesheet
    • First observedrm_get_assignment
    • First observedrm_get_client
    • First observedrm_get_custom_field
    • First observedrm_get_expense
    • First observedrm_get_holiday
    • First observedrm_get_leave_type
    • First observedrm_get_project
    • First observedrm_get_project_phase
    • First observedrm_get_report_rows
    • First observedrm_get_report_totals
    • First observedrm_get_time_entry
    • First observedrm_get_user
    • First observedrm_get_user_availability
    • First observedrm_get_user_statuses
    • First observedrm_get_user_utilization
    • First observedrm_list_approvals
    • First observedrm_list_assignment_subtasks
    • First observedrm_list_assignments
    • First observedrm_list_client_contacts
    • First observedrm_list_clients
    • First observedrm_list_custom_field_values
    • First observedrm_list_custom_fields
    • First observedrm_list_disciplines
    • First observedrm_list_expense_categories
    • First observedrm_list_expenses
    • First observedrm_list_holidays
    • First observedrm_list_leave_types
    • First observedrm_list_placeholder_resources
    • First observedrm_list_project_phases
    • First observedrm_list_project_users
    • First observedrm_list_projects
    • First observedrm_list_roles
    • First observedrm_list_status_options
    • First observedrm_list_tags
    • First observedrm_list_time_entries
    • First observedrm_list_user_bill_rates
    • First observedrm_list_user_suggestions
    • First observedrm_list_users
    • First observedrm_list_webhooks
    • First observedrm_lock_timesheet
    • First observedrm_reconcile_and_submit_week
    • First observedrm_set_custom_field_values
    • First observedrm_set_user_status
    • First observedrm_update_assignment
    • First observedrm_update_client
    • First observedrm_update_custom_field
    • First observedrm_update_discipline
    • First observedrm_update_expense
    • First observedrm_update_holiday
    • First observedrm_update_leave_type
    • First observedrm_update_project
    • First observedrm_update_project_phase
    • First observedrm_update_role
    • First observedrm_update_time_approval_status
    • First observedrm_update_time_entry
    • First observedrm_update_user

TDQS

C2.6/5.0

Scored across 98 tools

Disambiguation4/5

Tools are largely distinct by resource and action, but overlaps exist (e.g., time_create_approval and time_update_time_approval_status both manage time entry approvals; timesheet tools like fill/confirm/reconcile could be confused). With 98 tools, minor ambiguity is inevitable, but descriptions generally help.

Naming Consistency4/5

Consistent snake_case with a clear prefix_action pattern (time_, projects_, admin_). Minor deviations like 'set' vs 'update' and plural/singular inconsistencies (user_statuses vs user_status) slightly reduce predictability.

Tool Count1/5

98 tools is extreme over-provisioning for any single server. Even for a complex RM domain, this count is a usability hazard, far exceeding the 15-tool guideline.

Completeness4/5

Broad coverage of projects, time, and admin entities, including CRUD for most resources and special operations. Minor gaps like missing update for tags, expense categories, and client contacts, but overall surface is comprehensive.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers