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 work with the Smartsheet RM public REST API: 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_* — 17 tools, incl. 1 bulk-gated)"]
    Middle --> SubProj["projects namespace (projects_* — 27 tools, incl. 1 bulk-gated)"]
    Middle --> SubAdmin["admin namespace (admin_* — 60 tools)"]
    SubTime --> Guards["Domain Guards"]
    SubProj --> Guards
    SubAdmin --> Guards
    Guards --> ClientPool["SmartsheetRMClient (httpx.AsyncClient Pool)"]
    ClientPool -->|"auth header + 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_* (17 tools, including the bulk-gated time_bulk_delete_time_entries).

    • namespace="projects" → projects_* (27 tools, including the bulk-gated projects_bulk_delete_assignments).

    • namespace="admin" → admin_* (60 tools).

  • Hierarchical middleware:

    • Parent: ParentAuditMiddleware (timing, lifecycle logs, secret redaction) and ReadOnlyGateMiddleware (annotation-driven read-only gate, see below).

    • Child: TimeDomainGuardMiddleware (logged hours must be 0–24; bulk gate), ProjectsDomainGuardMiddleware (project names must be non-empty; bulk gate), AdminDomainGuardMiddleware (per_page must be ≤ 1000).

Profiles

Pick a profile with --profile or SMARTSHEET_RM_PROFILE (default full). An unknown profile name fails at startup with ValueError. There are two kinds:

  • Domain-mount profiles mount whole domains: full, time, projects, admin, and readonly.

  • Job profiles mount every domain, then expose only an explicit list of tool names for one job. Prompts and resources stay available on every job profile and on readonly; the domain-mount profiles time, projects and admin carry only their own domain's prompts and resources. Each listed name is checked against the full catalog when the server builds, so a typo fails at startup.

Profile

Job it serves

Tools

With SMARTSHEET_RM_READONLY=1

full

Complete catalog, nothing omitted. Bulk tools are listed and refused at call time unless SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1. Tool Search and Code Mode attach only here.

104

39

time

Time tracking, approvals and timesheet recipes (time domain).

17

4

projects

Projects, phases, assignments, placeholders and subtasks (projects domain).

27

10

admin

Users, org reference data, clients, expenses, fields, reports and webhooks (admin domain).

60

25

readonly

Inspect without side effects: every tool annotated readOnlyHint=True.

39

39

timesheets

Team member or manager logs, corrects, submits, locks and approves weekly time against their assignments.

24

12

staffing

Resource manager checks availability and utilization and creates or adjusts assignments, placeholders and subtasks.

27

18

org_setup

Resource-management admin onboards people and maintains org reference data, custom-field definitions, user statuses and webhooks.

35

13

portfolio

PMO sets up and maintains projects, phases, clients, expenses and project metadata, and reads budget and report totals.

33

18

Seven tools are in no job profile and are reachable only in full (or their domain-mount profile): time_bulk_delete_time_entries, projects_bulk_delete_assignments, admin_delete_client, admin_delete_client_contact, admin_create_expense_category, admin_delete_expense_category, and admin_delete_tag.

Read-only behavior

  • The MCP readOnlyHint annotation is the only thing that decides whether a tool is read-only. Every tool declares it explicitly: true on the 39 reads and false on the 65 writes. A tool with no annotation or no readOnlyHint counts as a write.

  • --profile readonly or SMARTSHEET_RM_READONLY=1 (on any profile) lists only the read-only tools, and ReadOnlyGateMiddleware refuses any call to a real tool that is not read-only, including a write the filter hid. A refusal comes back as a tool result with isError: true.

  • A name that is not a tool on the server gets FastMCP's normal Unknown tool error, directly or through call_tool, so a typo is never reported as a blocked tool.

  • With Tool Search on, the gate checks the tool that call_tool wraps. Reads through call_tool work and writes are refused. Without Tool Search, call_tool is not a tool on the server, so a call to it gets Unknown tool: 'call_tool'.

  • If the gate cannot see the serving server, it refuses the call.

Bulk gate

time_bulk_delete_time_entries and projects_bulk_delete_assignments are listed in full, time and projects. The domain guards refuse them at call time (isError: true) unless SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1, and the handlers still require confirm=True. Read-only mode hides and refuses them.

Tool Search and Code Mode

tools/list is flat by default. Discovery is opt-in and attaches only on full:

  • --enable-tool-search / SMARTSHEET_RM_ENABLE_TOOL_SEARCH=1 replaces tools/list with search_tools and call_tool. The backend is regex (default) or bm25 (--tool-search-backend / SMARTSHEET_RM_TOOL_SEARCH_BACKEND).

  • --enable-code-mode / SMARTSHEET_RM_ENABLE_CODE_MODE=1 attaches FastMCP's experimental Code Mode (search, get_schema, execute). Code Mode needs the sandbox from the package's code-mode extra (fastmcp[code-mode], which ships pydantic-monty): pip install "mcp-server-smartsheet-rm[code-mode]" or uvx --from "mcp-server-smartsheet-rm[code-mode]" smartsheet-rm-mcp --enable-code-mode. Without it, Code Mode is skipped with a warning and the flat catalog is served.

  • Turning on both raises ValueError. Asking for either on another profile logs a warning and keeps the flat list.

  • search_tools, search and get_schema only read the catalog and are annotated readOnlyHint=True. Under read-only, Code Mode execute is refused.


⚡ Tool Surface Overview

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

  • Default Registration: 104 tools on full (the 2 bulk-destructive tools are listed and refused at call time unless 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_*, 17 tools): time_list_time_entries, time_get_time_entry, time_create_time_entry, time_create_user_time_entry, time_create_project_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_*, 27 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_create_project_assignment, projects_create_user_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.

Undocumented routes

The tools below call routes that are in neither Smartsheet's Resource Management API reference (OpenAPI JSON) nor the archived 10,000ft API docs. There are 46 such method and path pairs. They are kept, and not re-pointed, because some documented equivalents take different request shapes, so moving a tool would change what it sends. Smartsheet may change or remove an undocumented route without notice, and each of these tools says so in its description. Prefer a tool on a documented route when one fits: for example, time_create_user_time_entry or time_create_project_time_entry instead of time_create_time_entry. Each of these client calls carries # drift-ignore: undocumented route, and scripts/check_openapi_drift.py fails on any other call that is not in the published spec.

Tool

Undocumented route

Documented equivalent

time_create_time_entry

POST /time_entries

POST /users/{user_id}/time_entries (time_create_user_time_entry) and POST /projects/{project_id}/time_entries (time_create_project_time_entry).

time_update_time_entry

PUT /time_entries/{id}

PUT /users/{user_id}/time_entries/{id}.

time_delete_time_entry

DELETE /time_entries/{id}

DELETE /users/{user_id}/time_entries/{id}.

time_update_time_approval_status

PUT /users/{user_id}/time_entries/approval_status

None found.

time_lock_timesheet

POST /users/{user_id}/time_entries/lock

None found.

time_fill_weekly_timesheet

POST /time_entries

POST /users/{user_id}/time_entries.

time_confirm_suggested_hours

PUT /time_entries/{id}

PUT /users/{user_id}/time_entries/{id}.

time_reconcile_and_submit_week

PUT /users/{user_id}/time_entries/approval_status

None found (called only with auto_submit=True).

time_bulk_delete_time_entries

DELETE /time_entries/{id}

DELETE /users/{user_id}/time_entries/{id}.

projects_get_project_phase

GET /projects/{project_id}/phases/{phase_id}

The reference documents only PUT and DELETE on that path; GET /projects/{project_id}/phases lists phases.

admin_list_user_bill_rates

GET /users/{user_id}/bill_rates

GET /bill_rates and GET /projects/{project_id}/bill_rates.

admin_create_user_bill_rate

POST /users/{user_id}/bill_rates

The reference documents bill rates only under /bill_rates and /projects/{project_id}/bill_rates, with no create.

admin_get_user_availability

GET /users/{user_id}/availability

GET /users/{user_id}/availabilities.

admin_get_user_utilization

GET /users/{user_id}/utilization

None found.

admin_create_role

POST /roles

The reference documents only GET for roles.

admin_update_role

PUT /roles/{id}

The reference documents only GET for roles.

admin_delete_role

DELETE /roles/{id}

The reference documents only GET for roles.

admin_create_discipline

POST /disciplines

The reference documents only GET for disciplines.

admin_update_discipline

PUT /disciplines/{id}

The reference documents only GET for disciplines.

admin_delete_discipline

DELETE /disciplines/{id}

The reference documents only GET for disciplines.

admin_list_clients

GET /clients

None found.

admin_get_client

GET /clients/{id}

None found.

admin_create_client

POST /clients

None found.

admin_update_client

PUT /clients/{id}

None found.

admin_delete_client

DELETE /clients/{id}

None found.

admin_list_client_contacts

GET /clients/{id}/contacts

None found.

admin_create_client_contact

POST /clients/{id}/contacts

None found.

admin_delete_client_contact

DELETE /clients/{id}/contacts/{contact_id}

None found.

admin_create_leave_type

POST /leave_types

The reference documents only GET for leave types.

admin_update_leave_type

PUT /leave_types/{id}

The reference documents only GET for leave types.

admin_delete_leave_type

DELETE /leave_types/{id}

The reference documents only GET for leave types.

admin_get_holiday

GET /holidays/{id}

The reference documents only GET /holidays.

admin_create_holiday

POST /holidays

The reference documents only GET /holidays.

admin_update_holiday

PUT /holidays/{id}

The reference documents only GET /holidays.

admin_delete_holiday

DELETE /holidays/{id}

The reference documents only GET /holidays.

admin_list_expenses

GET /expenses, GET /projects/{project_id}/expenses, GET /users/{user_id}/expenses

GET /users/{user_id}/expense_items and GET /projects/{project_id}/expense_items.

admin_get_expense

GET /expenses/{id}

GET /users/{user_id}/expense_items/{expense_item_id} and GET /projects/{project_id}/expense_items/{expense_item_id}.

admin_create_expense

POST /expenses

POST /users/{user_id}/expense_items.

admin_update_expense

PUT /expenses/{id}

PUT /users/{user_id}/expense_items/{expense_item_id}.

admin_delete_expense

DELETE /expenses/{id}

DELETE /users/{user_id}/expense_items/{expense_item_id}.

admin_list_expense_categories

GET /expense_categories

GET /expense_item_categories.

admin_create_expense_category

POST /expense_categories

The reference documents only GET /expense_item_categories.

admin_delete_expense_category

DELETE /expense_categories/{id}

The reference documents only GET /expense_item_categories.

admin_list_tags

GET /tags

GET /projects/{project_id}/tags and GET /users/{user_id}/tags.

admin_create_tag

POST /tags

POST /projects/{project_id}/tags and POST /users/{user_id}/tags.

admin_delete_tag

DELETE /tags/{id}

DELETE /projects/{project_id}/tags/{tag_id} and DELETE /users/{user_id}/tags/{tag_id}.

admin_list_custom_field_values

GET /custom_field_values

GET /projects/{project_id}/custom_field_values and GET /users/{user_id}/custom_field_values.

admin_set_custom_field_values

PUT /custom_field_values

PUT /projects/{project_id}/custom_field_values/{custom_field_value_id} and PUT /users/{user_id}/custom_field_values/{custom_field_value_id}.


🚀 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.

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

Profile: full, time, projects, admin, readonly, timesheets, staffing, org_setup, portfolio (see Profiles)

full

SMARTSHEET_RM_READONLY

Set to 1 to list only readOnlyHint=true tools and refuse every other call

0

SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE

Set to 1 to let the two listed bulk delete tools execute

0

SMARTSHEET_RM_ENABLE_TOOL_SEARCH

Set to 1 (or --enable-tool-search) for Tool Search on full

0

SMARTSHEET_RM_TOOL_SEARCH_BACKEND

Tool Search backend: regex or bm25 (or --tool-search-backend)

regex

SMARTSHEET_RM_ENABLE_CODE_MODE

Set to 1 (or --enable-code-mode) for experimental Code Mode on full; not with Tool Search

0

SMARTSHEET_RM_MCP_AUTH_TOKEN

Shared bearer token required on HTTP transports (stdio ignores it)

unset

SMARTSHEET_RM_MCP_ALLOW_UNAUTHENTICATED_BIND

Set to 1 to accept a tokenless HTTP bind to a non-localhost host

unset

SMARTSHEET_RM_LOG_FORMAT

Set to json for Datadog/CloudWatch structured logs

text

SMARTSHEET_RM_ALLOWED_HOSTS

Comma-separated hostnames allowed for base URL overrides. A non-blank value replaces the default. Loopback and private targets stay blocked.

api.rm.smartsheet.com

SMARTSHEET_RM_GOV_SMARTSHEET_API_TOKEN

Smartsheet API token for Smartsheet Gov only; sent as Authorization: Bearer and only to app.smartsheetgov.com (see Smartsheet Gov)

unset

Smartsheet Gov

Smartsheet Gov is opt-in; the default base URL and allowlist do not change. Per Smartsheet's RM API Introduction and Authentication pages, the Gov base URL is https://app.smartsheetgov.com/2.0/rm/api/v1 and every request needs both the RM token in auth and a Smartsheet API token as Authorization: Bearer. To use it:

export SMARTSHEET_RM_BASE_URL='https://app.smartsheetgov.com/2.0/rm/api/v1'
export SMARTSHEET_RM_ALLOWED_HOSTS='app.smartsheetgov.com'
export SMARTSHEET_RM_API_TOKEN='your_rm_api_token'
export SMARTSHEET_RM_GOV_SMARTSHEET_API_TOKEN='your_smartsheet_api_token'

The Gov host goes through the same HTTPS, SSRF, allowlist and DNS-pinning checks as any other base URL. The client refuses to start against the Gov host without the Smartsheet token, and sends that token to no other host. On HTTP transports, a caller that sends its own auth or x-smartsheet-rm-token header must also send its own x-smartsheet-gov-api-token header; the environment Gov token is never paired with a caller's RM token.


💻 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).

In the default (stateful) HTTP mode, a session idle for 30 minutes expires: its next request gets HTTP 404 and the client must start a new session. Change this with FastMCP's session_idle_timeout (on http_app()) or FASTMCP_HTTP_SESSION_IDLE_TIMEOUT (seconds, or none to never expire); see the FastMCP 4.1.0 release and #5229.

HTTP authentication. Set SMARTSHEET_RM_MCP_AUTH_TOKEN to require Authorization: Bearer <token> on every HTTP request; a missing or wrong token gets 401. The token is stripped, and a blank value counts as unset. It is attached when the server is built, so smartsheet-rm-mcp, fastmcp run and an ASGI host mounting mcp.http_app() all enforce it. stdio never uses it.

With no token, an HTTP bind to 127.0.0.1, ::1 or localhost still starts, unauthenticated, and logs a warning. A tokenless bind to any other host exits with code 2. Set the token, bind to localhost, or set SMARTSHEET_RM_MCP_ALLOW_UNAUTHENTICATED_BIND to 1, true, yes or on to accept an unauthenticated public bind (any other value refuses). To serve the image over HTTP, pass the tokens from your environment or an env file, not on the command line:

# export SMARTSHEET_RM_API_TOKEN and SMARTSHEET_RM_MCP_AUTH_TOKEN first, or use --env-file .env
docker run --rm -p 8000:8000 -e SMARTSHEET_RM_API_TOKEN -e SMARTSHEET_RM_MCP_AUTH_TOKEN \
  ghcr.io/christianclaudio/mcp-server-smartsheet-rm:latest \
  --transport streamable-http --host 0.0.0.0 --allowed-host localhost:8000

🛡️ 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 makes no change unless the caller explicitly passes confirm=True. Without it the tool returns a normal result (isError: false) with "status": "confirmation_required" and a message to re-call with confirm=true; that is the designed two-step, not an error.

  • Input Validation: Missing or invalid arguments (for example an update with no fields, or a malformed date) return a tool error (isError: true, "type": "invalid_request") the model can correct, as the MCP spec describes for input validation errors.

  • Batch Results: time_fill_weekly_timesheet, time_confirm_suggested_hours, time_bulk_delete_time_entries and projects_bulk_delete_assignments share one shape: "status": "success" or "partial_success", a success count (filled_count / confirmed_count / deleted_count), failed_count, results and errors. Each success is {id|date, status, result}; each failure is {id|date, status: "failed", error} where error always has a message (API errors via to_dict(); other exceptions as "type": "internal" with a redacted message). The field names from earlier releases stay alongside: time_fill_weekly_timesheet also returns days_filled, created_count and entries (the created entries), and time_confirm_suggested_hours returns confirmed_entries. When every item fails, the call is a tool error (isError: true, "type": "batch_failed").

  • Profiles: Minimize token footprint by loading only the tools one job needs (timesheets, staffing, org_setup, portfolio) or one domain (time, projects, admin).

  • Read-Only Gate: readOnlyHint decides; anything else is refused with isError: true.

  • 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 against Smartsheet's published spec (or --spec-file for a local copy)
python scripts/check_openapi_drift.py --spec-url https://developers.smartsheet.com/_spec/api/resource_management/openapi.json

Available Tools

104 tools
admin_create_clientAdmin Create ClientA

Create a new client record.

Undocumented route: POST /clients is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
cityNo
nameYes
stateNo
addressNo
countryNo
zipcodeNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already declare the mutation profile (readOnlyHint=false, openWorldHint=true, non-idempotent, non-destructive). The description adds genuinely important behavioral context the annotations cannot: the endpoint is undocumented and may be changed or removed without notice, with no documented equivalent. That is exactly the kind of stability risk an agent should know before calling it.

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?

Two short sentences, front-loaded with the purpose and followed by the one caveat that matters. 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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The remaining gap is the un-documented parameter set for a mutation tool, which the description does not compensate for. Adequate but 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% across six parameters, so the schema lists only names and types. The description adds no field-level meaning whatsoever (required name, optional address/city/state/country/zipcode formats), leaving the agent with no semantic guidance beyond raw field 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?

States a specific verb+resource ('Create a new client record'), clearly separating it from sibling read/update/delete client tools. It doesn't explicitly name siblings, but 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 Guidelines3/5

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

The description implies creation of a standalone client record, and it usefully cautions that the route is undocumented. However, it gives no explicit when-to-use vs use-an-alternative guidance (e.g., when to use create_client_contact instead), leaving usage to inference.

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 ContactB

Add a contact for a client.

Undocumented route: POST /clients/{id}/contacts is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
emailNo
phoneNo
titleNo
client_idYes
last_nameYes
first_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare non-read-only, open-world, non-idempotent and non-destructive, so the safety profile is covered. The description adds genuinely new and important context beyond that: the underlying route is undocumented and Smartsheet may change or remove it without notice. It stops short of saying what happens on duplicate contacts or whether the contact is immediately visible in list endpoints.

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?

Two short sentences with the core action front-loaded and the caveat following. Every sentence earns its place, though the API-reference and archived-docs detail is slightly verbose for what amounts to 'undocumented 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 needn't be explained, and the undocumented-route warning is a useful completeness addition. But for a six-parameter creation tool with zero schema descriptions, the absence of any field semantics leaves the definition short of what an agent needs to populate a 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?

Schema description coverage is 0% across 6 parameters, so the description carries the full burden and says nothing about email, phone, title, or whether client_id accepts an integer or a string. It doesn't even note that first_name and last_name are required. The one line of description text is entirely about the endpoint, not the 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 and resource: 'Add a contact for a client.' This clearly distinguishes it from admin_update_client_contact, admin_delete_client_contact and admin_list_client_contacts, though it never names those siblings explicitly. The noun/verb pairing leaves no ambiguity about what the tool does.

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

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 the sibling contact tools or when to prefer creating a contact on a client record. The only routing-adjacent statement is 'No documented equivalent was found', which is a provenance note rather than usage guidance. Prerequisites such as needing an existing client are left implicit.

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).

NameRequiredDescriptionDefault
nameYes
optionsNo
field_typeYes
target_typeYes

Output 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 DisciplineB

Create a new discipline.

Undocumented route: POST /disciplines is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for disciplines.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare the write profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, non-idempotent), and the description adds genuinely new behavioral context: the POST /disciplines route is undocumented and subject to unannounced change or removal. That is exactly the kind of risk an agent can't get from structured fields. It doesn't cover auth requirements or duplicate-name behavior, keeping it below 5.

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?

Two short paragraphs, front-loaded with the action, followed by the operational caveat. The second paragraph is slightly long for the warning but every clause is substantive and none is 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 needn't be explained, and the undocumented-route risk is covered, which are the two biggest gaps. However, for a mutation tool with a single undocumented parameter, the definition omits what a successful create returns in practice (new ID availability), permission requirements, and duplicate handling — leaving it only minimally sufficient.

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?

Only one parameter (name, required) with 0% schema description coverage, so the description carries the full burden of explaining it — yet it says nothing about format, length, uniqueness constraints, or whether the name is a free-text label or a lookup key. An agent must guess at valid input.

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 first sentence gives a specific verb and resource (create a discipline), which is unambiguous and distinguishable from admin_update_discipline, admin_delete_discipline, and admin_list_disciplines by name. It stops short of explicitly contrasting with those siblings, so it lands at a clear 4 rather than 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?

Nothing states when to create a discipline versus update an existing one, what prerequisites exist (permissions, whether the discipline must be unique), or what to do if the name already exists. The only contextual guidance is a stability warning about the underlying route, not about usage selection.

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 ExpenseB

Log a project expense item.

Undocumented route: POST /expenses is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: POST /users/{user_id}/expense_items.

NameRequiredDescriptionDefault
dateYes
notesNo
amountYes
user_idYes
project_idYes
is_billableNo
expense_category_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, open-world, non-idempotent write, so the safety profile is covered. The description adds genuinely new behavioral context: it discloses that the route it uses is undocumented and may be changed or removed without notice, and names the documented alternative endpoint. It could go further (e.g., that retrying a non-idempotent create may duplicate expenses) but it materially exceeds the annotation bar.

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?

Three short, front-loaded sentences with no filler, and the purpose statement leads. The bulk of the text is devoted to route provenance rather than call-relevant behavior, which is slightly off-balance but not wasteful.

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?

Return values are covered by the output schema and the mutation safety by annotations, but for a 7-parameter create tool with zero schema descriptions the definition leaves the agent without any parameter-level guidance. An agent could not confidently supply date/amount/category values from this description alone.

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 (5 required), so the description must compensate and it does not. No mention of date format, whether amount is in a specific currency, what expense_category_id accepts, or that user_id/project_id accept either integers or strings. Only the route template faintly implies user_id identifies the expense owner.

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?

"Log a project expense item" states a specific verb (log/create) and resource (project expense item), which distinguishes it from the sibling list/get/update/delete expense tools. It does not distinguish it further from other create-type admin tools, but the verb+resource pair 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?

The description never says when to create an expense versus using admin_update_expense or admin_create_expense_category, nor does it state prerequisites such as the project/category needing to exist or the caller needing admin rights. The route discussion is implementation trivia, not usage guidance.

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 CategoryB

Create an expense category.

Undocumented route: POST /expense_categories is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /expense_item_categories.

NameRequiredDescriptionDefault
nameYes

Output 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 readOnly=false, destructive=false, idempotent=false, and openWorld=true, so the safety profile is covered. The description adds genuine value by disclosing that the endpoint is undocumented and may change or be removed without notice, which is context annotations cannot convey. It stops short of describing what happens on duplicate names or the 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?

The action is front-loaded in a single short sentence, and the caveat paragraph is short and clearly separated. The API reference detail is somewhat inside-baseball but earns its place as a warning about tool stability.

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 this is a one-parameter tool. However, for a creation tool the description omits error behavior (duplicates) and parameter constraints, leaving gaps an agent would hit when actually invoking it.

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% and the single required parameter 'name' has no description in the schema. The description says nothing about name constraints, uniqueness, length limits, or format, so it fails to compensate for the coverage gap on the one parameter that matters.

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 first sentence states a specific verb and resource ('Create an expense category'), which distinguishes it from admin_create_expense and admin_delete_expense_category by the resource being created. It does not explicitly name or differentiate from those siblings, but the resource name 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 guidance on when to create a category versus using an existing one, nor any pointer to admin_list_expense_categories to check for duplicates before creating. The only conditional content is an API-stability warning, which is not usage guidance.

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 HolidayB

Create a new company holiday or non-working day.

Undocumented route: POST /holidays is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

NameRequiredDescriptionDefault
dateYes
nameYes
end_dateNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare openWorldHint=true, idempotentHint=false and destructiveHint=false, but the description adds genuinely new context: the POST /holidays route is undocumented and may be changed or removed without notice. That is exactly the kind of operational caveat annotations cannot carry. It does not mention duplicate-handling or conflict behavior on repeat calls, which keeps it below 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?

Two sentences, front-loaded with the action statement and followed by the one caveat that matters. No repetition of the title or schema, and nothing an agent would skip.

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 undocumented-route warning covers the biggest behavioral risk. However, for a mutating create tool with zero parameter documentation, the absence of any date/end_date semantics leaves a real gap an agent would hit on first 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 three parameters, and the description supplies nothing: no date format, no explanation of how end_date changes the semantics from single day to range, no hint that name is a display label. With the schema doing none of the work, the description should 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?

The opening sentence gives a specific verb and resource ("Create a new company holiday or non-working day"), which cleanly separates it from the list/get/update/delete holiday siblings. It stops short of naming those siblings explicitly, so an agent must infer the distinction, but the verb+resource pairing 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?

It never says when to reach for this versus admin_update_holiday or admin_list_holidays, nor what prerequisites (admin scope, existing calendar) apply. The only guidance offered is a warning about the route's undocumented status, which is about risk, not about tool selection.

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 TypeB

Create a new leave type.

Undocumented route: POST /leave_types is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for leave types.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/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 the write/non-idempotent profile is covered. The description adds a genuinely useful warning beyond the annotations: the backing route is undocumented and subject to change or removal without notice, which tells the agent this call carries instability risk. It still doesn't mention required permissions or what happens on a duplicate name.

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?

Front-loaded with the action, followed by a risk caveat that earns its place. Two short sentences with no filler, though the route-path detail is more implementation trivia than agent-facing guidance.

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 annotations plus the undocumented-route warning cover the safety and stability profile. Missing are permission requirements, uniqueness behavior on the name field, and any note on how the new type relates to existing leave types – meaningful gaps for a mutation 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 the single parameter 'name', and the description says nothing about it. It doesn't state whether the name must be unique, whether it's case-sensitive, or any length/format constraints, so it fails to compensate for the schema 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 leave type'), which is unambiguous against siblings like admin_update_leave_type and admin_delete_leave_type by name alone. It stops short of explicitly differentiating itself from the other admin_* create tools, but the purpose is clear.

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 admin_update_leave_type or when a leave type should be created at all. No prerequisites, no alternatives, no exclusions are given.

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 RoleB

Create a new role.

Undocumented route: POST /roles is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for roles.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/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 genuinely non-structured context: this hits an undocumented POST /roles endpoint outside the published reference and may change or disappear without notice – a real operational risk an agent should know. It omits duplicate-name behavior and permission requirements, which keeps it off 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.

Conciseness4/5

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

The purpose is front-loaded in one short sentence, followed by a clearly delineated caveat. Both parts earn their place; only the redundant restatement that the reference documents only GET could be trimmed.

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 mutation profile. However, for a write tool with 0% parameter coverage, the description leaves gaps around the required name field and failure modes (duplicate role, permission denial) that an agent would need before calling 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% for the single required parameter "name", so the description is the only place semantics could be supplied. It says nothing about uniqueness constraints, length limits, or whether the name must be distinct from existing roles, leaving the sole parameter effectively 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?

"Create a new role" gives a specific verb and resource, and the name cleanly separates it from admin_list_roles / admin_update_role / admin_delete_role in the sibling list. It stops short of explicitly contrasting with those siblings, 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 statement of when to use this tool versus admin_list_roles or admin_update_role, nor any prerequisite (e.g., admin permission level) for creating a role. The only guidance is a stability warning about the underlying route, which is not usage guidance.

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 TagB

Create a tag.

Undocumented route: POST /tags is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: POST /projects/{project_id}/tags and POST /users/{user_id}/tags.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnly=false, destructive=false, non-idempotent, openWorld). The description adds genuinely new behavioral context: this tool calls an undocumented POST /tags route that Smartsheet may change or remove without notice. That warning materially affects an agent's risk calculus and is not in any structured field.

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?

Front-loaded with the core action in one short sentence, followed by a compact warning. Slightly muddled because "Undocumented route" is not explicitly tied to "this tool uses it," but there is no wasted padding.

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 annotations cover safety. However, for a non-idempotent mutation on an unofficial endpoint, the description omits scope (global vs project vs user), duplicate handling, and permission requirements — enough gaps to leave an agent guessing.

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 parameter, so the description bears the burden of explaining `name` and does not — no format, length, uniqueness, or scoping rules are given. It spends its words on route provenance rather than the one input the agent must supply.

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?

"Create a tag" gives a clear verb+resource and is immediately actionable. It does not distinguish the tool from siblings like admin_list_tags or admin_delete_tag, nor does it clarify which tag namespace (project/user/global) is being created.

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 never says when to call this instead of the documented routes it mentions, nor does it give prerequisites (existing project_id/user_id, duplicate-name behavior). The reader learns about alternatives only as an API-stability footnote, not as routing guidance.

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.

NameRequiredDescriptionDefault
roleNo
emailYes
locationNo
bill_rateNo
cost_rateNo
last_nameYes
disciplineNo
first_nameYes
user_type_idNo
billability_targetNo

Output 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.

Undocumented route: POST /users/{user_id}/bill_rates is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents bill rates only under /bill_rates and /projects/{project_id}/bill_rates, with no create.

NameRequiredDescriptionDefault
rateYes
user_idYes
end_dateNo
start_dateYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Beyond annotations, the description discloses that this is an undocumented route that may change or be removed without notice. That is valuable behavioral context for a mutation tool. It stops short of explaining duplicate handling, rate semantics, 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?

The purpose is front-loaded and zero-waste. The undocumented-route caveat is useful but somewhat repetitive in restating that the reference documents bill rates elsewhere without a create endpoint.

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 tool is a create operation with no schema parameter descriptions and only sparse semantic detail in the description. Output schema exists, so return values need not be described, but key call-correctness details such as rate units and date format 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 description coverage is 0%, so the description must carry parameter meaning, but it only broadly implies user, rate, and effective date range. It does not clarify rate units, date formats, or user_id expectations.

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 first sentence states a specific verb and resource: add a bill rate tier with an effective date range for a user. It is clearly distinguishable from the sibling list/get bill rate 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 explains what the tool does but gives no explicit when-to-use guidance, prerequisites, or alternatives such as admin_list_user_bill_rates. The undocumented-route warning is risk context, not usage guidance.

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').

NameRequiredDescriptionDefault
event_typeYes
callback_urlYes

Output 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 ClientA
Destructive

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

Undocumented route: DELETE /clients/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
confirmNo
client_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already flag this as destructive, open-world, and non-idempotent. The description adds valuable context beyond annotations by stating that confirm=True is required and warning that the DELETE route is undocumented and may change or be removed without notice.

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 front-loaded with the action and safety requirement, followed by a concise and relevant undocumented-route warning. Every sentence adds useful 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?

Output schema exists and annotations cover safety profile, so return values need not be explained. The description covers the key destructive confirmation requirement and route instability, though it omits some usage context such as what happens to related contacts.

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 usefully explains the confirm parameter's destructive-operation requirement, but it does not clarify client_id semantics or accepted formats beyond the schema's anyOf definition.

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: delete a client record. This clearly distinguishes it from admin_get_client, admin_update_client, admin_list_clients, and sibling delete tools for contacts or leave types.

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 gives one important usage prerequisite: confirm=True is required for this destructive operation. However, it does not explain when to delete a client versus using another tool or when not to use it.

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

admin_delete_client_contactAdmin Delete Client ContactA
Destructive

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

Undocumented route: DELETE /clients/{id}/contacts/{contact_id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
confirmNo
client_idYes
contact_idYes

Output 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 idempotent=false, so the description's "Destructive" label is partly redundant. However, it adds two things the annotations cannot convey: the confirm=True gate, and the warning that this route is undocumented and may be changed or removed without notice. It still omits concrete behavior such as what happens if confirm is omitted (error vs. no-op) or whether the delete is permanent.

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 destructive precondition is front-loaded in the first sentence and the caveat follows. The undocumented-route paragraph is longer than strictly necessary and could be compressed to one clause, but it carries non-obvious risk information.

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 risk caveat is a genuine addition. For a destructive mutation with zero schema description coverage and no annotation-driven permission info, the description should still say what happens without confirm and whether removal is irreversible or affects the parent client.

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 covers the most dangerous parameter (confirm=True) and the route template makes the meaning of client_id and contact_id clear, but it never explains the accepted id variants (integer or string) or the default-false behavior of confirm. That is partial compensation, not full.

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 contact") and the route template `DELETE /clients/{id}/contacts/{contact_id}` removes any ambiguity about which object is removed versus the sibling admin_delete_client. It does not explicitly name the sibling alternatives (admin_delete_client, admin_update_client_contact) to route an agent, 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 Guidelines3/5

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

The only usage guidance is the inline precondition "requires confirm=True", which is valuable, but there is no statement of when to choose this over admin_delete_client or admin_update_client_contact, nor when deletion is inappropriate. Usage is inferable from the resource name alone, which is the definition of a 3.

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).

NameRequiredDescriptionDefault
confirmNo
custom_field_idYes

Output 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).

Undocumented route: DELETE /disciplines/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for disciplines.

NameRequiredDescriptionDefault
confirmNo
discipline_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds meaningful context: the operation is destructive, requires confirmation, and uses an undocumented route that may change or be removed. It does not explain downstream effects of deleting a discipline, but the key risk information is present.

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 two sentences with no wasted language. The destructive confirmation requirement is front-loaded, followed by the important undocumented-route caveat.

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 warning about the undocumented route and the confirm requirement cover the main behavioral risks. However, with 0% schema description coverage, the missing explanation of discipline_id leaves an important input-semantics gap.

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 needs to explain both parameters. It clarifies that confirm must be set to True, which is useful beyond the schema default, but it says nothing about the required discipline_id parameter or its accepted integer/string format.

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: deleting a discipline. This clearly distinguishes it from sibling operations such as admin_create_discipline, admin_update_discipline, and admin_list_disciplines.

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

Usage Guidelines4/5

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

It gives a concrete usage prerequisite: confirm=True is required. However, it does not explicitly state when not to use it or name alternatives, which keeps it below the top score.

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).

Undocumented route: DELETE /expenses/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: DELETE /users/{user_id}/expense_items/{expense_item_id}.

NameRequiredDescriptionDefault
confirmNo
expense_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds the confirm=True requirement and warns that the DELETE /expenses/{id} route is undocumented and may change or be removed. This is exactly the kind of behavioral and operational context annotations do not provide.

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 main action and destructive confirmation requirement are front-loaded, and the route warning follows with useful context. There is no wasted text.

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?

The description covers the key deletion behavior, confirmation requirement, and route risk, and an output schema exists. It could be more complete by noting permission requirements or whether related data is affected, but it is sufficient for this two-parameter destructive tool.

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 explains confirm=True and implies expense_id via the route placeholders, but it does not clarify the anyOf integer/string nature of expense_id or other identifier semantics.

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: "Delete an expense item." It also distinguishes the operation as destructive and names the concrete API routes, so an agent can identify the tool without ambiguity against sibling expense tools.

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

Usage Guidelines4/5

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

It gives a clear usage condition: deletion requires confirm=True. It does not explicitly compare against alternatives such as admin_delete_expense_category, but the deletion scope is clear enough for correct tool selection.

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).

Undocumented route: DELETE /expense_categories/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /expense_item_categories.

NameRequiredDescriptionDefault
confirmNo
category_idYes

Output 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 non-idempotency, but the description adds two things they do not: the confirm=True gate and the warning that DELETE /expense_categories/{id} is undocumented and may be removed without notice. That undocumented-route disclosure is exactly the kind of beyond-annotation context this dimension rewards; it lacks only a statement on reversibility or what happens to dependent expense records.

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 destructive action and confirm requirement are front-loaded in the first line, with the API-stability caveat following. The caveat is slightly verbose but every clause is substantive; no filler.

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 carry the safety profile. The description covers the confirm gate and route instability, missing only the side effects on existing expense records and whether deletion is permanent — a modest but real gap 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 coverage is 0%, so the description must carry parameter meaning. It explains confirm's required value and purpose well, but says nothing about category_id beyond its presence — notably whether it accepts an integer ID or a string identifier and how to obtain one, leaving half the undocumented surface 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 first sentence names a specific verb (Delete) and resource (expense category), which is enough to separate it from admin_list_expense_categories and admin_create_expense_category in the sibling set. It stops short of describing scope, e.g. whether deletion cascades to expenses already filed under the category.

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 confirm=True prerequisite is stated, which is real invocation guidance, but there is no explicit when-to-use/when-not or reference to an alternative such as reassigning expenses first. Usage context is implied by the name and the destructive label rather than spelled out.

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 HolidayA
Destructive

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

Undocumented route: DELETE /holidays/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

NameRequiredDescriptionDefault
confirmNo
holiday_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/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 description earns credit for adding the confirm gate and the important warning that the underlying DELETE route is undocumented and may change or be removed without notice. It stops short of describing blast radius (e.g., whether existing time entries referencing the holiday are affected) 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?

Two sentences, front-loaded with the action and the destructive/confirm requirement, followed by the endpoint-stability caveat. The route-documentation aside is longer than strictly necessary but carries genuine risk 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?

For a two-parameter destructive mutation with full annotation coverage and an output schema, the description covers the safety gate and endpoint fragility. Remaining gaps — irreversibility statement, permission requirements, and effect on related time data — are minor but real.

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?

Schema description coverage is 0%, so the description must compensate: it explains that the 'confirm' flag must be set to True, which the schema only shows as a boolean defaulting to false. 'holiday_id' is left implicit, but its name and the tool's purpose make its meaning evident.

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') that is unambiguous against the many sibling admin_* tools, since no other sibling destroys holidays. It does not explicitly name the nearest alternatives (admin_delete_leave_type, admin_update_holiday), so it stops short of full sibling differentiation.

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

Usage Guidelines4/5

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

Gives a concrete precondition ('requires confirm=True'), which is the key operational guidance an agent needs before calling. It doesn't state when to use deletion versus updating/deactivating, or what to do if the holiday id is unknown (admin_get_holiday / admin_list_holidays), so context is clear but not exhaustive.

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

admin_delete_leave_typeAdmin Delete Leave TypeA
Destructive

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

Undocumented route: DELETE /leave_types/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for leave types.

NameRequiredDescriptionDefault
confirmNo
leave_type_idYes

Output 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 and openWorldHint=true, so the safety profile is covered; the description goes beyond them by disclosing that the DELETE route is undocumented and may change or be removed without notice — a genuinely useful risk signal. It does not say what happens to existing records referencing the leave type, which keeps it short of 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.

Conciseness4/5

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

Two sentences, with the destructive confirmation requirement front-loaded where an agent will see it. The second sentence is long but the undocumented-route warning earns its space.

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 confirmation gate plus API-stability warning are covered. What is missing for a destructive admin tool is the blast radius: whether deletion cascades to assignments or time entries, and whether the operation is reversible.

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 load: it explains that confirm=True is required to actually delete (schema only shows a default of false, without stating the consequence of omitting it). However, leave_type_id's anyOf integer-or-string format and the behavior when confirm is false/absent are left undocumented.

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?

States a specific verb and resource ("Delete a leave type") and distinguishes it from the create/get/update leave-type siblings by naming the destructive action explicitly. The confirm gate is front-loaded so the agent immediately knows what class of operation this is.

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 gives a prerequisite (confirm=True) but never says when to choose this over alternatives — e.g., whether admin_update_leave_type can deactivate instead, or what to do if the leave type is in use. 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_roleAdmin Delete RoleA
Destructive

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

Undocumented route: DELETE /roles/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for roles.

NameRequiredDescriptionDefault
confirmNo
role_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds material context: the confirm gate and the warning that this route is undocumented and may be removed by the provider. It does not say what happens to dependent users/assignments, which keeps 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?

Three short sentences, front-loaded with the operation and safety gate, then the API stability caveat. Nothing is padded; each sentence adds a fact an agent needs.

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, return values need no explanation, and the confirm requirement plus the undocumented-route warning cover the main risks of a destructive admin call. Missing only cascade/impact information about roles in use.

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 has to carry the load; it documents 'confirm' only implicitly ('requires confirm=True') without stating the default false or consequence of leaving it off. The role_id anyOf integer/string flexibility is undocumented in both places.

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?

States a specific verb and resource ('Delete a role') with the destructive caveat inline, which cleanly separates it from admin_update_role, admin_create_role, and the list/get siblings. An agent can identify the operation without opening the schema.

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

Usage Guidelines3/5

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

The mandatory confirm=True is a usage prerequisite explicitly stated, which is valuable. But there is no guidance on when deletion is appropriate vs admin_update_role, or on what happens to users currently assigned 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 TagA
Destructive

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

Undocumented route: DELETE /tags/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: DELETE /projects/{project_id}/tags/{tag_id} and DELETE /users/{user_id}/tags/{tag_id}.

NameRequiredDescriptionDefault
tag_idYes
confirmNo

Output 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 openWorldHint=true, but the description adds two things they do not: the mandatory confirm=True gate and a warning that the underlying route is undocumented and may change without notice. It does not describe the effect of deletion on items already carrying the tag, which would be the remaining high-value disclosure.

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?

Two sentences, front-loaded with the action and the destructive/confirm warning. The route-list sentence is dense but carries genuine volatility information rather than filler.

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 confirm gate and route-stability caveat, though it omits what happens to tag associations after deletion and what error surfaces if confirm is false.

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 explains the confirm semantics ('requires confirm=True') but says nothing about tag_id, whose anyOf integer-or-string type is left ambiguous to the caller.

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 tag'), which is immediately distinguishable from the sibling list/create tag tools by operation type. It does not explicitly name the siblings it differs from, so it stops short of the top mark.

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

Usage Guidelines4/5

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

Gives a concrete usage prerequisite ('requires confirm=True') and names the two documented alternative routes (project-scoped and user-scoped tag deletion). It does not say when to prefer those documented routes over this one, so the selection criteria remain implicit.

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).

NameRequiredDescriptionDefault
confirmNo
user_idYes

Output 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).

NameRequiredDescriptionDefault
confirmNo
webhook_idYes

Output 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 ClientA
Read-onlyIdempotent

Get details for a specific client.

Undocumented route: GET /clients/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
client_idYes

Output 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 readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely useful context annotations cannot express: the route is undocumented and may be changed or removed without notice. It stops short of saying what happens on an unknown client_id or what the payload contains.

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?

Two short sentences, front-loaded with purpose followed by the risk caveat. Slightly verbose in citing two documentation sources, but no sentence is 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?

A read-only single-record fetch with an output schema and full annotation coverage needs little more than purpose plus any volatility caveat. The description delivers exactly that, and the return shape is handled by the output schema.

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?

Only one parameter, but schema description coverage is 0% and client_id accepts either an integer or a string. The description adds nothing about which form to pass or where the value comes from, leaving the union type unexplained, though the param name is largely self-evident.

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) with clarifying scope ('a specific client'), which distinguishes it from admin_list_clients. It does not explicitly name the sibling it pairs with, so the differentiation is implied rather than stated.

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

Usage Guidelines2/5

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

No guidance on when to call this versus admin_list_clients (to discover an id) or admin_get_user-style patterns. The only conditional text is a stability warning, not usage routing; the agent must infer that client_id comes from admin_list_clients.

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.

NameRequiredDescriptionDefault
custom_field_idYes

Output 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.

Undocumented route: GET /expenses/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /users/{user_id}/expense_items/{expense_item_id} and GET /projects/{project_id}/expense_items/{expense_item_id}.

NameRequiredDescriptionDefault
expense_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond them: this route is undocumented and may be changed or removed without notice, plus it names the two documented equivalent routes. It stops short of describing response shape, though an output schema exists.

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?

Two sentences with the purpose front-loaded and the caveat second. The route-stability warning is dense but earns its place given the API risk; nothing else is wasted.

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, return values need not be explained, and the safety/risk profile is fully covered by annotations plus the undocumented-route warning. The remaining gap is what the ID actually refers to, which matters 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%, so the single parameter expense_id is undocumented in structured data. The description never clarifies whether this is a numeric expense-item ID or a string identifier, nor why the schema accepts both integer and string — the `{id}` in the route text is only a weak hint.

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 ("Get details for a specific logged expense"), which clearly separates it from list/create/update/delete siblings in the admin_expense family. It does not explicitly name the closest alternative (admin_list_expenses) or state that it returns a single record by ID, but the singular-object framing makes that inferable.

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 choose this over admin_list_expenses or admin_get_expense_categories, and no preconditions (permissions, whether the expense must be in a specific state). The description spends its only contextual sentences on API route provenance rather than on selection criteria.

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 HolidayB
Read-onlyIdempotent

Get details for a specific holiday.

Undocumented route: GET /holidays/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

NameRequiredDescriptionDefault
holiday_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and open-world behavior. The description adds important non-annotation context: the endpoint is undocumented, absent from official references, and may change or be removed without notice.

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 purpose is front-loaded in a short first sentence, and the warning sentence is relevant. The second sentence is somewhat dense and repeats the reference-documentation point, but it earns its place by flagging endpoint instability.

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 is simple, annotations cover safety, and an output schema exists, so the description does not need to explain return values. However, it omits practical guidance on obtaining the holiday ID and clarifying parameter format, leaving some 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%, so the description should compensate for the undocumented holiday_id parameter. It only implies that the ID maps to /holidays/{id}; it does not explain accepted formats, the integer-or-string flexibility, or where to obtain the 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 first sentence states a specific verb and resource: getting details for a specific holiday. It clearly implies retrieval by ID rather than listing, but it does not explicitly name or contrast with sibling tools such as admin_list_holidays.

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 explains what the tool does but gives no guidance on when to use it versus alternatives. It does not say to obtain an ID from admin_list_holidays or clarify when a specific-holiday lookup is preferable.

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.

NameRequiredDescriptionDefault
leave_type_idYes

Output 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.

NameRequiredDescriptionDefault
report_parametersYes

Output 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.

NameRequiredDescriptionDefault
report_parametersYes

Output 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.

NameRequiredDescriptionDefault
user_idYes

Output 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 AvailabilityB
Read-onlyIdempotent

Query scheduled hours vs available capacity for a user.

Undocumented route: GET /users/{user_id}/availability is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: GET /users/{user_id}/availabilities.

NameRequiredDescriptionDefault
to_dateNo
user_idYes
from_dateNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

The description adds important behavioral context beyond annotations: it warns that the route is undocumented and may be changed or removed without notice, which is a critical stability concern. Annotations already cover read-only and idempotent traits, so this warning is valuable added information.

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 front-loaded with the core purpose in the first sentence, followed by a concise warning about the undocumented route. It is appropriately sized for the tool's complexity, though the route documentation could be slightly more compact.

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?

Given an output schema exists and annotations cover safety, the description provides the essential purpose and stability warning. However, it lacks parameter semantics and usage guidance, leaving gaps for an agent trying to invoke the 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 compensate, but it only indirectly references user_id via the route string and does not explain the meaning, format, or usage of from_date and to_date. The parameter names are somewhat self-explanatory, but the description adds no semantic detail.

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 clearly states the tool's function with a specific verb and resource: 'Query scheduled hours vs available capacity for a user.' It distinguishes the tool from generic admin or time tools by focusing on availability, but it does not explicitly differentiate from similar siblings like admin_get_user_utilization or admin_get_user_statuses.

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 guidance on when to use this tool versus alternatives. It mentions route documentation but does not specify appropriate scenarios, prerequisites, or exclusions for querying user availability.

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).

NameRequiredDescriptionDefault
user_idYes

Output 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.

Undocumented route: GET /users/{user_id}/utilization is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
to_dateNo
user_idYes
from_dateNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely non-structured context: the endpoint is undocumented and may be changed or removed without notice, which an agent should factor into reliance decisions. It omits behavior around date-range filtering and result shape, keeping it off 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?

Two sentences, zero waste, with the purpose front-loaded and the volatility caveat immediately after. Nothing repeats the schema or annotations.

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?

Output schema exists, so return values need not be explained, and annotations cover safety. However, for a metric tool with an untyped date range and no parameter documentation, the description leaves an agent guessing about the accepted date format and the effective default window.

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 all three parameters, and the description says nothing about user_id, from_date, or to_date. The date parameters are bare strings with no format stated anywhere, 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: 'Get billable utilization metrics for a user', which is concrete enough to distinguish it from generic user lookups. It does not explicitly differentiate itself from nearby siblings like admin_get_user_availability or admin_get_user_bill_rates, 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 statement of when to use this versus admin_get_user_availability, admin_get_user_bill_rates, or the time_* reporting tools. The only guidance-like content is a stability warning about the undocumented route, which is a risk note rather than usage routing.

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 ContactsA
Read-onlyIdempotent

List contacts associated with a client.

Undocumented route: GET /clients/{id}/contacts is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
client_idYes

Output 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 readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered structurally. The description earns credit by adding information the annotations cannot convey: the underlying route is undocumented, absent from both the current and archived API references, and may be changed or removed without notice — a real operational risk an agent should weigh. It stops short of describing pagination, ordering, or result 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?

Purpose is front-loaded in the first sentence and the caveat follows, so an agent gets the gist immediately. The second sentence is slightly repetitive (naming two source documents and restating 'no documented equivalent'), but every claim it makes is decision-relevant, so little is wasted.

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 single-parameter read tool with full annotation coverage and an output schema (so return shape needn't be explained), the description covers purpose and the stability caveat adequately. The remaining gap is the identifier semantics and any paging/filtering behavior, which matter given the 0% schema coverage on the one required parameter.

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?

Only one parameter exists and schema description coverage is 0%, so the schema supplies no semantics for client_id beyond a bare anyOf integer|string. The description partially compensates by establishing that the identifier scopes to a client whose contacts are returned, but it never states whether the integer is an internal ID or the string is a name/external key, which is exactly the ambiguity the anyOf creates.

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 opens with a specific verb+resource ('List contacts associated with a client'), which is unambiguous about what the call returns. It implicitly distinguishes itself from the sibling mutation tools (admin_create_client_contact, admin_update_client_contact, admin_delete_client_contact) by being the read/list variant, though it never names them 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?

Usage is only implicit: the phrasing 'associated with a client' signals that a client scope is required and nothing else is described. There is no statement of when to prefer this over a general contact lookup or over fetching the client itself via admin_get_client, and no exclusions 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_clientsAdmin List ClientsB
Read-onlyIdempotent

List clients.

Undocumented route: GET /clients is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
pageNo
archivedNo
per_pageNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description adds genuinely new context that the route is undocumented and may be changed or removed without notice, which is a real stability risk an agent should know. It stops short of describing result 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?

Two short sentences, front-loaded with the action and followed by the risk caveat; little waste. The closing "No documented equivalent was found" is arguably filler but is brief enough not to hurt.

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 spelled out, and annotations carry the safety profile. However, for a paginated list tool the description never mentions pagination or the archived filter, leaving the agent without enough to call it correctly beyond defaults.

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?

Three parameters (page, archived, per_page) have 0% schema description coverage, and the description supplies no meaning for any of them — notably the archived tri-state null/true/false filter and the default page size are left entirely unexplained. With coverage this low the description was required to compensate and does not.

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?

"List clients" states a verb and resource, but there are 40+ sibling admin tools including admin_get_client, admin_list_client_contacts and admin_list_clients-adjacent lists, and the description does nothing to distinguish this one from them. The second paragraph is about API provenance, not about what the tool returns or how it differs from its 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?

There is no statement of when to use this list endpoint versus admin_get_client for a single record, nor when to include archived clients. The only routing-adjacent sentence — "No documented equivalent was found" — tells the agent nothing about selecting this tool over an alternative.

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.

NameRequiredDescriptionDefault

No parameters

Output 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 ValuesA
Read-onlyIdempotent

List custom field values, optionally filtered to one entity by target_id and target_type.

Undocumented route: GET /custom_field_values is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /projects/{project_id}/custom_field_values and GET /users/{user_id}/custom_field_values.

NameRequiredDescriptionDefault
target_idNoOptional ID of the entity whose values to list; use with target_type.
target_typeNoOptional entity type for target_id, such as `Project`, `User` or `Phase`.

Output 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 readOnlyHint, idempotentHint and destructiveHint=false, but the description adds genuinely non-obvious context: the underlying GET /custom_field_values route is undocumented and may change or be removed without notice, and it points to the documented per-project/per-user routes. That is exactly the kind of risk disclosure an agent cannot get from structured fields.

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

Conciseness4/5

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

Two sentences, front-loaded with the action and filter semantics, followed by the risk caveat. The route-path citations are somewhat verbose but each carries informational weight about stability.

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?

A read-only, zero-required-parameter list tool with an output schema and full annotation coverage needs little more than what is here; the description covers the resource, the filter behavior, and the undocumented-endpoint risk. Nothing essential for a correct call 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 100% and both parameters are documented in the schema, so the baseline is 3. The description only restates that the two parameters act together as an entity filter, adding no format or pairing rules beyond what the schema already says ('use with target_type').

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 custom field values') plus the optional scoping by target_id and target_type. It is clearly distinguishable from the write-side sibling admin_set_custom_field_values and from admin_list_custom_fields (field definitions vs. values), though it never names those siblings 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 'optionally filtered to one entity by target_id and target_type' implies when the filters apply, but there is no explicit statement of when to prefer this tool over admin_list_custom_fields or admin_set_custom_field_values, nor any exclusion guidance.

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.

NameRequiredDescriptionDefault

No parameters

Output 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 CategoriesA
Read-onlyIdempotent

List configured expense categories.

Undocumented route: GET /expense_categories is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: GET /expense_item_categories.

NameRequiredDescriptionDefault

No parameters

Output 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 readOnly, idempotent, non-destructive, openWorld, so the bar is lower. The description adds genuinely new behavioral context: the endpoint is undocumented so Smartsheet may change or remove it without notice, and it names the documented equivalent route — a real risk disclosure an agent couldn't get from structured fields.

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

Conciseness4/5

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

Two short sentences, front-loaded with the purpose, followed by the caveat. Minimal waste, though the route strings are slightly technical for a purely descriptive line.

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?

Output schema exists so return values needn't be described; annotations cover safety. For a zero-param read tool the description is nearly complete, with only minor gaps like whether inactive categories are included.

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 (schema coverage 100% by default), so there is no parameter semantics to explain. Baseline 4 applies for a no-arg tool.

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+resource ('List configured expense categories'), which is unambiguous. It doesn't need to differentiate from a sibling because no other expense-category-list tool exists, though it could have named related siblings like admin_create_expense_category or admin_list_expenses.

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, nor prerequisites. The route note describes provenance and stability, not usage context, so the agent is left to infer conditions 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.

Undocumented route: GET /expenses, GET /projects/{project_id}/expenses, GET /users/{user_id}/expenses are not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove them without notice. Documented routes: GET /users/{user_id}/expense_items and GET /projects/{project_id}/expense_items.

NameRequiredDescriptionDefault
pageNo
to_dateNo
user_idNo
per_pageNo
from_dateNo
project_idNo

Output 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 readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds meaningful behavioral context beyond annotations by warning that several routes are undocumented and may change or be removed without notice, while identifying the documented routes.

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 purpose is front-loaded and the warning about undocumented routes follows immediately. The text is information-dense without wasted sentences, though the route-level API detail is somewhat technical for a tool description.

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 definition covers purpose, filter scope, and route stability, and an output schema exists so return values need not be explained. However, for a six-parameter list tool with 0% schema coverage, the absence of date-range and pagination semantics leaves a meaningful completeness gap.

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 for six undocumented parameters. It only indirectly explains project_id and user_id filtering; from_date, to_date, page, and per_page are not described, leaving most parameters without semantic guidance.

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 clearly states the verb and resource: it lists logged expenses and describes the scope as across projects or filtered by project/user. It is specific enough to distinguish listing from the singular get/create/update/delete expense siblings, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

The description implies usage by explaining that expenses can be listed across projects or filtered by project/user. However, it gives no explicit when-to-use guidance versus admin_get_expense, admin_list_expense_categories, or other admin list tools, and it does not mention prerequisites or exclusions.

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.

NameRequiredDescriptionDefault
to_dateNo
from_dateNo

Output 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).

NameRequiredDescriptionDefault

No parameters

Output 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.

NameRequiredDescriptionDefault

No parameters

Output 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.

Undocumented route: GET /tags is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /projects/{project_id}/tags and GET /users/{user_id}/tags.

NameRequiredDescriptionDefault
pageNo
per_pageNo

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.7/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 open-world, so the safety profile is covered. The description contributes genuine extra context by flagging the route as undocumented and subject to removal without notice, which annotations cannot express. However, it says nothing about pagination behavior despite page/per_page params, so behavioral disclosure is incomplete.

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

Conciseness3/5

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

Two short sentences, front-loaded with the purpose, with no filler. But the brevity is achieved by omitting needed detail (scope, pagination) rather than by efficient phrasing.

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 safety. Still, a list tool with pagination params at 0% schema coverage should say something about what page/per_page do and what set of tags is returned; that gap keeps it at minimum viable.

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 (page, per_page) carry no explanation in the schema. The description does not mention them at all, so an agent gets no semantics beyond defaults and parameter names.

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 first line 'List tags.' states a verb and resource, but gives no scope (all tags? global admin tags?) and does not distinguish this from siblings like admin_create_tag or admin_delete_tag. It is minimally identifiable but a reader cannot tell WHICH tags are listed.

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?

It mentions that documented routes `GET /projects/{project_id}/tags` and `GET /users/{user_id}/tags` exist, but never says when an agent should call this tool versus using those scoped routes. There is no guidance on prerequisites or when to prefer alternatives.

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 RatesA
Read-onlyIdempotent

List bill rate tiers for a user.

Undocumented route: GET /users/{user_id}/bill_rates is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /bill_rates and GET /projects/{project_id}/bill_rates.

NameRequiredDescriptionDefault
user_idYes

Output 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 readOnly, idempotent, non-destructive and openWorld, so the safety profile needs no restating. The description adds genuinely non-structured context: the route is undocumented, sits outside the published Resource Management API and archived 10,000ft docs, and may be changed or removed without notice — exactly the stability risk an agent cannot infer from annotations.

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

Conciseness4/5

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

Two sentences, purpose first, caveat second — well front-loaded with no filler. The raw path strings are slightly verbose but they are load-bearing for the warning, so they earn their place.

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?

Return values are covered by the output schema, safety traits by annotations, and the one thing structured data cannot convey — that this route is unsupported and unstable — is stated explicitly. An agent has everything needed to call it correctly and to weigh the risk.

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?

There is one required parameter and schema description coverage is 0%, so the description is the only place semantics could be added. `user_id` is self-explanatory by name, but the description says nothing about its expected form (integer vs. string) or whether the tiers returned are per-user overrides vs. inherited rates.

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: lists bill rate tiers scoped to a single user. This is enough to separate it from the mutating sibling admin_create_user_bill_rate, but it never mentions the project-scoped or global bill-rate listing routes as sibling tools, so differentiation is only partial.

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 points at documented alternatives (`GET /bill_rates`, `GET /projects/{project_id}/bill_rates`) but frames them as a documentation caveat rather than as a routing rule. It never says 'use this when you only have a user_id and need per-user tiers, otherwise prefer the project route', so the when-to-use decision is left implicit.

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.

NameRequiredDescriptionDefault
pageNo
roleNo
archivedNo
per_pageNo
disciplineNo
include_billabilityNo

Output 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.

NameRequiredDescriptionDefault

No parameters

Output 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 ValuesB
Idempotent

Set custom field values for an entity.

Undocumented route: PUT /custom_field_values is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: PUT /projects/{project_id}/custom_field_values/{custom_field_value_id} and PUT /users/{user_id}/custom_field_values/{custom_field_value_id}.

NameRequiredDescriptionDefault
valuesYes
target_idYes
target_typeYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare write, open-world, idempotent, and non-destructive behavior. The description adds important behavioral context by warning that the primary route is undocumented and may be changed or removed without notice, and it names the documented project/user routes.

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 and front-loads the purpose before giving the route warning. The route details are relevant because they flag API instability, though the wording could be tighter.

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 cover return values and safety, but the tool has three required parameters with zero schema description coverage. The description leaves critical invocation details undefined, especially target_type and the values object structure.

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, but it only vaguely refers to an "entity" and route paths. It does not explain the required target_type values, how target_id maps to project/user IDs, or what shape the values object should take.

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 action and resource: "Set custom field values for an entity." It is clear enough to distinguish from listing custom field values or updating custom field definitions, though it does not explicitly name sibling tools or alternatives.

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 explains which routes exist but does not say when to use this tool versus alternatives such as admin_update_custom_field or admin_list_custom_field_values. There is no explicit when-to-use or when-not-to-use guidance.

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

admin_set_user_statusAdmin Set User StatusB
Idempotent

Set current working status for a user (status: 'ITO', 'WFH', 'SIC', 'OOO', 'VAC', 'OOF').

NameRequiredDescriptionDefault
notesNo
statusYes
user_idYes

Output 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 ClientB

Update a client record.

Undocumented route: PUT /clients/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
cityNo
nameNo
stateNo
addressNo
countryNo
zipcodeNo
archivedNo
client_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

The description adds substantive behavioral context beyond the annotations by warning that the underlying PUT route is undocumented and may be changed or removed without notice. It does not cover permissions, partial-update behavior, or how null values are handled, but the route-fragility disclosure is genuinely useful 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.

Conciseness5/5

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

The description is two compact sentences: purpose first, then the critical undocumented-route warning. Every sentence adds value, and the warning is front-loaded after the core action.

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 eight parameters, no schema descriptions, and no parameter guidance in the description, the definition is materially incomplete. The undocumented-route warning is valuable, but an agent still lacks enough information to invoke the tool correctly with specific fields.

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 needed to compensate for the eight undocumented parameters. It mentions none of them and gives no indication of required versus optional fields, field meanings, or update 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?

The description states a clear verb and resource: 'Update a client record.' This distinguishes it from sibling tools such as admin_create_client, admin_delete_client, and admin_get_client, though it does not clarify partial-update semantics or which fields are mutable.

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 explicit guidance on when to use this tool versus alternatives, nor any preconditions or exclusions. The undocumented-route warning is a risk note, not usage guidance.

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.

NameRequiredDescriptionDefault
nameNo
optionsNo
custom_field_idYes

Output 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 DisciplineB

Update an existing discipline.

Undocumented route: PUT /disciplines/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for disciplines.

NameRequiredDescriptionDefault
nameYes
discipline_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

Adds meaningful context beyond annotations: the route is undocumented, unlisted in both the current and archived API references, and may be changed or removed without notice. It does not explain what the update does to existing values (full replace vs partial) or required permissions, but the undocumented-route disclosure is a substantive behavioral note not present in the annotations.

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

Conciseness4/5

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

Two short paragraphs, the core action front-loaded and the risk disclosure immediately after. Every sentence carries information; the only minor critique is that the warning dominates a very sparse description.

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 endpoint-instability caveat is a valuable addition. However, for a mutation tool with two undocumented parameters and no permissions or scope details, the description leaves real gaps an agent must guess at.

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 (discipline_id, name) are required, yet the description adds no meaning about them — no indication of ID format, whether name is a rename, or if other fields exist. The description does not 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?

States a specific verb and resource ('Update an existing discipline') that clearly contrasts with the sibling create/delete discipline tools. It does not explicitly name those siblings, but the operation is unambiguous from the name and first sentence.

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_discipline, admin_delete_discipline, or other admin update tools. The only context given is a stability warning about the endpoint, which is not usage guidance.

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.

Undocumented route: PUT /expenses/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: PUT /users/{user_id}/expense_items/{expense_item_id}.

NameRequiredDescriptionDefault
dateNo
notesNo
amountNo
expense_idYes
is_billableNo

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=false, openWorld=true, so the safety profile is partly covered. The description adds genuinely non-obvious context: the PUT /expenses/{id} route is undocumented and may be changed or removed without notice, with the documented alternative path given. It still fails to state update semantics for omitted/null fields, which matters a lot for a non-idempotent mutation.

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

Conciseness3/5

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

The purpose sentence is front-loaded and efficient. The second paragraph earns partial credit for a real risk disclosure, but it is presented as two raw URL strings whose value to an agent is largely in the word "undocumented", not in the path syntax.

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 non-idempotent, open-world mutation with 0% parameter documentation, the description omits required permissions, partial-update semantics, and what happens to fields not supplied — the gaps that would actually prevent a mis-call.

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 — and it never mentions date, notes, amount, is_billable, or expense_id. Worse, every field except expense_id defaults to null, and the description is silent on whether null means "leave unchanged" or "clear the value", leaving the agent unable to use the parameters correctly.

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?

Opens with a specific verb+resource ("Update a logged expense item"), which cleanly distinguishes it from admin_create_expense, admin_get_expense, and admin_delete_expense. It does not, however, mention the scope of what can be updated (fields, partial vs full replacement), so purpose is clear at a coarse grain only.

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 siblings or the REST alternatives it names. The only conditional information is a route-stability warning, which tells the agent nothing about when this tool is the right choice over admin_get_expense or admin_list_expenses.

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 HolidayB

Update a holiday.

Undocumented route: PUT /holidays/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

NameRequiredDescriptionDefault
dateNo
nameNo
end_dateNo
holiday_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, open-world operation. The description adds meaningful risk context by disclosing that the PUT route is undocumented and may change or be removed without notice, though it does not explain partial-update behavior, null handling, or authentication requirements.

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

Conciseness5/5

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

The description is two sentences, front-loads the core action, and the second sentence is a useful stability warning rather than filler. It is 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?

The description warns about the undocumented route and output schema exists, but it leaves critical input semantics unexplained for a mutation tool with 0% schema description coverage. An agent still lacks guidance on required ID, optional fields, and update semantics.

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 does not explain any of the four parameters. It provides no meaning for holiday_id, date, name, or end_date, nor does it clarify optional/null behavior.

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 explicitly states a specific verb and resource: "Update a holiday." This clearly distinguishes it from sibling tools such as admin_create_holiday, admin_get_holiday, and admin_delete_holiday.

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 guidance on when to choose this tool over alternatives, nor does it state prerequisites or exclusions. Usage is only implied by the verb "Update."

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 TypeA

Update a leave type name.

Undocumented route: PUT /leave_types/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for leave types.

NameRequiredDescriptionDefault
nameYes
leave_type_idYes

Output 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 state readOnly=false, openWorld=true, idempotent=false, destructive=false. The description adds material context beyond those hints: the PUT route is undocumented and may change or disappear without notice, and only GET is documented. That is useful risk disclosure; only auth/rate-limit/permission details are missing.

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 definition is two tight pieces: a front-loaded purpose sentence followed by the one caveat that matters. No redundant restatement of 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?

The description covers the purpose and the important undocumented-endpoint risk, and the output schema relieves it of return-value explanation. However, it leaves required parameter semantics and permission/auth expectations unstated, which matters for a mutation against an undocumented endpoint.

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 0% schema description coverage, the description must carry parameter meaning. It explains that 'name' is the leave type name and the route shows {id}, but it says nothing about leave_type_id's accepted integer-or-string form, validation, or what happens on an unknown ID; most parameter semantics are left to the bare schema.

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 first sentence states a specific verb (Update), resource (leave type), and the affected field (name). That clearly separates it from admin_create_leave_type, admin_list_leave_types, admin_get_leave_type, and admin_delete_leave_type.

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 implied by the update verb and by the fact that it changes an existing leave type's name, but there is no explicit when-to-use guidance, no when-not-to-use condition, and no pointer to alternatives such as create/delete/get. It is adequate for an obvious CRUD operation but relies on the agent to infer the selection.

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 RoleB

Update an existing role.

Undocumented route: PUT /roles/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for roles.

NameRequiredDescriptionDefault
nameYes
role_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare the non-read-only, non-idempotent, open-world safety profile, so the description avoids repeating that. It adds genuinely non-derivable context: the PUT /roles/{id} route is undocumented and may be changed or removed without notice. It does not say what permissions are needed or whether unmentioned fields are preserved, keeping it short of 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.

Conciseness3/5

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

The opening sentence is well front-loaded, but the bulk of the length is a stability warning that could be compressed to one clause. Nothing is wasted, yet the informative content per sentence is thin relative to size.

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 critical operational caveat is present. However, with two undocumented required parameters and no permission or partial-update semantics, an agent still lacks enough to call this confidently in a production setting.

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 burden and fails: neither role_id (which accepts integer or string) nor name is explained. An agent gets no guidance on identifier format or whether name is the sole mutable field, which was already visible in the 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 specific verb and resource ("Update an existing role"), which an agent can distinguish from admin_create_role and admin_delete_role by name alone. It stops short of stating what about the role is updatable (only name is exposed), so the purpose is clear but not fully scoped.

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 versus admin_create_role, admin_delete_role, or admin_update_user, and no prerequisites or permission requirements. Usage is only implied by the verb 'update'; the second paragraph warns about API stability but gives no selection guidance.

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.

NameRequiredDescriptionDefault
roleNo
emailNo
user_idYes
archivedNo
bill_rateNo
cost_rateNo
last_nameNo
disciplineNo
first_nameNo
billability_targetNo

Output 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_bulk_delete_assignmentsProjects Bulk Delete AssignmentsA
Destructive

Bulk delete multiple resource assignments (Destructive: gated by SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1 and confirm=True).

NameRequiredDescriptionDefault
confirmNo
assignment_idsYes

Output 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 idempotentHint=false, but the description adds valuable non-annotation context: the operation is gated behind an environment flag and an explicit confirm=True. That precondition is exactly the kind of behavior an agent cannot infer from the schema or annotations alone, though irreversibility/partial-failure behavior is not elaborated.

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 front-loaded sentence: action and resource first, then the critical gating caveat in parentheses. 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?

An output schema exists, so return-value explanation is not needed, and annotations cover the safety profile. The description supplies the essential gating prerequisite, but for a destructive bulk mutation it stops short of describing atomicity, partial failure, or batch-size expectations.

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, yet it only sheds light on one of the two parameters (confirm=True required). The required assignment_ids array is undocumented in both places - no batch size limits, no note on the int-or-string item type, no behavior for invalid IDs.

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?

Specific verb ('bulk delete') plus specific resource ('resource assignments'), with the scope qualifier 'multiple' that distinguishes it from the sibling projects_delete_assignment. An agent can tell immediately that this is the batch variant of the single-assignment delete.

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 gating condition ('requires SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1 and confirm=True') gives a useful precondition for successful invocation. However, it never states when to prefer this over repeated projects_delete_assignment calls or what constraints apply (batch limits), 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.

projects_clone_project_scheduleProjects Clone Project ScheduleB

Duplicate project budget settings, timeline, and phase milestone structure to a new project.

NameRequiredDescriptionDefault
client_idNo
new_start_dateNo
source_project_idYes
target_project_nameYes

Output 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).

NameRequiredDescriptionDefault
noteNo
percentNo
user_idYes
end_dateYes
phase_idNo
project_idYes
start_dateYes
fixed_hoursNo
hours_per_dayNo
allocation_modeNopercent

Output 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.

NameRequiredDescriptionDefault
completedNo
project_idYes
descriptionYes
assignment_idYes

Output 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.

NameRequiredDescriptionDefault
roleNo
titleYes
locationNo
disciplineNo

Output 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.

NameRequiredDescriptionDefault
nameYes
budgetNo
secureNo
end_dateNo
client_idNo
start_dateNo
budget_typeNo
descriptionNo
project_typeNoBillable
project_stateNoTentative

Output 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_assignmentProjects Create Project AssignmentB

Assign a user to a project on the documented route POST /projects/{project_id}/assignments (dates: YYYY-MM-DD).

Set allocation_mode and the matching value: percent (the reference documents it as a fraction from 0 to 1), hours_per_day, or fixed_hours for the fixed mode. allocation_mode is sent as given, because the reference names the fixed mode fixed in its description and fixed_hours in its schema. Percent mode is the default and requires percent; hours_per_day and the fixed mode require hours_per_day and fixed_hours. Without the matching value the call is refused before any request.

NameRequiredDescriptionDefault
percentNoShare of the user's time as a fraction from 0 to 1. Required when allocation_mode is `percent`, which is the default; without it the call is refused before any request is sent.
user_idYes
end_dateYes
project_idYes
start_dateYes
descriptionNo
fixed_hoursNo
bill_rate_idNo
hours_per_dayNo
allocation_modeNoAllocation mode, sent unchanged: `percent` (the default; `percent` is then required), `hours_per_day` (`hours_per_day` is then required), or the fixed mode, which the API reference names `fixed` in its description and `fixed_hours` in its enum (`fixed_hours` is then required).percent
status_option_idNo

Output 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 the mutation profile (open-world, non-idempotent, non-destructive), so the bar is lower. The description adds real behavioral context: validation happens before any request is sent when the matching value is missing, and it discloses the mode-naming quirk between reference description and enum. It omits auth requirements and error/return behavior.

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

Conciseness4/5

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

Front-loads the core action and route, then explains the allocation rules. The middle sentence about fixed vs fixed_hours naming is dense but earns its place by preventing a real invocation error.

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 output schema exists so return values need no explanation, and the mutation profile is annotated. However, for an 11-parameter mutation at 18% schema coverage, the description leaves too many parameters and the sibling disambiguation unaddressed to be fully complete.

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 only 18%, so the description must compensate; it does well on the hard part (percent as fraction 0-1, allocation_mode value mapping, date format YYYY-MM-DD) but leaves roughly seven params (user_id, project_id, description, bill_rate_id, status_option_id, start/end dates) with no added meaning beyond a bare 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 specific verb+resource (assign a user to a project) and even names the HTTP route, so an agent immediately understands the operation. It does not differentiate from close siblings like projects_create_assignment and projects_create_user_assignment, leaving ambiguity about which creation tool to pick.

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 conditional guidance only for allocation_mode selection, which is really parameter semantics. It gives no when-to-use vs when-not guidance and never mentions the similar assignment-creation siblings, so an agent has no routing signal.

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.

NameRequiredDescriptionDefault
nameYes
budgetNo
end_dateYes
project_idYes
start_dateYes
descriptionNo

Output 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_create_user_assignmentProjects Create User AssignmentA

Assign a user to a project, phase or leave type on the documented route POST /users/{user_id}/assignments (dates: YYYY-MM-DD).

assignable_id is the project, phase or leave type ID. Set allocation_mode and the matching value: percent (the reference documents it as a fraction from 0 to 1), hours_per_day, or fixed_hours for the fixed mode. allocation_mode is sent as given, because the reference names the fixed mode fixed in its description and fixed_hours in its schema. Percent mode is the default and requires percent; hours_per_day and the fixed mode require hours_per_day and fixed_hours. Without the matching value the call is refused before any request.

NameRequiredDescriptionDefault
percentNoShare of the user's time as a fraction from 0 to 1. Required when allocation_mode is `percent`, which is the default; without it the call is refused before any request is sent.
user_idYes
end_dateYes
start_dateYes
descriptionNo
fixed_hoursNo
bill_rate_idNo
assignable_idYes
hours_per_dayNo
allocation_modeNoAllocation mode, sent unchanged: `percent` (the default; `percent` is then required), `hours_per_day` (`hours_per_day` is then required), or the fixed mode, which the API reference names `fixed` in its description and `fixed_hours` in its enum (`fixed_hours` is then required).percent
status_option_idNo

Output 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 write, non-idempotent, open-world, non-destructive, so the description is not required to establish the safety profile. It adds genuine behavioral context the annotations lack: a pre-request validation failure when the matching allocation value is absent, and that allocation_mode is forwarded verbatim despite an API naming inconsistency between `fixed` and `fixed_hours`.

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?

Front-loaded with resource, route and date format, which is good, but the percent/allocation_mode rules largely restate what the schema's own property descriptions already say, so several sentences are duplicated rather than additive. The wording around the fixed-mode naming discrepancy is also dense enough to take two readings.

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 an 11-parameter write tool at 18% schema coverage, the description explains the allocation-mode machinery well and an output schema handles return values. It still leaves a third of the parameters (bill_rate_id, status_option_id, user_id, description) with no semantics anywhere, which is a meaningful gap for correct invocation.

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?

With only 18% schema description coverage, the description carries most of the burden and does so for the hard parts: assignable_id semantics, the percent (0–1 fraction), hours_per_day and fixed modes, the date format, and the mode-to-value mapping. It leaves the meanings of bill_rate_id, status_option_id, description and user_id entirely undocumented in both places.

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 ('Assign a user to a project, phase or leave type') plus the concrete route POST /users/{user_id}/assignments, so the operation is unambiguous. It does not explicitly contrast itself with near-identical siblings such as projects_create_assignment or projects_create_project_assignment, leaving the agent to infer that this one is user-scoped.

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 explains the internal mode rules (which value each allocation_mode requires) and that a missing value causes refusal, which is real guidance on how to invoke it. It gives no when-to-use/when-not-to-use guidance relative to the several other assignment-creation siblings.

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).

NameRequiredDescriptionDefault
confirmNo
assignment_idYes

Output 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).

NameRequiredDescriptionDefault
confirmNo
project_idYes
subtask_idYes
assignment_idYes

Output 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).

NameRequiredDescriptionDefault
confirmNo
placeholder_idYes

Output 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).

NameRequiredDescriptionDefault
confirmNo
project_idYes

Output 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).

NameRequiredDescriptionDefault
confirmNo
phase_idYes
project_idYes

Output 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.

NameRequiredDescriptionDefault
assignment_idYes

Output 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.

NameRequiredDescriptionDefault
project_idYes
with_phasesNo

Output 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 PhaseA
Read-onlyIdempotent

Get details for a specific project phase.

Undocumented route: GET /projects/{project_id}/phases/{phase_id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only PUT and DELETE on that path; GET /projects/{project_id}/phases lists phases.

NameRequiredDescriptionDefault
phase_idYes
project_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds critical context not in annotations: the endpoint is undocumented, may be changed or removed without notice, and the reference only documents PUT and DELETE on that path.

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 purpose is front-loaded in one sentence, followed by a compact warning paragraph. Every sentence adds value and there is 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?

The tool has an output schema and annotations, and the description covers purpose plus endpoint stability. However, it leaves parameter semantics unexplained and does not explicitly route the agent between this tool, `projects_list_project_phases`, and `projects_update_project_phase`.

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 required parameters lack documented meaning in the schema. The description only shows them in the route template as path identifiers and does not explain acceptable formats or how to obtain `phase_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 first sentence clearly states a specific verb and resource: 'Get details for a specific project phase.' It distinguishes the single-phase get from the collection-listing route in the warning, though sibling differentiation is not front-loaded as an explicit comparison.

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 implied: fetch details for a known phase. The warning notes that `GET /projects/{project_id}/phases` lists phases, which helps distinguish get from list, but there is no explicit 'use this when' or 'do not use this when' guidance.

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.

NameRequiredDescriptionDefault
pageNo
to_dateNo
user_idNo
per_pageNo
from_dateNo
project_idNo

Output 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.

NameRequiredDescriptionDefault
project_idYes
assignment_idYes

Output 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.

NameRequiredDescriptionDefault
pageNo
per_pageNo

Output 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.

NameRequiredDescriptionDefault
project_idYes

Output 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.

NameRequiredDescriptionDefault
pageNo
archivedNo
per_pageNo
sort_fieldNo
sort_orderNoasc
with_phasesNo
filter_fieldNo
filter_valueNo

Output 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.

NameRequiredDescriptionDefault
pageNo
per_pageNo
project_idYes

Output 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.

NameRequiredDescriptionDefault

No parameters

Output 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.

NameRequiredDescriptionDefault
noteNo
percentNo
end_dateNo
start_dateNo
fixed_hoursNo
assignment_idYes
hours_per_dayNo

Output 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.

NameRequiredDescriptionDefault
nameNo
budgetNo
archivedNo
end_dateNo
project_idYes
start_dateNo
budget_typeNo
descriptionNo
project_stateNo

Output 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.

NameRequiredDescriptionDefault
nameNo
budgetNo
end_dateNo
phase_idYes
project_idYes
start_dateNo
descriptionNo

Output 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_bulk_delete_time_entriesTime Bulk Delete Time EntriesA
Destructive

Bulk delete multiple time entries (Destructive: gated by SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1 and confirm=True).

Undocumented route: DELETE /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: DELETE /users/{user_id}/time_entries/{id}.

NameRequiredDescriptionDefault
confirmNo
entry_idsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With destructiveHint=true already declared, the description adds real value: the SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE gate, the confirm flag requirement, and a warning that the route is undocumented and may be removed. It does not address partial-failure behavior, which matters for a non-idempotent bulk delete.

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?

Two compact sentences, destruction/gating stated first, API-stability caveat second. No filler and nothing repeated from the name or annotations.

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 safety story is well covered. For a destructive bulk operation with zero schema coverage, though, the definition leaves entry_ids semantics and partial-failure/response behavior entirely unaddressed.

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 load. It explains confirm's role as a safety gate but says nothing about entry_ids format, accepted id types, array size limits, or individual parameter behavior beyond the field name.

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 with scope ('Bulk delete multiple time entries'), which clearly separates it from the single-entry time_delete_time_entry. It stops short of naming that sibling explicitly, 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 description conveys the destructive gating conditions (env var plus confirm=True) but never says when to prefer this over time_delete_time_entry or what entry counts make bulk worthwhile. Usage is implied by 'bulk' rather than spelled out.

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 HoursB

Auto-confirm all unconfirmed scheduled suggestions for a user within a date range.

Undocumented route: PUT /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Each suggestion is confirmed there. Documented route: PUT /users/{user_id}/time_entries/{id}.

NameRequiredDescriptionDefault
to_dateYes
user_idYes
from_dateYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The description adds real context beyond annotations by disclosing that the underlying route is undocumented and may be changed or removed without notice — a genuine operational risk. However, it omits the behavioral consequences of confirming (what state the time entries end up in, whether confirmation is reversible, and it never acknowledges the non-idempotent behavior declared in annotations). The two-route paragraph is also ambiguous about which endpoint is actually used.

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 first sentence is well front-loaded and wastes nothing. The second half is muddy: it presents an undocumented route and a documented route without saying which applies here or when, which costs the reader more than it earns.

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 the mutation scope is stated. But for a bulk write operation with zero parameter documentation, the description leaves open partial-failure behavior (what happens if some suggestions can't be confirmed) and the meaning of 'scheduled suggestion' for an agent unfamiliar with Resource Management.

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 does state that confirmation is scoped to a user and a date range, mapping to all three parameters, but adds no format details for from_date/to_date (date string format, inclusive/exclusive bounds) or whether user_id may be a string identifier versus integer.

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 first sentence gives a specific verb ('Auto-confirm'), a specific resource ('unconfirmed scheduled suggestions'), and a scope ('for a user within a date range'). This clearly distinguishes it from the read-only sibling time_list_user_suggestions, 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?

Usage is implied by the verb — you use this to bulk-confirm suggestions rather than to list or edit them individually — but there is no explicit when-to-use guidance and no mention of prerequisites such as whether entries must be unlocked or whether approvals interact (time_update_time_approval_status exists as a sibling).

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').

NameRequiredDescriptionDefault
notesNo
statusNoapproved
approvable_idsYes
approvable_typeYes

Output 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_project_time_entryTime Create Project Time EntryA

Create a time entry on a project on the documented route POST /projects/{project_id}/time_entries.

date is YYYY-MM-DD. The body's assignable_id is project_id, which the reference says must match the URL; to log time to a phase or leave type, use time_create_user_time_entry. task, notes and bill_rate_id are optional; the reference limits task and notes to 256 characters.

NameRequiredDescriptionDefault
dateYes
taskNo
hoursYes
notesNo
user_idYes
project_idYes
bill_rate_idNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive write with openWorldHint=true, so the mutation profile is covered. The description adds useful constraints (date format, 256-char limits, assignable_id/URL coupling) but says nothing about permissions, duplicate submission behavior, or side effects like timesheet status changes.

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?

Front-loads the verb, resource, and route, then packs constraints into two dense sentences with almost no waste. Slightly cramped but every clause carries 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 values needn't be explained, and the description covers the tricky creation constraints and the sibling routing decision. Gaps remain around user_id/hours semantics and permission or idempotency expectations for a mutating 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?

With 0% schema description coverage the description must compensate, and it does for several fields: date is YYYY-MM-DD, assignable_id is the project_id and must match the URL, task/notes are optional and capped at 256 characters, bill_rate_id is optional. It leaves user_id and hours undescribed, so it isn't fully complete.

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?

States a specific verb (Create), resource (time entry), and scope (on a project), plus cites the exact documented route POST /projects/{project_id}/time_entries. It explicitly discriminates from the close sibling time_create_user_time_entry by naming the phase/leave-type case as that tool's domain.

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

Usage Guidelines5/5

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

Gives an explicit routing rule: use time_create_user_time_entry to log time to a phase or leave type. Also flags the constraint that assignable_id must match the project_id in the URL, which steers correct invocation.

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 EntryA

Create a new time entry for a user on a project (date format: YYYY-MM-DD).

Undocumented route: POST /time_entries is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: POST /users/{user_id}/time_entries (time_create_user_time_entry) and POST /projects/{project_id}/time_entries (time_create_project_time_entry).

NameRequiredDescriptionDefault
dateYes
hoursYes
notesNo
user_idYes
phase_idNo
project_idYes
is_billableNo
custom_field_valuesNo

Output 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 cover readOnly=false, destructive=false, idempotent=false and openWorld=true, so the safety profile is known. The description adds genuinely useful context beyond that: this endpoint is undocumented and may be changed or removed without notice, a real operational risk. It stops short of describing side effects such as timesheet totals or approval status changes.

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?

Two short sentences, purpose front-loaded followed by the risk caveat and alternative routes; no filler. It could be tightened slightly by folding the route warning into one clause, but nothing 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?

Return values needn't be explained since an output schema exists, and the route-risk caveat is valuable. However, for a mutation tool with 8 parameters, 0% schema coverage and a billable-by-default flag, omitting parameter meaning leaves an agent guessing on the actual write payload.

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 carry the semantics. It only supplies a date format hint; user_id, project_id, hours, notes, phase_id, is_billable (defaults true) and custom_field_values are left entirely undefined, including whether IDs accept names or the shape of custom_field_values.

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?

States a specific verb and resource ("Create a new time entry for a user on a project") plus one format constraint. It explicitly names the two sibling routes (time_create_user_time_entry, time_create_project_time_entry), so an agent can distinguish this tool from its closest alternatives without opening schemas.

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

Usage Guidelines3/5

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

It names the two documented alternatives and flags this route as undocumented, which implies a preference ordering, but never states when this tool is the right choice (e.g. when you need to pass both user_id and project_id explicitly rather than deriving them from a path). The reader must infer the selection rule.

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

time_create_user_time_entryTime Create User Time EntryA

Create a time entry for a user on the documented route POST /users/{user_id}/time_entries.

assignable_id is the project, phase or leave type ID; date is YYYY-MM-DD. task, notes and bill_rate_id are optional; the reference limits task and notes to 256 characters. The body repeats user_id, which the reference says must match the URL.

NameRequiredDescriptionDefault
dateYes
taskNo
hoursYes
notesNo
user_idYes
bill_rate_idNo
assignable_idYes

Output 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 this is a non-read-only, non-idempotent, open-world write. The description adds real context beyond that: the 256-character limit on task and notes, the date format, and the URL/body user_id consistency requirement. It stops short of describing error behavior or permissions, so a 4 rather than 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.

Conciseness4/5

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

Front-loaded with the verb and route in the first sentence, then parameter semantics. Two paragraphs, little waste, though the repeated "the reference says" phrasing is slightly padded.

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 not be described, and annotations cover the safety profile. The description covers nearly all parameters and constraints; only the meaning of `hours` is left for the agent to guess.

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?

Schema coverage is 0%, so the description carries the burden and largely does: assignable_id's meaning, date format, optionality of task/notes/bill_rate_id, and the user_id duplication rule. The required `hours` parameter is never explained (units, decimal vs integer), which is the one clear gap across seven parameters.

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 time entry for a user") and even pins the route POST /users/{user_id}/time_entries. It does not explicitly distinguish itself from close siblings like time_create_time_entry or time_create_project_time_entry, so an agent must infer the difference from the URL.

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 gives useful usage constraints — assignable_id covers project/phase/leave type, optional fields are named, and user_id in the body must match the URL. But there is no guidance on when to pick this over the sibling create-time-entry tools, which is the main routing ambiguity here.

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).

NameRequiredDescriptionDefault
confirmNo
approval_idYes

Output 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).

Undocumented route: DELETE /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: DELETE /users/{user_id}/time_entries/{id}.

NameRequiredDescriptionDefault
confirmNo
entry_idYes

Output 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 idempotentHint=false, but the description adds value beyond them: the confirm=True safety gate and a candid warning that the underlying route is undocumented and may be changed or removed without notice. It still does not say whether deletion is recoverable or what happens to an approved/locked entry, which keeps it short of 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.

Conciseness4/5

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

Short and front-loaded: the verb+resource and the confirm requirement come first, with the route caveat after. The documented/undocumented route sentence is somewhat implementation-detail heavy but earns its place as a stability warning.

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 confirm gate plus route risk cover the main behavioral hazards. Still missing for a destructive single-record mutation: accepted `entry_id` formats and any state preconditions (approved, locked, or submitted timesheets) that would cause the delete to fail.

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 load. It explains the purpose of `confirm` as a destructive-operation gate but says nothing about `entry_id` — notably that it accepts either an integer or a string via anyOf — so only half the parameters gain 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 and resource ('Delete a time entry'), which is unambiguous and clearly a mutation. It does not, however, differentiate itself from the sibling `time_bulk_delete_time_entries`, so an agent must infer that this handles a single entry.

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 states a hard precondition ('requires confirm=True'), which is real usage guidance. It gives no guidance on when to prefer this over `time_bulk_delete_time_entries`, nor any prerequisites such as whether the entry must be unlocked or unapproved before deletion.

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 TimesheetA

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).

Undocumented route: POST /time_entries is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Each entry is created there. Documented route: POST /users/{user_id}/time_entries.

NameRequiredDescriptionDefault
notesNoStandard logged hours
user_idYes
project_idNo
start_dateYes
daily_hoursNo
weekend_hoursNo
include_weekendsNo

Output 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 cover the safety profile (not read-only, non-idempotent, non-destructive, open-world), and the description adds genuinely new context: it discloses that POST /time_entries is an undocumented route that Smartsheet may change or remove without notice, and contrasts it with the documented route. It stops short of saying what happens to pre-existing entries on the same dates, which matters given 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?

Front-loaded with the core behavior, then a compact parameter block, then the route caveat. Every sentence carries information; slight verbosity in the undocumented/documented route comparison, but it is substantive rather than 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, but for a 7-parameter mutation tool with no schema descriptions and no annotations covering route/overwrite behavior, the description leaves gaps: it does not explain user_id type flexibility, project_id's role (and what null means), daily_hours application, or notes.

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 only documents three of seven parameters (start_date format, include_weekends, weekend_hours fallback behavior). user_id, project_id, daily_hours, and notes receive no explanation beyond their names and defaults.

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 (batch-fill weekly timesheet entries) with concrete scope (Mon–Fri 8h default, 7-day with include_weekends) and the target user. It is distinguishable from single-entry siblings like time_create_time_entry by the 'batch/weekly' framing, 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 default behavior and the weekend opt-in are explained, and the route caveat tells the agent about implementation risk, but there is no explicit guidance on when to choose this over time_create_time_entry, time_create_user_time_entry, or time_reconcile_and_submit_week. Usage is implied by 'weekly batch' rather than stated.

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.

NameRequiredDescriptionDefault
entry_idYes

Output 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.

NameRequiredDescriptionDefault
pageNo
per_pageNo

Output 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).

NameRequiredDescriptionDefault
pageNo
to_dateNo
user_idNo
per_pageNo
from_dateNo
project_idNo
with_suggestionsNo

Output 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.

NameRequiredDescriptionDefault
to_dateNo
user_idYes
from_dateNo

Output 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 TimesheetA
Idempotent

Lock or unlock timesheet records for a user up to a specified lock date (YYYY-MM-DD).

Undocumented route: POST /users/{user_id}/time_entries/lock is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
unlockNo
user_idYes
lock_dateYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description is not carrying the safety burden alone. It adds genuinely non-structural context: the underlying route is undocumented and may be changed or removed without notice. It stops short of saying what locking actually blocks (edits, submissions, approvals) or what the response contains.

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?

Two tight sentences: the operational sentence is front-loaded and the caveat follows. The undocumented-route warning earns its place because it materially affects trust in the call; nothing is redundant.

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, return values need not be described, and the key risk factors (undocumented route, date format, unlock toggle) are covered. The remaining gap is the effect of the operation itself — whether locking prevents edits or approvals and whether it is reversible via the unlock flag — which an agent would want before mutating timesheet data.

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 for all three parameters. It does explain lock_date's format (YYYY-MM-DD) and the inclusive 'up to' semantics, and the 'or unlock' phrasing gives meaning to the boolean flag, but user_id is left implicit and nothing is said about what happens to entries after the lock date or timezone handling.

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 opens with a specific verb pair and resource: 'Lock or unlock timesheet records for a user up to a specified lock date'. No sibling tool performs locking, so the operation is unmistakable against time_create_time_entry, time_update_time_approval_status, and the rest of 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 usage is implied by the semantics ('lock up to a date' means you need a user and a cutoff), but there is no explicit when-to-use guidance, no stated prerequisite or permission requirement, and no mention of how this relates to sibling tools like time_update_time_approval_status or time_reconcile_and_submit_week.

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 WeekA

Audit weekly logged hours against a target (40h) and optionally submit/approve timesheet.

Undocumented route: PUT /users/{user_id}/time_entries/approval_status is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Only auto_submit=True calls it. No documented equivalent was found.

NameRequiredDescriptionDefault
user_idYes
start_dateYes
auto_submitNo
target_hoursNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the submission path hits an undocumented route (`PUT /users/{user_id}/time_entries/approval_status`), that it is only reached when auto_submit=True, and that the endpoint may change or disappear without notice. This is exactly the kind of risk/impact context the structured fields cannot convey.

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?

Two sentences, correct front-loading: capability first, caveat second. The undocumented-route warning is slightly verbose but every clause carries actionable information about risk and conditional behavior.

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 output schema means return values need not be described, and the risk profile of the submit path is covered. The gap is the 0%-documented input schema: `start_date` semantics and `user_id` form are undefined anywhere, and the description does not say what happens when logged hours miss the target (blocked submission vs. reported discrepancy).

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 usefully ties `target_hours` to the 40h default and `auto_submit` to the submit/approve side effect, but says nothing about what `start_date` means (week start? any date in week? format) or what types `user_id` accepts.

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 compound action (audit weekly logged hours against a target, optionally submit/approve the timesheet) with the default target of 40h spelled out. It does not, however, distinguish this tool from siblings that also change approval state (`time_update_time_approval_status`, `time_lock_timesheet`), leaving overlap for the agent to resolve.

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 implied by the "weekly" + "target (40h)" framing, and the description does clarify that submission only happens when auto_submit is enabled. But there is no explicit when-to-use versus when-to-use-an-alternative guidance, nor any note on prerequisites (e.g. do entries need to exist first, must the week be closed).

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 StatusB
Idempotent

Approve or reject time entries for a user (status: 'approved', 'rejected', 'pending').

Undocumented route: PUT /users/{user_id}/time_entries/approval_status is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

NameRequiredDescriptionDefault
statusYes
user_idYes
entry_idsYes
approver_notesNo

Output 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 disclose that this is a non-read-only, idempotent, non-destructive open-world mutation. The description adds meaningful behavioral context beyond annotations by warning that the route is undocumented in Smartsheet references and may be changed or removed without notice. It does not describe required permissions, but the route-instability warning is substantive.

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

Conciseness4/5

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

The first sentence front-loads the core action and the status values, and the second sentence adds an important implementation warning. It is appropriately brief, though the documentation-history detail is somewhat verbose.

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 output schema covers return values and annotations cover the safety profile, so the description need not explain those. Still, for a four-parameter mutation with 0% schema description coverage, the description is incomplete because entry_ids and approver_notes are not clarified and no alternative tool routing is provided.

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 for all four parameters. It adds useful meaning for status by listing 'approved', 'rejected', and 'pending', and implies that user_id scopes the operation to a user. However, it says nothing about entry_ids or approver_notes, leaving two 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 states a specific verb and resource: approve or reject time entries for a user, and it lists the possible status values. It is clear what operation is performed, but it does not explicitly distinguish this tool from siblings such as time_create_approval or 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 Guidelines3/5

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

The operation is implied by 'Approve or reject time entries for a user', and the status values clarify the intended action. However, the description does not say when to use this tool versus related approval tools, nor does it state exclusions or prerequisites.

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.

Undocumented route: PUT /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: PUT /users/{user_id}/time_entries/{id}.

NameRequiredDescriptionDefault
dateNo
hoursNo
notesNo
entry_idYes
is_billableNo

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior3/5

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

With annotations already declaring mutability, non-idempotency, and openness, the description usefully adds that one route is undocumented and may change without notice. However, it does not explain partial-update behavior, required permissions, or what happens to omitted 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?

The purpose is front-loaded in one sentence, followed by concise route-risk disclosure. There is little waste, though the documented-route sentence is confusing because it references user_id, which is not in the input schema.

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 five undocumented parameters, the description omits field semantics and update behavior. The mention of a documented route requiring user_id, which is absent from the schema, creates a practical gap 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% across five parameters, and the description provides no meaning for date, hours, notes, is_billable, or entry_id beyond route context. It therefore fails to compensate for the schema's lack of parameter documentation.

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

Purpose4/5

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

The description uses a clear verb and resource: 'Update an existing time entry.' It distinguishes this from create/delete siblings, though it does not explicitly differentiate it from time_update_time_approval_status or explain which fields are updatable.

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

Usage Guidelines2/5

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

It gives no guidance on when to use this tool versus alternatives such as time_update_time_approval_status, time_lock_timesheet, or other time-entry tools. The route warning is useful context but does not tell the agent when this tool is appropriate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv2.1.0
    • Changedadmin_list_custom_field_values2 fields changed
      • addedInput schema / properties / target_id / description
        Added value: +"Optional ID of the entity whose values to list; use with target_type."
      • addedInput schema / properties / target_type / description
        Added value: +"Optional entity type for target_id, such as `Project`, `User` or `Phase`."
    • Addedprojects_create_project_assignment
    • Addedprojects_create_user_assignment
    • Addedtime_create_project_time_entry
    • Addedtime_create_user_time_entry
  2. 2 tool updatesv2.0.3
    • Addedprojects_bulk_delete_assignments
    • Addedtime_bulk_delete_time_entries
  3. 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
  4. 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.5/5.0

Scored across 104 tools

Disambiguation2/5

Multiple tool clusters have unclear boundaries: time_create_time_entry, time_create_user_time_entry, and time_create_project_time_entry all appear to log time, and projects_create_assignment, projects_create_project_assignment, and projects_create_user_assignment are three near-identical creation paths. Similarly projects_get_project_phase vs projects_list_project_phases is fine, but admin_list_expenses/admin_get_expense vs time_list_approvals/time_create_approval blur the reporting vs approval boundary. An agent would frequently need to read long caveat text to pick correctly, which is a symptom of overlap rather than distinct purpose.

Naming Consistency4/5

Nearly all names follow a predictable prefix_verb_noun convention (time_*, projects_*, admin_*) making the domain grouping obvious. A few workflow-style names like time_reconcile_and_submit_week or projects_clone_project_schedule deviate from the strict verb_noun shape, but the overall pattern is stable and readable.

Tool Count1/5

104 tools is an extreme surface for a single MCP server, far beyond what an agent can scan or select from reliably. Much of the volume comes from parallel CRUD variants and undocumented-route shims rather than distinct capabilities.

Completeness4/5

Coverage is broad: CRUD for projects, phases, assignments, users, roles, disciplines, clients, contacts, leave types, holidays, expenses, categories, tags, custom fields, webhooks, plus time entry workflows and reports. Minor gaps exist (no update_holiday counterpart for some entities is present, but tags and expense categories lack update operations, and reports are read-only), though core lifecycle operations are well represented.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers