Skip to main content
Glama

mcp-freshservice

A Model Context Protocol server for the Freshservice REST API v2. It lets an AI assistant work with tickets, changes, problems, releases, assets, requesters, agents, groups, the service catalog and the knowledge base.

Forked from effytech/freshservice_mcp and reworked for v2 (see CHANGELOG.md for breaking changes).

Quick start

You need a Freshservice API key (Profile Settings → API key) and your domain.

uvx mcp-freshservice --version

Claude Desktop / any MCP client (claude_desktop_config.json):

{
  "mcpServers": {
    "freshservice": {
      "command": "uvx",
      "args": ["mcp-freshservice"],
      "env": {
        "FRESHSERVICE_DOMAIN": "yourcompany.freshservice.com",
        "FRESHSERVICE_APIKEY": "<your-api-key>"
      }
    }
  }
}

Claude Code: claude mcp add freshservice -e FRESHSERVICE_DOMAIN=yourcompany.freshservice.com -e FRESHSERVICE_APIKEY=... -- uvx mcp-freshservice

Related MCP server: Freshservice MCP Server

Configuration

Variable

Required

Description

FRESHSERVICE_DOMAIN

yes

yourcompany.freshservice.com (a bare yourcompany also works)

FRESHSERVICE_APIKEY

yes

API key of the agent the server acts as. Permissions follow that agent

FRESHSERVICE_WORKSPACE_ID

no

Default workspace_id for calls on multi-workspace accounts. A tool's own workspace_id argument wins

FRESHSERVICE_READ_ONLY

no

1 exposes only read-only tools

FRESHSERVICE_TOOLSETS

no

Which toolsets to expose: names, default (the core set, used when unset) and/or all. See Choosing tools

FRESHSERVICE_TIMEOUT

no

HTTP timeout in seconds (default 30)

FRESHSERVICE_ATTACHMENT_DIRS

no

Folder(s) the server may read attachments from (; between several on Windows, : elsewhere). Attachments are off until set

FRESHSERVICE_MAX_RETRIES

no

Retries after a rate limit (429) or a transient 502/503/504 on reads (default 3, 0 disables)

MCP_TRANSPORT, MCP_HOST, MCP_PORT

no

stdio (default), streamable-http or sse

The same switches exist as flags: --read-only, --toolsets tickets,solutions, --transport.

Choosing tools

The server can expose 204 tools (full list in TOOLS.md), but some clients cap the tools per agent (for example 128) and models choose better from a shorter list. So by default only a 76-tool core set is enabled; everything else is opt-in by toolset.

uvx mcp-freshservice --list-toolsets                         # see what's available
uvx mcp-freshservice --toolsets default,changes,assets       # core set + changes + assets
uvx mcp-freshservice --toolsets all                          # everything
uvx mcp-freshservice --toolsets tickets,solutions --read-only

The same works with FRESHSERVICE_TOOLSETS=default,changes in the client's env. A list of plain names is exact (only those toolsets); add default to keep the core set.

Toolset

Default

Tools

Covers

tickets

yes

17

tickets, replies and notes (with attachments), conversations, child tickets, requested items

ticket_time_entries

yes

5

time logged on tickets

ticket_tasks

5

ticket tasks

ticket_approvals

9

service-request approval groups and approvals

requesters

yes

9

requesters, fields, reactivate, convert to agent

agents

yes

9

agents, fields, roles

groups

yes

13

agent groups, requester groups and membership

solutions

yes

18

knowledge-base categories, folders, articles, search

service_catalog

yes

5

browse/search items, place service requests

changes

9

change requests and planning fields

change_notes, change_tasks, change_time_entries

5 each

notes, tasks, time entries on changes

change_approvals

9

change approval groups, chains, approvals

problems, releases

8, 7

problem and release records

problem_*, release_* (notes, tasks, time_entries)

5 each

notes, tasks, time entries

assets

16

assets, asset types, canned responses

organisation

20

workspaces, departments, locations, vendors, products

Every tool is annotated read-only / destructive so clients can auto-approve safely.

Conventions

  • Single records come back as Freshservice returns them: {"ticket": {...}}.

  • Lists return one page plus pagination: {page, per_page, next_page, has_more}. per_page is at most 100.

  • Errors are real MCP tool errors (isError: true) carrying Freshservice's message and field errors, with hints for 401/403/404/429.

  • Filtering: see Query syntax.

  • Numeric codes: ticket status 2 Open, 3 Pending, 4 Resolved, 5 Closed; priority 1 Low … 4 Urgent; source 1 Email, 2 Portal, 3 Phone, 4 Chat … (see list_ticket_sources for the full list).

  • Attachments: send_ticket_reply, create_ticket_note, create_ticket and update_ticket_conversation accept local file paths (max 15 files / 40 MB), but only from folders listed in FRESHSERVICE_ATTACHMENT_DIRS. Until you set it, attachments are refused, so a prompt-injected path can't upload an arbitrary local file.

Example prompts: "Show ticket 12031 with its conversations and resolution notes", "How much time was logged on ticket 8?", "List open P1 incidents unassigned for a day", "Search the KB for printer setup".

Query syntax

filter_tickets, filter_changes, filter_requesters, filter_agents and the query / filter / search arguments of the list tools use Freshservice's query language. Freshservice requires the whole query to be enclosed in a pair of double quotes (without them the API answers 500), so the server adds them for you; you can pass status:3 or "status:3" and get the same request.

Rule

Example

Fields are snake_case and case-sensitive (custom fields by API name)

status:3

Numbers bare, strings and dates in single quotes

tag:'vip', planned_start_date:>'2025-07-14'

AND, OR and parentheses

(group_id:12 OR group_id:15) AND status:3

:> / :< are inclusive (>= and <=), confirmed on a live account

status:<5 means status 5 or lower

null finds empty values

agent_id:null

Starts-with (requesters and agents only)

~[first_name|last_name]:'ad'

Max 512 characters (checked locally); filter results are 30 per page

Changes: "status:3" awaiting approval, "approval_status:1" approved, "approval_status:1 AND status:<5" approved and not closed (status 6 is Closed, and :< includes its boundary, so <6 would include closed changes), "status:3 AND priority:1". approval_status is 0 Requested, 1 Approved, 2 Rejected, 3 Not requested. A change view and query cannot be combined.

Not every endpoint supports every field: departments and locations filter on name only; asset search takes one field (name, asset_tag, serial_number, ...); releases only have predefined filter_name values. The per-tool descriptions list the supported fields. Filtered requester/agent pages are capped at 40; changes to users can take a few minutes to be indexed.

Rate limits

Freshservice limits requests per minute. When it answers HTTP 429 the server waits for the Retry-After time (up to 20 seconds) and tries again, up to FRESHSERVICE_MAX_RETRIES times; transient 502/503/504 errors on reads are retried the same way. If the wait would be longer than 20 seconds, or retries run out, the tool reports the rate-limit error instead. Writes are only ever retried after a 429, because a request that was rate-limited was not processed.

Running remotely

MCP_TRANSPORT=streamable-http MCP_PORT=8000 uvx mcp-freshservice

The server is stateless over streamable HTTP and serves /mcp. It has no authentication of its own: run it behind a gateway/reverse proxy that authenticates callers, because everyone who can reach it acts with the configured API key.

Development

uv sync
uv run pytest        # offline, mocks the Freshservice API
uv run ruff check .

To check the server against a real Freshservice account (read-only by default; never prints your key):

uv run python scripts/live_check.py            # the core tools, read-only
uv run python scripts/live_check.py --sweep    # every read-only tool of every toolset

The sweep calls each read-only tool once, using real IDs it finds along the way. A wrong endpoint shows up as a failure; an empty list or a 403 (module not on your plan, or no permission) is a skip.

When you point an MCP client at a local checkout with uvx --from <folder> mcp-freshservice, uvx reuses a cached build and will not notice your code changes (--refresh does not help). Add --no-cache to the uvx arguments while developing, e.g. "args": ["--no-cache", "--from", "G:/path/to/mcp-freshservice", "mcp-freshservice"].

Tests call tools through FastMCP's real call_tool path against a mocked API, so output-schema problems (like the old get_ticket_by_id failure) are caught without credentials. Each tool module lives in src/mcp_freshservice/tools/; add tools with @ts.tool(title, kind) and they are registered, filtered and annotated automatically.

Releasing

  1. Bump version in pyproject.toml and add a ## <version> section to CHANGELOG.md.

  2. Merge to main, then create a GitHub release tagged v<version>.

  3. The publish workflow first checks that the tag, the package version and the changelog agree, then runs lint and the tests, and only then uploads to PyPI (after your approval on the pypi environment).

python scripts/check_release.py v<version> runs the first check locally. PyPI never accepts a version twice, so the check exists to fail before anything is uploaded.

License

MIT, see LICENSE.

Available Tools

76 tools
add_requester_to_groupAdd requester to groupB
Idempotent

Add a requester to a manual requester group.

NameRequiredDescriptionDefault
requester_idYesRequester ID
requester_group_idYesRequester group ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false, covering safety and repeat-call behavior. The description adds one genuinely useful behavioral constraint — the target must be a *manual* group — but says nothing about what happens on duplicate membership or against a dynamic group.

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 waste. It is not padded, though its brevity shades into under-specification rather than tightness.

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 and annotations cover safety, so return values need not be explained. Still, for a membership mutation the description omits error conditions (dynamic group, unknown requester) that an agent would want before calling.

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 100%, so both parameters are documented (albeit thinly: 'Requester ID', 'Requester group ID'). The description adds no format, sourcing, or lookup guidance beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (add) and resource (requester to a requester group), and the qualifier 'manual' narrows scope meaningfully. It implicitly contrasts with remove_requester_from_group, but never names siblings or clarifies how it relates to dynamic groups.

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, no mention of the sibling remove_requester_from_group or list_requester_group_members as the counterpart operations. The agent must infer invocation conditions entirely.

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

convert_requester_to_agentConvert requester to agentC
Idempotent

Convert a requester into an occasional agent.

NameRequiredDescriptionDefault
requester_idYesRequester ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=false, idempotentHint=true and readOnlyHint=false, so safety is partly covered. However the description adds nothing: it does not say what happens to the requester record after conversion, whether ticket history or group memberships carry over, or what permissions are required for a mutation flagged openWorldHint=true.

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

Conciseness3/5

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

It is a single efficient sentence with nothing wasted, but the brevity is under-specification rather than discipline: the most load-bearing term, 'occasional agent', is never explained.

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 a mutating conversion tool operating on a requester the description leaves the core semantic question unanswered: what an occasional agent is and what state change the requester undergoes.

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% with a single required requester_id, so the baseline is 3. The description contributes no additional meaning about the parameter or about how an 'occasional' agent differs from a regular one.

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 'Convert' and the direction 'requester into ... agent' are clear, but 'occasional agent' is undefined terminology and the description never distinguishes this from sibling tools like create_agent or update_agent, which could plausibly achieve similar-looking outcomes.

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 about when to use this rather than create_agent or reactivate_requester, and no prerequisites or exclusions are mentioned. The agent must infer the selection criteria entirely 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.

create_agentCreate agentB

Create an agent. Assign at least one role so the agent can sign in.

NameRequiredDescriptionDefault
emailYesEmail address
rolesNoRole assignments, e.g. [{'role_id': 3, 'assignment_scope': 'entire_helpdesk'}]
languageNo
job_titleNo
last_nameNoLast name
member_ofNoGroup IDs the agent is a member of
time_zoneNo
first_nameYesFirst name
occasionalNotrue for an occasional (day-pass) agent
location_idNo
observer_ofNoGroup IDs the agent observes
department_idsNo
work_phone_numberNo
mobile_phone_numberNo
reporting_manager_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already cover the safety profile (non-read-only, non-idempotent, non-destructive, open-world), so those need not be repeated. The description adds genuinely new behavioral context by stating the sign-in dependency on role assignment, which the schema does not encode. It remains silent on other meaningful behaviors for a write tool: duplicate-email handling, whether an invitation is sent, and 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 short sentences with no filler, and the core action is front-loaded. For a 15-parameter mutation tool it is arguably over-terse rather than bloated, which costs a point on structure.

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

Completeness2/5

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

With 15 parameters, 47% schema coverage, and no annotation detail beyond hints, the description does not do enough to make the tool safe and correct to call. An output schema exists, so return values are covered, but error conditions, invitation behavior, and the semantics of most optional fields are all absent.

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 47% across 15 parameters, so the description would ideally carry more weight. It does contribute one important nuance — that roles is effectively required despite the schema marking only first_name and email as required — but says nothing about the remaining undocumented fields (time_zone, reporting_manager_id, department_ids, observer_of, occasional).

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 an agent"), which is unambiguous on its own. However, it does nothing to distinguish itself from siblings in an overlapping cluster such as create_requester and convert_requester_to_agent, so an agent must already know which one it wants.

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 second sentence gives a real invocation prerequisite (at least one role, tied to sign-in), which is useful. It offers no when-to-use versus when-not-to-use guidance and never names the close alternatives (create_requester, convert_requester_to_agent), leaving the tool-selection decision implicit.

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

create_child_ticketCreate child ticketC

Create a child ticket under an existing parent ticket.

NameRequiredDescriptionDefault
emailNoRequester email
sourceNo1 Email, 2 Portal, 3 Phone, 4 Chat, 5 Feedback widget, 6 Yammer, 7 AWS Cloudwatch, 8 Pagerduty, 9 Walkup, 10 Slack, 11 Chatbot, 12 Workplace, 13 Employee Onboarding, 14 Alerts, 15 MS Teams, 18 Employee Offboarding (custom sources: see list_ticket_sources)
statusNo2 Open, 3 Pending, 4 Resolved, 5 Closed
subjectYesChild ticket subject
group_idNoAgent group
priorityNo1 Low, 2 Medium, 3 High, 4 Urgent
ticket_idYesParent ticket ID
descriptionYesChild ticket body (HTML allowed)
requester_idNoRequester user ID
responder_idNoAssigned agent
custom_fieldsNoCustom field values keyed by the field's API name (see *_fields tools)

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so safety and world-interaction are covered. The description adds nothing beyond that — no mention of the parent link being required, permission requirements, or what happens if the parent is closed or missing.

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 with the scoping condition front-loaded. Efficiently written; the issue is under-specification rather than bloat.

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 every parameter is documented, which lightens the burden, but for an 11-parameter mutation tool the description says nothing about inheritance from the parent, required permissions, or post-creation effects. Adequate but with clear 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 100%, including enum-like value explanations for source, status, priority, so the baseline is 3. The description adds no meaning beyond the schema — for example it does not clarify when to use email vs requester_id, or how group_id/responder_id interact with the parent ticket's assignment.

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 (child ticket) and adds the key qualifier 'under an existing parent ticket', which distinguishes it from the sibling create_ticket. It stops short of explaining what a child ticket is in this system, but the core action is unambiguous.

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

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 instead of create_ticket, no prerequisites about the parent ticket's existence/state, and no note on whether child tickets inherit parent fields. The agent must infer the selection criteria 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.

create_groupCreate agent groupC

Create an agent group.

NameRequiredDescriptionDefault
nameYesGroup name
membersNoAlias of agent_ids on some accounts
agent_idsNoMember agent IDs
group_typeNoe.g. 'support_agent_group' or 'oncall_agents'
descriptionNoDescription
escalate_toNoAgent ID to escalate unassigned tickets to
observer_idsNoObserver agent IDs
unassigned_forNoEscalate after this idle time
business_hours_idNoBusiness hours ID
auto_ticket_assignNoAutomatically assign new tickets

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/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 structurally. The description adds nothing about side effects (e.g. how members/observers are attached, what happens on duplicate names, whether escalation settings require business hours) and does not contradict the annotations.

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

Conciseness3/5

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

One short sentence with zero waste, but it is under-specified rather than genuinely concise. Nothing is front-loaded beyond the bare verb and resource.

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

Completeness2/5

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

For a 10-parameter creation tool with openWorldHint=true and a rich set of grouping/escalation options, a one-line description is far too thin. It leaves the agent to infer intent, member provisioning, and aliasing behavior entirely from the 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?

Schema description coverage is 100% with 10 well-annotated parameters, so the schema carries parameter meaning entirely. The description adds no clarification, for example about the ambiguity between 'members' and 'agent_ids' being aliases, which is exactly the kind of thing a description could have resolved.

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 is a verbatim restatement of the tool title 'Create agent group' and adds no scope detail. It does not distinguish this from the closely-named sibling create_requester_group, so an agent scanning names alone has no basis to pick correctly.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no mention of the create_requester_group alternative, and no prerequisites such as whether agents referenced by agent_ids must already exist. The single sentence offers nothing beyond the name.

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

create_requesterCreate requesterB

Create a requester. One of primary_email, work_phone_number or mobile_phone_number is required.

NameRequiredDescriptionDefault
addressNo
languageNoLanguage code, e.g. 'en'
job_titleNoJob title
last_nameNoLast name
time_zoneNoe.g. 'Sydney'
first_nameYesFirst name
location_idNoLocation ID
time_formatNo'12h' or '24h'
custom_fieldsNoCustom field values keyed by the field's API name (see *_fields tools)
primary_emailNoPrimary email (or a phone number is required)
department_idsNoDepartment IDs
secondary_emailsNoAdditional emails
work_phone_numberNoWork phone
mobile_phone_numberNoMobile phone
reporting_manager_idNoManager's user ID
background_informationNo
can_see_all_tickets_from_associated_departmentsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare this is a non-readOnly, non-idempotent, open-world, non-destructive write, so safety is covered. The description adds the cross-field contact requirement, which is real behavioral context the annotations cannot express. It says nothing about duplicate handling, whether the requester is auto-added to groups, 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.

Conciseness5/5

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

Two short sentences, action stated first, constraint second. Nothing is padded or repeated from the 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?

Given 17 optional parameters and a write operation, the description covers the one hard rule an agent could trip over. Output schema exists, so return values need not be explained. However, it omits anything about duplicate detection, group membership side effects, or the relationship between first_name requiredness and the contact rule.

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 82%, so the baseline would be 3. The description earns an extra point by stating the OR-constraint across primary_email, work_phone_number and mobile_phone_number — a cross-parameter rule JSON Schema cannot express here (only first_name is in 'required'). This is genuinely additive for a 17-parameter 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?

States a specific verb and resource ('Create a requester'), which is unambiguous against siblings like create_agent or create_ticket. It stops short of explicitly distinguishing when a person should become a requester rather than an agent, but the resource itself 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?

No guidance on when to use this versus create_agent, add_requester_to_group, or convert_requester_to_agent — all present in the sibling list. The only conditional content is a parameter constraint, not usage context.

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

create_requester_groupCreate requester groupC

Create a requester group.

NameRequiredDescriptionDefault
nameYesGroup name
typeNoMembership type (default manual)
conditionsNoRules for rule_based groups, e.g. [{'name': 'department_id', 'operator': 'is', 'value': 5}]
descriptionNoDescription

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/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 safety is covered. The description adds nothing beyond that: it does not say whether duplicates are rejected, what the manual vs rule_based membership implications are, or what is returned on creation.

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 waste, but its brevity is under-specification rather than discipline. It earns its place only as a label, not as guidance.

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

Completeness2/5

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

An output schema exists so return values need no explanation, but this is a creation tool with a meaningful manual/rule_based branching behavior (conditions only relevant for rule_based) that the description never surfaces. For a 4-parameter create operation, the description is too thin to be 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 description coverage is 100%, including the manual/rule_based enum and an example conditions payload, so the schema carries parameter meaning. The description adds no parameter context of its own; baseline 3 applies when the schema does all the work.

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 and title verbatim ('Create a requester group') with no added detail. It does convey a write verb and the resource, but it gives an agent nothing to distinguish it from siblings like create_group, create_requester, or update_requester_group.

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 alternatives (create_group vs create_requester_group), and no prerequisites such as required permissions. The agent must infer everything from the name.

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

create_service_requestCreate service requestC

Place a service request for a catalog item.

NameRequiredDescriptionDefault
emailYesEmail of the requester placing the request
quantityNoQuantity
display_idYesService item display_id
child_itemsNoChild items: [{'display_id': 12, 'quantity': 1}]
custom_fieldsNoCustom field values keyed by the field's API name (see *_fields tools)
requested_forNoEmail of the user the request is for

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it doesn't say what the call actually produces (presumably a ticket/request record), whether retries create duplicates, or how custom_fields and child_items affect behavior.

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

Conciseness4/5

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

A single front-loaded sentence with zero waste. It is efficient, though the brevity borders on under-specification for a 6-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?

This is a non-idempotent, open-world write operation, and the description gives no indication of the resulting object or the effect of the optional bundling and custom-field parameters. The output schema and full param coverage help, but a one-line description leaves an agent without the operational context needed to invoke this confidently.

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%, so every parameter is already documented in the schema and the baseline of 3 applies. The description only echoes 'catalog item', which loosely maps to display_id, and adds no semantics for quantity, requested_for, child_items, or custom_fields.

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 ('place a service request for a catalog item'), which is more informative than the title alone. It does not, however, distinguish this tool from near-siblings like create_ticket or create_child_ticket, so an agent must infer the boundary itself.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this versus create_ticket, no stated prerequisites (e.g., that display_id must come from list_service_items/search_service_items), and no exclusions. Usage is only implied by the word 'catalog item'.

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

create_solution_articleCreate solution articleB

Create a knowledge-base article (a draft unless status is 2).

NameRequiredDescriptionDefault
tagsNo
titleYesArticle title
statusNo1 Draft, 2 Published
keywordsNo
folder_idYesSolution folder ID
descriptionYesArticle body (HTML)
review_dateNoYYYY-MM-DD
article_typeNo1 Permanent, 2 Workaround

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/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 known. The description adds real value by stating the default outcome is a draft (not live content), but omits what happens on duplicate titles, whether folder_id must reference an existing solution folder, and any content-format 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 front-loaded sentence with no filler; the most decision-relevant fact (draft by default) comes first. It is efficient but verges on under-specified for an 8-parameter creation 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?

For a create tool with 8 parameters, 3 required, and dependencies such as an existing folder_id, one sentence leaves significant gaps. The presence of an output schema removes the need to explain return values, but the description still doesn't cover required-field expectations or the distinction between draft and published flows.

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 75% with status, description, folder_id and review_date already documented in the schema. The description only echoes the status semantics ('draft unless status is 2') and adds nothing about article_type, tags, keywords, or the HTML body requirement.

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 and resource (create a knowledge-base article) and clarifies the important nuance that the result is a draft unless status is 2. It is distinguishable from create_solution_folder/create_solution_category by resource, though it never explicitly contrasts with publish_solution_article.

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

Usage Guidelines3/5

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

The parenthetical implies the normal path is draft creation and that publishing is opt-in via status=2, which is implicit usage guidance. There is no explicit when-to-use/when-not guidance, no mention of using publish_solution_article for existing drafts, and no prerequisite noted for folder_id.

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

create_solution_categoryCreate solution categoryC

Create a knowledge-base category.

NameRequiredDescriptionDefault
nameYesCategory name
descriptionNo
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the agent knows this is a non-idempotent write. The description adds nothing beyond that: no mention of required permissions, whether the name must be unique, whether categories can be nested, or whether a duplicate call creates a second category (relevant 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?

A single short, front-loaded sentence with zero filler. It is efficient, though the brevity reflects under-specification rather than disciplined density.

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 in an open-world, non-idempotent context, the description omits uniqueness/validation rules, naming constraints, and organizational semantics of a knowledge-base category. An output schema exists so return values need not be explained, but the front-end behavior of the call is left bare.

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 67%: 'name' and 'workspace_id' carry their own descriptions, including the workspace default behavior. The 'description' parameter has no schema description and the tool description does not compensate, so one parameter's semantics remain 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 ('Create a knowledge-base category'), which is clear enough to distinguish from sibling reads/writes like update_solution_category or delete_solution_category. It does not explicitly differentiate category creation from the adjacent create_solution_folder or create_solution_article, leaving the taxonomy implicit.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this versus creating a folder or article, no prerequisites, and no mention of what a category is used for in organizing articles. The agent must infer the entire usage context 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.

create_solution_folderCreate solution folderC

Create a knowledge-base folder.

NameRequiredDescriptionDefault
nameYesFolder name
group_idsNoRequired when visibility is 5
visibilityNo1 All users, 2 Logged-in users, 3 Agents, 4 Selected departments, 5 Selected agent groups, 6 Selected requester groups, 7 Bots
category_idYesSolution category ID
descriptionNo
department_idsNoRequired when visibility is 4
parent_folder_idNoCreate as a sub-folder of this folder
requester_group_idsNoRequired when visibility is 6

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare that this is a non-read-only, non-idempotent, open-world creation operation. The description adds no behavioral context beyond the basic action, such as permission requirements, effects of visibility settings, or whether creating a folder affects existing articles.

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 a single front-loaded sentence with no wasted words. It is appropriately concise, though its brevity contributes to gaps in guidance and behavioral context.

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, conditional visibility rules, and parent-folder nesting, the one-sentence description is insufficient. Although an output schema exists and the input schema is well documented, the description should do more to explain the tool's role and operational context.

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 high at 88%, so the schema already documents most parameters, including conditional requirements for group_ids, department_ids, and requester_group_ids. The description adds no additional meaning beyond what the schema provides, which matches the baseline of 3 for high-coverage schemas.

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: creating a knowledge-base folder. It is clear enough to distinguish from siblings like create_solution_article or create_solution_category, but it does not explicitly differentiate itself or clarify the 'solution' vs 'knowledge-base' terminology.

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 create_solution_category or create_solution_article, nor any mention of prerequisites, parent-folder nesting, or visibility requirements. The agent is left to infer usage entirely from the name and schema.

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

create_ticketCreate ticketA

Create an incident or service-request ticket. Some ticket forms make fields such as group_id, responder_id, category or custom fields mandatory; check get_ticket_fields when the API reports missing_field.

NameRequiredDescriptionDefault
nameNoRequester name, used with phone
tagsNoTags
typeNoDefault Incident
emailNoRequester email (one of email/requester_id/phone needed)
phoneNoRequester phone; creates the contact if new (needs name)
assetsNoAssets to link, e.g. [{'display_id': 14}]
due_byNoResolution due, ISO-8601
impactNo1 Low, 2 Medium, 3 High
sourceNo1 Email, 2 Portal, 3 Phone, 4 Chat, 5 Feedback widget, 6 Yammer, 7 AWS Cloudwatch, 8 Pagerduty, 9 Walkup, 10 Slack, 11 Chatbot, 12 Workplace, 13 Employee Onboarding, 14 Alerts, 15 MS Teams, 18 Employee Offboarding (custom sources: see list_ticket_sources)
statusNo2 Open, 3 Pending, 4 Resolved, 5 Closed
subjectYesTicket subject
urgencyNo1 Low, 2 Medium, 3 High
categoryNoCategory
group_idNoAgent group to assign
priorityNo1 Low, 2 Medium, 3 High, 4 Urgent
cc_emailsNoEmail addresses
fr_due_byNoFirst response due, ISO-8601
attachmentsNoLocal file paths to attach (max 15 files / 40 MB total). Only files inside the folders in FRESHSERVICE_ATTACHMENT_DIRS are allowed; attachments are refused until that is set
descriptionYesTicket body (HTML allowed)
requester_idNoRequester user ID
responder_idNoAgent to assign
sub_categoryNoSub-category
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.
custom_fieldsNoCustom field values keyed by the field's API name (see *_fields tools)
department_idNoDepartment ID
item_categoryNoItem category

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare the write, non-idempotent, non-destructive, open-world profile, so the baseline is lower. The description adds real value by disclosing that some ticket forms impose conditional mandatory fields and how to recover from missing_field. It does not disclose side effects such as requester notifications or what happens to defaults like source/status/priority.

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, no waste, with the core purpose front-loaded and the conditional requirement caveat following. Every clause conveys actionable 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 and the 26-parameter schema is fully documented, so the description need not explain returns or field formats. The conditional-required and error-recovery notes cover the main ambiguity for this tool; missing is any mention of downstream effects (notifications, SLA timers) on ticket creation.

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 100% schema coverage the baseline is 3, and the schema already documents enum-like value lists (source, status, impact) and attachment restrictions. The description adds meaning the schema cannot: that group_id, responder_id, category and custom fields may become mandatory depending on the form in use, which changes how an agent should populate them.

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 an incident or service-request ticket'), which is more precise than the title 'Create ticket'. It does not, however, distinguish itself from nearby siblings like create_child_ticket or create_service_request, so an agent must infer the boundary.

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 explicit routing rule: consult get_ticket_fields when the API reports missing_field, which is genuinely useful error-recovery guidance. But there is no guidance on when to choose this over create_child_ticket or create_service_request, which are the closest alternatives.

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

create_ticket_noteAdd ticket noteB

Add a note to a ticket (private by default).

NameRequiredDescriptionDefault
bodyYesNote content (HTML allowed)
privateNotrue (default): internal note for agents; false: visible to the requester
user_idNoUser ID to create the note as
incomingNoMark as coming from outside (requester side)
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)
attachmentsNoLocal file paths to attach (max 15 files / 40 MB total). Only files inside the folders in FRESHSERVICE_ATTACHMENT_DIRS are allowed; attachments are refused until that is set
notify_emailsNoAgent emails to notify

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/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, covering the safety profile. The description adds only the private-default behavior, which is already documented in the schema, and says nothing about notification side effects, deduplication, or attachment constraints beyond what structured fields provide.

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 default behavior is stated up front. It is efficient, though terse for a 7-parameter mutation 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?

With an output schema, full schema annotation, and safety annotations present, the description doesn't need to explain returns. However, for a mutation that can notify requesters and attach files, it omits key operational context such as note-versus-reply routing and notification behavior.

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 each parameter is well documented (body HTML, private semantics, attachment limits, notify_emails). The description adds no parameter-level information beyond the schema, so baseline 3 applies.

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

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 note to a ticket') plus a meaningful default ('private by default'), so the action is unambiguous. It does not distinguish itself from siblings like send_ticket_reply or update_ticket_conversation, which an agent could easily confuse it with.

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

Usage Guidelines3/5

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

The 'private by default' parenthetical implies an internal-only note, which hints at usage, but there is no explicit when-to-use or when-to-prefer-send_ticket_reply guidance. 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.

create_ticket_time_entryLog ticket timeC

Log time against a ticket.

NameRequiredDescriptionDefault
noteNoWhat was done
task_idNoAssociate with a task
agent_idYesAgent who did the work
billableNoBillable (default true)
ticket_idYesTicket ID
time_spentNoDuration as 'hh:mm', e.g. '01:30'
executed_atNoWhen the work happened, ISO-8601
custom_fieldsNoCustom field values keyed by the field's API name (see *_fields tools)
timer_runningNoStart a running timer

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered, but the description adds nothing beyond the title. It does not warn that repeated calls create duplicate entries (non-idempotent) or that setting timer_running starts a live timer, both of which materially change how an agent should call it.

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 efficient, though the terseness edges toward under-specification rather than disciplined 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?

With a 9-parameter mutation, full schema coverage, an output schema, and annotations, the structured fields cover most of what an agent needs. What is missing is behavioral context the schema cannot express: duplicate-creation risk, what starting a running timer does, and how this differs from update_ticket_time_entry.

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%, so all nine parameters including time_spent's hh:mm pattern, billable's default, and custom_fields keying are documented in the schema itself. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the work.

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 ('Log time against a ticket'), which is enough to know this creates a time entry rather than reading or editing one. It does not distinguish itself from siblings like update_ticket_time_entry or list_ticket_time_entries, leaving the create-vs-update boundary implicit.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and never mentions the sibling update_ticket_time_entry or timer-related alternatives. The agent must infer from the name alone that this is the creation path.

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

deactivate_agentDeactivate agentA
DestructiveIdempotent

Deactivate an agent (they become a requester; reversible with reactivate_agent).

NameRequiredDescriptionDefault
agent_idYesAgent ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the crucial qualifier that the destructive flag is not deletion — the record survives as a requester and can be restored via reactivate_agent. That materially changes how an agent should weigh the call. It omits side effects on existing tickets/assignments.

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

Conciseness5/5

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

One sentence, zero waste, with the state transition and reversibility front-loaded ahead of any procedural detail. Nothing to trim.

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 is sufficient to call the tool correctly, though it leaves open the consequences for the agent's existing tickets and group memberships.

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 a single parameter (agent_id) with 100% schema coverage, so the schema already carries its meaning. The description adds no format, source, or lookup guidance (e.g., obtainable from get_all_agents / filter_agents), so baseline 3 applies.

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+resource ('Deactivate an agent') and immediately clarifies the resulting state ('they become a requester'), which distinguishes it from deactivate_requester in the sibling list. An agent can pick the right tool without opening any schema.

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?

Names the reversal path ('reversible with reactivate_agent'), giving clear context for the counterpart operation, and the 'become a requester' note hints at the alternative deactivate_requester. It stops short of explicit when-to-use/when-not-exclusions or prerequisites (e.g., whether tickets owned by the agent are reassigned).

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

deactivate_requesterDeactivate requesterA
DestructiveIdempotent

Deactivate a requester (reversible with reactivate_requester).

NameRequiredDescriptionDefault
requester_idYesRequester ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is largely given. The description adds the genuinely useful nuance that the action is reversible via reactivate_requester, which counterbalances the alarming destructive flag. It stops short of describing side effects (e.g. effect on assigned tickets), so not a 5.

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

Conciseness5/5

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

A single short sentence with zero filler, leading with the action and immediately qualifying reversibility. Nothing could be removed 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?

An output schema exists so return values need no explanation, and the one-parameter surface is simple. The description covers effect and reversibility, but omits what deactivation does to related entities (open tickets, group memberships) — a minor gap given the destructive/openWorld hints.

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 a single required parameter with 100% schema description coverage, so the schema already carries the semantics. The description adds no information about the requester_id beyond what the schema provides; baseline 3 applies.

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 ('Deactivate') and resource ('a requester'), which cleanly separates it from sibling deactivate_agent and from reactivate_requester. An agent can identify the operation and its target 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 parenthetical names reactivate_requester as the undo path, which gives an agent a recovery route, but there is no explicit guidance on when to deactivate versus update_requester or other requester-mutating siblings. Usage is implied rather than stated.

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

delete_groupDelete agent groupC
DestructiveIdempotent

Delete an agent group.

NameRequiredDescriptionDefault
group_idYesAgent group ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not mention irreversibility, cascade effects on group members, or required permissions for a destructive operation.

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

Conciseness3/5

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

It is a single short, front-loaded sentence with no filler. However, its brevity stems from under-specification rather than efficient communication.

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 destructive, open-world mutation with an output schema, the description is insufficient. It says nothing about consequences, whether the deleted group's members or associated data are affected, or what success looks like, leaving the agent to rely entirely on annotations.

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% with a single required integer parameter 'group_id' documented as 'Agent group ID'. The description adds no meaning beyond the schema, so the baseline 3 applies.

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 'Delete an agent group' is a verbatim restatement of the tool name and title, adding no distinguishing detail. It does not differentiate from sibling destructive tools such as delete_requester_group.

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?

No guidance whatsoever on when to use this instead of update_group, delete_requester_group, or list/get alternatives. The agent is left to infer everything from the name.

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

delete_requester_groupDelete requester groupC
DestructiveIdempotent

Delete a requester group.

NameRequiredDescriptionDefault
requester_group_idYesRequester group ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is fully carried by structured data. The description adds nothing beyond that — it does not say whether members are removed, whether the action is reversible, or what happens to requesters still assigned to the group. No contradiction, but zero added value.

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

Conciseness3/5

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

One short sentence with no filler, so nothing is wasted — but the terseness reflects under-specification rather than disciplined editing. There is no front-loaded context beyond the bare 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?

This is an irreversible destructive operation on a group resource, and the description does not address cascade effects on group members, permission requirements, or failure modes. The presence of an output schema excuses return-value explanation, but not the missing operational context.

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 100% for the single requester_group_id parameter, so the baseline is 3 even though the description adds no parameter meaning. It does not clarify where the ID comes from (e.g. get_all_requester_groups) or what happens with an invalid ID.

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 "Delete a requester group" is a verbatim restatement of the tool name and title, adding no distinguishing detail. It does convey the resource being removed, but offers nothing to separate it from sibling delete operations such as delete_group or delete_requester_group-adjacent 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?

There is no when-to-use guidance, no mention of alternatives (e.g. deactivate_requester, remove_requester_from_group), and no prerequisites. An agent must infer entirely from the name that this is the destructive counterpart to update_requester_group.

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

delete_solution_articleDelete solution articleA
DestructiveIdempotent

Move an article to trash.

NameRequiredDescriptionDefault
article_idYesSolution article ID

Output Schema

NameRequiredDescription

No output parameters

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 idempotentHint=true, but the description adds the important nuance that this is a soft delete ('move to trash'), which tempers the destructive framing and implies recoverability. It still doesn't say how long trashed articles persist or whether a restore path exists, keeping 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?

A single front-loaded sentence with zero filler; the most important semantic detail (trash, not permanent removal) is the only thing it says.

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

Completeness3/5

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

With a rich annotation set, 100% schema coverage, and an output schema, most of the burden is already carried by structured fields. However, for a destructive operation the description leaves open what trashed means operationally and what the output represents, 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.

Parameters3/5

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

Schema coverage is 100% and the single parameter carries its own description ('Solution article ID'), so the schema does the work here. The description adds nothing about identifier format or source beyond what the schema already states.

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 ('Move an article to trash'), which is precise enough to distinguish this from a hard-delete sibling and from update_solution_article. It does not name any sibling or note the tool's place in the article lifecycle, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus update_solution_article, publish_solution_article, or delete_solution_category/folder, and no prerequisites or exclusions are given. The agent must infer usage from the tool name alone.

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

delete_solution_categoryDelete solution categoryA
DestructiveIdempotent

Move a category (and its folders and articles) to trash.

NameRequiredDescriptionDefault
category_idYesSolution category ID

Output Schema

NameRequiredDescription

No output parameters

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 idempotentHint=true, but the description adds useful behavior: the category is soft-deleted to trash and its folders/articles move with it. It does not cover restore paths 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.

Conciseness5/5

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

One short sentence with zero waste, and the key cascade/trash behavior is front-loaded.

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 delete tool with an output schema and rich annotations, the description covers the essential behavior (trash + cascade). Minor gaps around restore and permissions keep it from being 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 description coverage is 100%, and the single required parameter is documented as "Solution category ID"; the description adds no extra parameter meaning, so the baseline is appropriate.

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 gives a specific action ("Move ... to trash"), the resource (category), and the scope (its folders and articles), which distinguishes it from deleting an individual folder or article.

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 does not state when to use this tool versus get/update/delete siblings, nor does it mention prerequisites or consequences beyond the trash/cascade note.

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

delete_solution_folderDelete solution folderA
DestructiveIdempotent

Move a folder (and its articles) to trash.

NameRequiredDescriptionDefault
folder_idYesSolution folder ID

Output Schema

NameRequiredDescription

No output parameters

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 idempotentHint=true, so the description's real contribution is disclosing that the operation is a soft delete ('to trash') and that contained articles are affected – both beyond the annotations. It stops short of saying whether subfolders cascade or whether a restore path exists.

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 short sentence, front-loaded with the verb and the key side effect. 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 and annotations cover the safety profile, so the remaining needs are small. However, for a destructive cascading operation, the description leaves open whether subfolders are also trashed, what permissions are required, and whether recovery is possible.

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 100% with one parameter, so the schema already fully documents folder_id. The description adds no additional meaning about the identifier's format or origin, which is acceptable given the schema carries the load.

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 ('Move ... to trash') and resource ('folder'), and adds useful scope information: its articles are affected too. It does not explicitly differentiate itself from sibling deletion tools like delete_solution_article or delete_solution_category, but the resource is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives such as delete_solution_article, nor any prerequisites or warnings before calling it. The only hint is the word 'trash', leaving the agent to infer the lifecycle 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.

delete_ticketDelete ticketA
DestructiveIdempotent

Move a ticket to trash. It can be brought back with restore_ticket.

NameRequiredDescriptionDefault
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=true, but the description adds crucial context beyond them: this is a trash operation, not permanent deletion, and can be undone with restore_ticket. That materially changes how an agent should reason about safety.

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 action and immediately followed by the recovery path. 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?

For a one-parameter destructive tool with full schema coverage, annotations, and an output schema, the description provides the essential behavioral nuance: it is reversible. It could mention permission requirements or whether the trash is user-visible, but the core information is 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 description coverage is 100%, and the single ticket_id parameter is fully documented in the schema with the #INC-123 / #SR-123 format. The description adds no additional parameter semantics, so baseline 3 is appropriate.

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 ('Move a ticket to trash') and immediately clarifies reversibility via restore_ticket, distinguishing it from permanent deletion and from the sibling restore tool.

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 clearly indicates this is the soft-delete path and names restore_ticket as the recovery alternative, giving an agent a clear usage context. It does not explicitly state when-not to use it or any prerequisites, so it falls short of a 5.

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

delete_ticket_conversationDelete ticket conversationB
DestructiveIdempotent

Delete a note or reply from a ticket.

NameRequiredDescriptionDefault
conversation_idYesConversation (reply/note) ID

Output Schema

NameRequiredDescription

No output parameters

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, idempotentHint=true, and openWorldHint=true, so the safety profile is carried structurally. The description adds that the deleted objects are notes and replies specifically, but says nothing about whether deletion is permanent, what permissions are needed, or side effects on the parent ticket.

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

Conciseness4/5

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

One short, front-loaded sentence with no wasted clauses. It is arguably too terse for a destructive operation, but on the conciseness dimension itself there is nothing to trim.

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 full annotations mean the description need not explain return values or safety flags, and for a one-parameter delete this is close to sufficient. The remaining gap is behavioral: an agent about to destroy a customer-visible reply/note would benefit from knowing whether the action is recoverable and who can perform it.

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 100% and the single conversation_id field is documented as 'Conversation (reply/note) ID'; the description repeats the same note/reply concept without adding format, lookup, or sourcing guidance. Baseline 3 applies when the schema fully documents the parameter.

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

Purpose4/5

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

Specific verb (Delete) and resource (a note or reply, i.e. a ticket conversation), and it clarifies that the scope is a conversation rather than the whole ticket, which separates it from delete_ticket. It does not explicitly distinguish itself from update_ticket_conversation, but the destructive verb makes the distinction obvious.

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 indication of when to use this versus update_ticket_conversation or how to recover content afterwards (restore_ticket exists for tickets, but no equivalent is named here). The agent must infer usage entirely from the verb.

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

delete_ticket_time_entryDelete ticket time entryC
DestructiveIdempotent

Delete a time entry on a ticket.

NameRequiredDescriptionDefault
ticket_idYesTicket ID
time_entry_idYesTime entry ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is known. The description adds no behavioral context of its own — nothing about irreversibility, what happens to the parent ticket's totals, or re-deletion behavior — so it contributes nothing beyond structured data.

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

Conciseness3/5

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

A single short sentence that is front-loaded and waste-free, but this is under-specification rather than true conciseness. Nothing in the sentence earns more value than the tool name already conveys.

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

Completeness3/5

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

With an output schema present, rich annotations, and 100% parameter coverage, the structural gaps are covered elsewhere, so the description need not explain return values. However, for a destructive operation, it says nothing about irreversibility or failure conditions, leaving a meaningful behavioral gap.

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%, with both ticket_id and time_entry_id documented as integers in the schema, so the baseline of 3 applies. The description adds no meaning beyond the schema, such as the relationship between the two IDs.

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

Purpose3/5

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

The description states a specific verb and resource (delete a time entry on a ticket), which is clear but essentially restates the tool name and title without expanding on scope. It makes no attempt to distinguish this from siblings like update_ticket_time_entry or view_ticket_time_entry beyond the word 'delete'.

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 about when to use this tool versus the sibling time-entry tools (list, view, create, update), nor any stated preconditions such as required permissions or whether the entry must belong to the given ticket. The agent must infer all usage context.

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

filter_agentsFilter agentsA
Read-onlyIdempotent

Search agents (30 per page, newest first; results cannot be sorted).

Fields: first_name, last_name, name, job_title, email, work_phone_number, mobile_phone_number, department_id, reporting_manager_id, time_zone, language, location_id, created_at, updated_at, external_id and custom fields. The ~ operator does "starts with" on first_name, last_name, name, email, mobile_phone_number and work_phone_number. Changes can take a few minutes to be indexed.

NameRequiredDescriptionDefault
pageNoPage (30 results per page, max 40 pages)
queryYesFreshservice query, e.g. "first_name:'Ada'", "department_id:5 AND job_title:'Lead'", or a prefix search "~[first_name|last_name]:'ad'". Max 512 characters; outer double quotes are added for you.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive profile, so the description correctly spends its words elsewhere. It adds non-obvious behavior: fixed 30-per-page sizing, newest-first ordering with no sort option, and an indexing lag ("changes can take a few minutes to be indexed") that an agent must account for after writes.

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?

Front-loaded with the paging/ordering constraint in the first clause, then a compact field list and operator rule. No filler, and the fresh-indexing caveat is one short sentence that justifies its length.

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?

For a two-parameter read tool with an output schema and full annotation coverage, everything an agent needs is present: result shape assumptions (30/page, newest first, unsortable), queryable fields, operator behavior, and staleness expectations.

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 100%, so baseline is 3, and the description earns an extra point by enumerating the queryable fields and explaining that `~` performs prefix matching on only a specific subset of them. That constraint is not derivable from the schema's single example.

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 ("Search agents") and immediately scopes it with paging and ordering. It never names or contrasts with the obvious siblings get_all_agents / get_agent, so an agent must infer that this is the query-driven variant rather than the list/retrieve one.

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: the presence of a `query` parameter and the field/operator documentation suggest this is the tool for filtered agent lookups. There is no explicit statement of when to prefer this over get_all_agents, get_agent, or the sibling filter_requesters, and no exclusions.

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

filter_requestersFilter requestersA
Read-onlyIdempotent

Search requesters (30 per page, newest first; results cannot be sorted).

Fields: first_name, last_name, name, job_title, primary_email, work_phone_number, mobile_phone_number, department_id, reporting_manager_id, time_zone, language, location_id, created_at, updated_at, external_id and custom fields. The ~ operator does "starts with" on first_name, last_name, name, primary_email, mobile_phone_number and work_phone_number. Changes can take a few minutes to be indexed.

NameRequiredDescriptionDefault
pageNoPage (30 results per page, max 40 pages)
queryYesFreshservice query, e.g. "first_name:'Ada' AND job_title:'Engineer'", "department_id:5", "created_at:>'2025-01-01'", or a prefix search "~[first_name|last_name]:'ad'" (starts-with on one or more attributes). Max 512 characters; outer double quotes are added for you.
include_agentsNoAlso match agents (needs Manage Agents permission)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the description is free to add operational context — and it does: 30 results per page, newest-first, no sorting possible, and an index-lag warning that changes may take minutes to appear. Those are exactly the traits an agent cannot get from the annotation block or schema.

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

Conciseness4/5

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

The most decision-relevant facts (result cap, ordering, immutability of sort) are front-loaded in the first clause. The field enumeration is dense but functional rather than decorative; only the line-wrapping makes it feel heavier than it is.

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 needn't document return shapes, and it correctly focuses on query construction, pagination, and indexing lag. The one gap is that it never says what happens at the 40-page cap or how to reach requesters not yet indexed, though the schema covers the page limit.

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 100% and the query examples already live in the schema, so baseline would be 3. The description earns more by enumerating the full set of filterable fields, which the schema only hints at with examples, and by restating which fields support the ~ starts-with operator — information an agent needs to compose a valid query.

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 — "Search requesters" — plus its result ordering and page size, which distinguishes it from get_all_requesters or get_requester. It stops short of naming the sibling it is not, leaving that inference to the agent.

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

Usage Guidelines3/5

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

Usage is implied by the query-driven framing rather than stated: an agent can infer this is the tool for filtered requester lookup, and that get_all_requesters is the unfiltered alternative. There is no explicit when-to-use / when-not-to-use rule, and no mention that filter_agents covers the agent side of "include_agents".

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

filter_ticketsFilter ticketsA
Read-onlyIdempotent

Search tickets with the Freshservice query language (30 results per page).

Filterable fields: requester_id, email, agent_id, group_id, priority, status, impact, urgency, tag, due_by and fr_due_by (YYYY-MM-DD), created_at and updated_at (YYYY-MM-DD or UTC datetime), workspace_id (0 = all workspaces) and custom fields by API name (see get_ticket_fields). Field names are case-sensitive snake_case. Examples: "status:2 AND priority:4", "agent_id:null AND created_at:>'2025-01-01'", "(group_id:12 OR group_id:15) AND status:3", "tag:'vip'". :> and :< are documented as inclusive (>= and <=). Values must be valid ones (status 2-5, priority 1-4, ...) or the API answers 400. The response includes "total" with the overall match count.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
queryYesFreshservice query: field:value terms joined by AND / OR with optional (parentheses). Numbers bare (priority:3); strings and dates in single quotes (tag:'vip', created_at:>'2025-01-01'); booleans bare; null for empty (agent_id:null). ':>' and ':<' mean greater/less than OR EQUAL. Max 512 characters. The outer double quotes the API requires are added for you.
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

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 true, so safety is covered. The description adds genuinely non-obvious behavior: a hard 30-result page cap, a 400 response on invalid enum values, case-sensitive snake_case field names, and that the response carries a 'total' match count. That is real operational context beyond the annotations; only paging behavior and sort order are left unstated.

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 purpose and the page-size caveat, then organized into field list, operator semantics, examples, and error behavior. Dense but every line carries operational value; the example block is the only part that runs long.

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 and the description still usefully calls out the 'total' field, so return-value explanation is not missing. Combined with the field list, invalid-value behavior, and 512-char limit (in schema), an agent has enough to call this correctly; only pagination-through-many-pages and sorting are unaddressed.

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 100%, so the baseline is 3, but the description goes further by enumerating the filterable fields, giving four realistic query examples, noting the :> / :< inclusive semantics, and pointing to get_ticket_fields for custom field API names. This meaningfully reduces bad-query risk beyond what the schema property text provides.

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 ('Search tickets') and names the mechanism (Freshservice query language) plus the scope limit (30 results per page). It is clearly a query-based search rather than a plain listing, but it never names the sibling tools (get_tickets, get_ticket_by_id) it complements, so differentiation is inferred 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?

Usage is implied by the query-language framing and the field list, which tells the agent this is the tool for conditional retrieval. However, there is no explicit 'use this instead of get_tickets when you need filtering' or guidance on paging through more than 30 results, so the agent must infer when this is the right choice.

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

get_agentGet agentB
Read-onlyIdempotent

Get an agent by ID, including roles and group memberships.

NameRequiredDescriptionDefault
agent_idYesAgent ID

Output Schema

NameRequiredDescription

No output parameters

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, and destructiveHint=false, so the safety profile is covered. The description adds that the response includes roles and group memberships, which is useful scope information, but says nothing about behavior when the ID does not exist or does not resolve.

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 compact sentence with the verb and key front-loaded and no filler. It is arguably too thin rather than padded, which is the better failure mode for a simple lookup 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?

With an output schema present and rich annotations, the description need not explain return values, and it correctly notes the payload includes roles and group memberships. It still leaves the agent unable to tell this apart from get_agent_fields or to know the failure behavior for an unknown ID.

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 a single parameter with 100% schema description coverage, so the baseline is 3. The description only restates 'by ID' and adds no format, range, or lookup-mechanics detail beyond what the schema already provides.

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 an agent') and adds the retrieval key ('by ID'), which separates it from the list/filter siblings like get_all_agents and filter_agents. It does not distinguish itself from get_agent_fields, which also reads a single agent.

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 'by ID' implies this is the single-record lookup rather than a browse operation, so usage is inferable. However, no alternatives are named and no condition is stated for choosing this over get_all_agents, filter_agents, or get_agent_fields.

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

get_agent_fieldsList agent fieldsB
Read-onlyIdempotent

List agent fields, including custom fields.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

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 needs no restating. The description adds only the 'including custom fields' scope note; it says nothing about return shape or whether field metadata (types, options) is included, though an output schema exists to carry that.

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

Conciseness5/5

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

A single short sentence with the scope qualifier attached, no filler and nothing buried. Nothing could be removed without losing content.

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

Completeness3/5

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

With no parameters, rich annotations and an output schema, the minimum an agent needs is nearly satisfied. What is missing is the workflow context: why an agent would list fields here rather than read them off get_agent, and whether the result is meant to drive create/update payloads.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-parameter 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?

States a specific verb and resource ('List agent fields') and adds the scope detail that custom fields are included. It is clear on its own, but it does not distinguish itself from adjacent field-listing siblings such as get_ticket_fields or list_all_requester_fields.

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 get_agent, get_all_agents, or filter_agents, and no mention of the typical use case (discovering field names before create_agent/update_agent). Usage is only inferable 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.

get_agent_groupGet agent groupA
Read-onlyIdempotent

Get an agent group by ID, including its members.

NameRequiredDescriptionDefault
group_idYesAgent group ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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 one behavioral detail beyond that — that member records come back with the group — but says nothing about behavior for missing/invalid IDs.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, with the one non-obvious fact (members are included) appended. 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?

With an output schema present and annotations covering the safety/idempotency profile, the description only needs to state what the call returns at a coarse level, which it does. Minor gap: it doesn't clarify behavior for nonexistent IDs or how members are represented.

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 the single parameter is documented as 'Agent group ID', so the schema carries the load. The description only restates 'by ID' and adds no format or sourcing guidance (e.g., where to obtain a group 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?

States a specific verb and resource ('Get an agent group') plus the lookup key ('by ID') and the response scope ('including its members'). The 'by ID' phrasing implicitly separates it from get_all_agent_groups, but 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 only implied: you call this when you have a group_id. There is no explicit when-to-use guidance, no mention of when to prefer get_all_agent_groups, and no prerequisites or error conditions noted.

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

get_all_agent_groupsList agent groupsC
Read-onlyIdempotent

List agent groups.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the name, such as pagination behavior or how empty results are handled.

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 description is a single short sentence and is front-loaded, but it is essentially a restatement of the title and omits any useful context. Its brevity comes at the cost of under-specification rather than efficient clarity.

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, with two optional pagination parameters, full schema descriptions, an output schema, and rich annotations. For that complexity level the description is minimally adequate, though it still leaves sibling selection and list behavior 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 100%, with both page and per_page documented in the input schema. The description adds no parameter meaning, so the baseline of 3 is appropriate.

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

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 ('agent groups'), so the agent knows this is a read operation returning multiple agent groups. It does not explicitly distinguish itself from nearby siblings such as get_agent_group or get_all_agents, 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, no exclusions, and does not mention alternatives like get_agent_group for a single group or get_all_agents for agents. Usage is only implied by the tool name.

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

get_all_agentsList agentsC
Read-onlyIdempotent

List agents.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
emailNoExact email
stateNoAgent type
activeNotrue: active only, false: deactivated only
per_pageNoRecords per page (max 100)

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no mention of default page size, max 100 per page, or result ordering — so it contributes no behavioral context of its own.

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?

Two words with zero waste, but this is under-specification rather than conciseness — nothing is front-loaded because nothing is stated. An agent learns nothing it could not infer from the tool name alone.

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 output schema and full schema coverage relieve some burden, but for a five-parameter listing tool that competes with 'filter_agents', the description should at minimum say whether it returns all agents unfiltered and how pagination behaves. That routing information is entirely absent.

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%, so page, email, state, active and per_page are all documented in the schema, including the enum-like agent type and the max-100 page size. The description adds nothing on top, so the baseline 3 applies.

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

Purpose2/5

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

"List agents" merely restates the tool name and title with no additional specificity. It gives no hint of scope, filtering capability, or pagination, and it does nothing to distinguish the tool from sibling 'filter_agents' or 'get_agent'.

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 when-to-use guidance and no mention of the obvious alternative 'filter_agents', which also returns agents. With two agent-listing siblings present, the absence of routing guidance is a real ambiguity rather than a neutral omission.

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

get_all_requester_groupsList requester groupsC
Read-onlyIdempotent

List requester groups.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)

Output Schema

NameRequiredDescription

No output parameters

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, and openWorldHint=true, so safety is covered. The description adds nothing about pagination semantics, ordering, completeness of results, or what a page returns — all relevant for a paginated list call.

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?

One short sentence with no waste, but it is under-specified rather than concise — it spends its single sentence repeating the title instead of supplying any disambiguating information.

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

Completeness2/5

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

An output schema exists, so return values needn't be explained, but the description still omits scope (all groups vs. a filtered subset), how pagination should be driven, and how this differs from the several other group-listing tools in the sibling set.

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 100% with only two optional pagination parameters that are fully documented (page starting at 1, per_page max 100). The description adds no meaning beyond the schema, but with complete schema documentation the baseline of 3 is appropriate.

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 is a near-verbatim restatement of the tool name and title ("List requester groups"), adding no scope, filter, or resource detail. It doesn't distinguish this from siblings like get_requester_group, get_all_agent_groups, or list_requester_group_members.

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 call this versus get_requester_group (single group) or list_requester_group_members. The agent must infer usage purely from the name and the fact that it takes no required parameters.

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

get_all_requestersList requestersB
Read-onlyIdempotent

List requesters, optionally looked up by email or phone.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
emailNoExact primary or secondary email
activeNotrue: active only, false: deactivated only
per_pageNoRecords per page (max 100)
include_agentsNoAlso return agents (who are requesters too)
work_phone_numberNoExact work number
mobile_phone_numberNoExact mobile number

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/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 on top: it says nothing about pagination behavior, the default exclusion of agents (include_agents defaults to false, a real behavioral trait), or result ordering, so it earns no credit beyond the structured fields.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, and the core action comes first. It is arguably too terse for a 7-parameter list tool, but nothing in it is 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?

For a 7-parameter listing tool with pagination and a default that hides agents, the description leaves the agent to discover key behavior from the schema alone and gives no routing signal against filter_requesters. Output schema and annotations cover the return shape and safety, but the selection-time context is thin.

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%, so every parameter including page, per_page, active and include_agents is already documented in the schema. The description only restates the email/phone lookup idea and adds no format or precedence semantics (e.g. how multiple filters combine). Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("List requesters") plus the optional lookup keys, so the action is unambiguous. However, it never distinguishes this tool from the sibling filter_requesters, which reads as the same job, nor from get_requester for single-record retrieval.

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?

"Optionally looked up by email or phone" implies when the filter parameters are worth setting, but there is no explicit guidance on when to prefer this over filter_requesters, nor any statement about when not to use it. Usage is only inferable.

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

get_all_solution_categoryList solution categoriesC
Read-onlyIdempotent

List knowledge-base categories.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully carried by structured fields. The description adds nothing beyond that — no note that results are paginated, whether the list is workspace-scoped, or what happens when workspace_id is 0 (that detail lives only in the schema).

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

Conciseness3/5

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

A single six-word sentence with zero waste and the resource stated immediately, so structure is fine. But the brevity reads as under-specification rather than disciplined concision — there is room for one more sentence of routing or scoping guidance that would earn 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 and the input schema is fully described, so an agent can call this correctly without further text. What is missing is only the connective context an agent would want when choosing between this and the other solution-listing tools.

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%, with page, per_page and workspace_id all documented including defaults and the max-100 cap, so the schema does the heavy lifting. The description adds no parameter meaning of its own, which is the baseline expectation when a schema is this 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?

Specific verb+resource ("List ... categories") scoped to the knowledge base, which maps onto Freshservice's solution module and implicitly separates it from the folder/article siblings. It does not, however, explicitly distinguish itself from get_solution_category or explain that it returns categories only, so the differentiation is inferred rather than stated.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no mention of when to prefer get_solution_category for a single lookup, and no prerequisites or context about what the listing is for. The agent must infer everything from the tool name and the sibling list.

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

get_list_of_solution_articleList solution articlesA
Read-onlyIdempotent

List the articles in a folder: metadata plus a short plain-text snippet, not the full body.

Use get_solution_article with an article id to read the whole article.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
filterNoPass 'trash' to list deleted items
per_pageNoRecords per page (max 100)
folder_idYesSolution folder ID
include_bodyNoReturn each article's full HTML and text body instead of a short snippet. Large: 30 articles can run to tens of thousands of tokens. Prefer get_solution_article.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/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 the safety profile is covered. The description adds real behavioral context beyond that — it discloses that the response is a truncated snippet rather than the body, which prevents an agent from assuming it got full content. Pagination and the 'trash' filter behavior are left to the schema.

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

Conciseness5/5

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

Two short sentences, zero filler, with the output-shape constraint front-loaded and the follow-up tool pointer second. Nothing could be cut without losing routing 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?

With an output schema present, annotations covering safety, and full parameter documentation, the description carries only what it must: what comes back and how to get the full version. The only gap is not naming search_solution_articles for the case where the folder is not yet known.

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 each parameter including include_body already carries its own guidance and token-size warning. The description reinforces the snippet-vs-body distinction but adds no syntax or format detail beyond what the schema provides, so baseline 3 applies.

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 (list articles in a folder) and pins down the payload shape: metadata plus a short plain-text snippet, not the full body. That scope statement alone separates it from get_solution_article and from search_solution_articles.

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?

Explicitly routes the agent to get_solution_article when a full article body is needed, which is the main confusion risk for this tool. It does not mention search_solution_articles as an alternative when the folder is unknown, so one meaningful exclusion is missing.

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

get_list_of_solution_folderList solution foldersC
Read-onlyIdempotent

List the folders in a category.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
filterNoPass 'trash' to list deleted items
per_pageNoRecords per page (max 100)
category_idYesSolution category ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds essentially nothing beyond that: it doesn't mention pagination behaviour, the trash filter, or completeness/ordering of results — all of which are behaviours an agent would want described.

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, front-loaded and free of filler. It is efficient, though the terseness is partly the cause of the gaps elsewhere rather than a virtue in itself.

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

Completeness3/5

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

With an output schema and fully documented parameters, the definition is callable without ambiguity, and a 3 reflects that minimum-viable adequacy. The remaining gap is navigational: nothing distinguishes this from list_solution_subfolders or explains what a solution folder is in this product.

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%, with page, per_page, filter ('trash') and category_id all documented inline. The description's 'in a category' merely echoes category_id, so the baseline of 3 for a fully documented schema is warranted.

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

Purpose3/5

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

The description gives a verb ('List') and a resource ('the folders in a category'), so the basic operation is clear. However, it never says these are 'solution folders' or relates them to the neighbouring list_solution_subfolders / get_solution_folder / get_list_of_solution_article tools, leaving the agent to infer scope from the tool name alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus list_solution_subfolders, get_solution_folder, or list_solution_service_categories. The only implicit hint is that a category_id is required, which the schema already states.

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

get_requested_itemsGet requested itemsA
Read-onlyIdempotent

List the service catalog items requested on a service-request ticket.

NameRequiredDescriptionDefault
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered without the description. The description adds only the scoping insight that results are per-ticket; it says nothing about ordering, empty-result behavior, or whether non-SR tickets return an error.

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

Conciseness4/5

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

One sentence with no filler, and the resource plus its scope are front-loaded. It could be tightened slightly for a more scannable structure, but nothing in it 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 one-parameter, read-only list tool with an output schema and complete annotations, the description covers what to fetch and from where. The only meaningful gap is the absence of guidance on behavior for tickets with no requested items or non-service-request tickets.

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 the single ticket_id parameter is documented with a helpful format note (#INC-123 / #SR-123). The description adds no further constraint on the parameter, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('List') and a specific resource ('service catalog items requested on a service-request ticket'). The ticket-scoping clause distinguishes it from the catalog-listing siblings like list_service_items and search_service_items, though it never names those alternatives 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 'on a service-request ticket' implies this is the follow-up to fetch items attached to an existing SR, which is useful implied context. But there is no explicit when-to-use guidance, no stated prerequisite (e.g. that the ticket must be a service request), and no named alternative for listing the catalog itself.

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

get_requesterGet requesterC
Read-onlyIdempotent

Get a requester by ID.

NameRequiredDescriptionDefault
requester_idYesRequester ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/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 openWorld, so the safety profile is covered, but the description adds nothing beyond them — no error behavior for an unknown ID, no access/permission context, nothing about what an openWorld lookup implies. With the bar lowered by annotations, a 2 reflects a description that contributes no additional behavioral context at all.

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. It is concise to a fault — the size is appropriate but the space saved isn't spent on any routing or behavioral detail.

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 single required parameter is fully documented, making the definition minimally sufficient. However, in a namespace with near-duplicate requester retrieval tools, the description omits the discrimination an agent needs to select 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?

Single integer parameter with 100% schema description coverage, so the schema fully documents it and the baseline is 3. The description only restates that the ID is the lookup key and adds no format, source, or scope detail beyond 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 ('Get a requester') plus the lookup key ('by ID'), which distinguishes a single-record fetch from the sibling list tools get_all_requesters and filter_requesters. It doesn't explicitly name those siblings, so differentiation is implicit 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 use this versus get_all_requesters, filter_requesters, or get_agent. The agent must infer the choice from the tool name alone; there are 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.

get_requester_groupGet requester groupB
Read-onlyIdempotent

Get a requester group by ID.

NameRequiredDescriptionDefault
requester_group_idYesRequester group ID

Output Schema

NameRequiredDescription

No output parameters

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, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered without the description. The description adds no behavioral context beyond annotations – no notes on not-found handling, whether members are included, or sensitivity of the data. With annotations carrying the load, this is minimally adequate.

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

Conciseness4/5

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

One short, front-loaded sentence with no wasted words. It is efficient, though borderline under-specified rather than deliberately 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 and annotations are rich, so the description does not need to explain return values or safety. However, for a lookup tool surrounded by group-management siblings, it leaves ambiguity about whether membership or only group metadata is returned, and it offers no routing to related tools.

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 the single parameter is documented in the schema, so the baseline of 3 applies. The description mentions 'by ID' but adds no format, type, or validation detail beyond what the schema already provides.

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 a requester group') plus the lookup key ('by ID'), which distinguishes it from the list-style sibling get_all_requester_groups. It does not explicitly name the sibling or clarify what a 'requester group' returns, but the purpose is immediately clear.

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 'by ID' phrasing implies this is the single-record lookup versus get_all_requester_groups, but no explicit when-to-use guidance or prerequisites are given. There is no mention of alternatives such as list_requester_group_members when the caller actually needs membership data.

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

get_service_itemGet service itemA
Read-onlyIdempotent

Get a service item, including its form fields (custom_fields names to use when placing a request).

NameRequiredDescriptionDefault
display_idYesService item display_id

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/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 needs no repetition. The description adds value the annotations cannot convey: the response includes custom field names intended for use in a subsequent request, which tells the agent this call is a lookup step and explains the key payload content. It stops short of noting what happens when display_id is invalid.

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 action and resource, with the one piece of non-obvious payload information appended. Nothing is wasted and nothing needs to be re-read.

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 read-only annotations cover the safety posture. The description still provides the practical reason to call this tool, which is enough for a 1-parameter lookup. The only gap is the absence of guidance on routing between this tool and the service-item search and list siblings.

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 100% with a single required parameter, and the schema already documents display_id as "Service item display_id." The description adds no format, range, or sourcing guidance for that identifier, so the baseline 3 is correct when the schema carries the 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?

States a specific verb and resource ("Get a service item") and adds what the payload contains: form fields and custom_fields names. That is more than a restatement of the title. However, it doesn't explicitly distinguish itself from the sibling retrieval tools list_service_items, search_service_items, or get_requested_items.

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 by the parenthetical "custom_fields names to use when placing a request," which hints at the workflow (look up item before calling create_service_request). There is no explicit statement of when to use this tool versus list_service_items or search_service_items, and no prerequisites or failure conditions are named.

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

get_solution_articleGet solution articleA
Read-onlyIdempotent

Read a knowledge-base article by ID: the full HTML in description and plain text in description_text.

Use the id from search_solution_articles or get_list_of_solution_article.

NameRequiredDescriptionDefault
article_idYesSolution article ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/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 open-world, so the safety profile is covered. The description still adds useful behavioral detail by disclosing the two content representations returned in the response, which is more than the annotations provide. It says nothing about not-found behavior or article state (draft vs published), 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 short sentences with zero filler; the core action and return shape are front-loaded and the ID-sourcing hint follows. Nothing could be removed without losing 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?

With an output schema present, annotations covering the safety profile, and a single fully described parameter, the description supplies everything needed to call the tool correctly. Only edge cases such as a missing or unpublished article ID go unmentioned.

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 100% and the single parameter is already documented as 'Solution article ID', so the baseline is 3. The description goes slightly beyond the schema by naming the two sibling tools that produce valid IDs, which concretely helps the agent source the value.

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?

Names a specific verb and resource ('Read a knowledge-base article by ID') and even specifies what the payload contains: full HTML in 'description', plain text in 'description_text'. It implicitly separates itself from the list/search siblings by noting the ID comes from them, so an agent can tell this is the single-article fetch rather than a listing call.

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?

Explicitly states where to obtain the required argument ('Use the id from search_solution_articles or get_list_of_solution_article'), which is a clear usage context with named alternatives. It does not state when not to use it (e.g., that it does not list or search), so it falls short of a full when/when-not treatment.

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

get_solution_categoryGet solution categoryB
Read-onlyIdempotent

Get a knowledge-base category by ID.

NameRequiredDescriptionDefault
category_idYesSolution category ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/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. The description adds no behavioral detail beyond them, such as auth needs, not-found behavior, or rate limits, so it contributes little on this dimension.

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 wasted words. It is appropriately sized for a simple one-parameter getter.

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 one-parameter read-only getter with rich annotations and an output schema, the description covers the core action adequately. It is slightly incomplete on usage alternatives and not-found behavior, but annotations and the output schema fill most 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 100% and the single category_id parameter is already documented as 'Solution category ID'. The description only restates 'by ID' and adds no format or semantic detail beyond the schema, matching the baseline 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 ('Get'), resource ('knowledge-base category'), and selector ('by ID'), which distinguishes it from list/get_all and mutation siblings. It does not explicitly name the sibling alternative, so it falls 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 Guidelines3/5

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

Usage is implied: call it when you know the category ID and need one category. There is no explicit when-to-use, when-not, or alternative routing such as using get_all_solution_category for listing, leaving clear gaps.

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

get_solution_folderGet solution folderC
Read-onlyIdempotent

Get a knowledge-base folder by ID.

NameRequiredDescriptionDefault
folder_idYesSolution folder ID

Output Schema

NameRequiredDescription

No output parameters

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, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds nothing beyond them — it doesn't say whether subfolders or articles are included in the result, what happens for a nonexistent ID, or anything about visibility/permission scoping on an open-world knowledge-base resource.

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

Conciseness4/5

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

One short, front-loaded sentence with no filler. Its brevity is a completeness problem rather than a conciseness one, so it scores well here but not perfectly.

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 structure need not be described, and there is only one fully documented parameter. Still, for a lookup tool inside a folder/category/article hierarchy, the description leaves the terminology mismatch and the folder's scope (subfolders/articles included or not) unresolved.

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 the single parameter folder_id is documented as 'Solution folder ID'. The description adds no extra meaning, such as how to obtain a valid folder_id (e.g., from get_list_of_solution_folder); baseline 3 applies when the schema does the work.

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 ('folder by ID'), so the operation is unambiguous. However it does not differentiate from near siblings such as get_solution_category, get_list_of_solution_folder, or list_solution_subfolders, and it swaps terminology ('knowledge-base folder' vs. 'solution folder'), which leaves a small doubt about whether it is the same object hierarchy.

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 condition for when to call this versus the list/lookup siblings, and no prerequisites. An agent must infer that get_list_of_solution_folder enumerates folders while this one retrieves a single known folder_id.

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

get_ticket_by_idGet ticketA
Read-onlyIdempotent

Get a ticket by ID. Returns {"ticket": {...}} with all standard fields, custom_fields, planned dates, SLA flags (is_escalated, fr_escalated), attachments and, when available, the resolution notes.

NameRequiredDescriptionDefault
includeNoEmbed related data, e.g. ['conversations', 'requester', 'stats']. conversations returns at most 10; use list_all_ticket_conversation for the full thread.
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive semantics, so the safety profile is covered. The description's additional value is limited to listing returned fields, which largely duplicates the existing output schema, and it says nothing about not-found/permission behavior or how the `include` option changes the response payload.

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 front-loaded before the return payload, with no filler. The second sentence's field enumeration partially restates what the output schema already declares, a minor 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?

With an output schema, rich annotations and full parameter coverage, the description only needs to establish purpose and it does. Minor gaps: what happens when the ticket ID does not exist, and any permission constraints, are unstated.

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%, including the enum of includable relations and the caveat that conversations returns at most 10. The description adds no parameter meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

"Get a ticket by ID" states a specific verb and resource, and the ID-based lookup implicitly separates this from bulk siblings like get_tickets and filter_tickets. It does not name an alternative tool explicitly, so it falls short of the 5-level bar for 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 Guidelines3/5

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

The trigger condition (you already have a ticket ID) is implied by the tool name and the required ticket_id parameter, but the description never says when to prefer get_tickets/filter_tickets for searching, nor what to do if the ID is unknown. Usage is inferable rather than stated.

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

get_ticket_fieldsGet ticket form fieldsB
Read-onlyIdempotent

List ticket form fields, including custom fields, their API names and allowed choices.

NameRequiredDescriptionDefault
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

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 safety and idempotency are covered. The description usefully adds that custom fields and their allowed choices are included, but says nothing about pagination, field-type coverage, or freshness of the schema 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?

One compact sentence with the resource front-loaded and no filler. It is efficient but so short that it leaves obvious questions (scope, workspace behavior) unaddressed.

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

Completeness3/5

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

With rich annotations, a fully documented single parameter, and an output schema, the definition is minimally sufficient. It still omits whether the returned field set is workspace-filtered and whether choices reflect dependent/cascading fields, which an agent calling this before create_ticket would want to know.

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 a single parameter with 100% schema description coverage, including the FRESHSERVICE_WORKSPACE_ID default and the '0 means all workspaces' semantics. The description adds nothing about workspace scoping, so baseline 3 applies.

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

Purpose4/5

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

Specific verb ('List') plus resource ('ticket form fields') and it enumerates what is returned (custom fields, API names, allowed choices). It is clearly distinguishable from get_tickets or create_ticket, though it does not name the near-sibling get_agent_fields to differentiate scope.

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?

No explicit when-to-use or when-not-to-use statement, and no mention of alternatives such as get_agent_fields or list_all_requester_fields. Usage is only implied by the fact that API names and allowed choices are needed before building ticket payloads.

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

get_ticketsList ticketsA
Read-onlyIdempotent

List tickets (newest first). Without a filter or updated_since, only the last 30 days are returned.

For arbitrary conditions (status, priority, agent, group, dates, custom fields) use filter_tickets.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
typeNoTicket type
emailNoOnly tickets raised by this requester email
filterNoPredefined filter. Default (none) returns tickets from the last 30 days
includeNoEmbed related data
per_pageNoRecords per page (max 100)
order_typeNoSort direction
requester_idNoOnly tickets raised by this requester
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.
updated_sinceNoOnly records updated at/after this ISO-8601 time, e.g. 2025-01-31T00:00:00Z

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the tool is read-only, idempotent, open-world, and non-destructive. The description adds useful behavioral context: results are newest first and default to a 30-day window unless filter or updated_since is provided. It does not discuss pagination or rate limits, but those are secondary here.

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 short sentences with no waste. The default scoping rule is front-loaded, and the alternative-tool guidance follows immediately.

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?

Given rich annotations, 100% schema description coverage, and an output schema, the description provides the essential selection and scoping information an agent needs. It does not need to repeat return-value or parameter details already covered structurally.

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%, so parameter meanings are already well documented. The description adds the interaction between filter and updated_since in determining the 30-day default window, but does not provide additional detail on page, include, workspace_id, or the filter enum 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?

The description states a specific verb and resource ('List tickets') and adds important scope ('newest first'). It explicitly distinguishes the tool from the sibling filter_tickets, so an agent can choose between them without opening either schema.

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?

It clearly states the default behavior when no filter or updated_since is supplied and explicitly routes arbitrary-condition queries to filter_tickets. This gives both when-to-use and when-to-use-an-alternative guidance.

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

list_all_requester_fieldsList requester fieldsA
Read-onlyIdempotent

List requester fields, including custom fields and their API names.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/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 only that custom fields and API names are included, which is content scope rather than deeper behavior (no mention of ordering, pagination, or account-wide vs. scoped results).

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

Conciseness5/5

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

A single short sentence that front-loads the resource and adds the one genuinely useful detail (custom fields and their API names) with 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-value explanation is unnecessary, and with no inputs the description covers what is needed to invoke it correctly. It is only slightly thin on scope, not stating whether results span all requesters or a single account-wide field set.

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 to explain and the description doesn't need to compensate.

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 requester fields') and clarifies the payload includes custom fields plus their API names. It is distinguishable from get_agent_fields and get_ticket_fields by resource, though it never explicitly contrasts with them.

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 prerequisites, and no guidance on when to prefer this over sibling field-lookup tools such as get_agent_fields or get_ticket_fields. Usage is only inferable 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.

list_all_ticket_conversationList ticket conversationsA
Read-onlyIdempotent

List the replies and notes on a ticket, oldest first. Each has body/body_text, private, incoming, source, user_id, to/cc/bcc emails and attachments.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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 ordering guarantee ('oldest first'), which is genuine behavior not in the annotations, but says nothing about pagination limits or total counts 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.

Conciseness5/5

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

Two short sentences, front-loaded with the action and scope, then the returned shape. Every clause carries information; nothing 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 and annotations covering safety, the description needn't explain return values, and it still summarizes them usefully. The one remaining gap is paging behavior, which matters for a list tool that defaults to 30 records.

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%, so the baseline of 3 applies; the description adds no parameter detail at all. It never mentions that results are paged (default 30, max 100), leaving the agent to discover paging only from 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 ('List the replies and notes on a ticket') plus ordering ('oldest first'), which is far more precise than the tautological name. It implicitly distinguishes itself from the ticket-level readers (get_tickets, get_ticket_by_id) and the conversation mutators, though it never names any sibling 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 implied: an agent can infer this is the way to read a ticket's thread, but there is no statement of when to prefer it over list_ticket_activities or get_ticket_by_id, and no mention of pagination thresholds that would suggest fetching multiple pages.

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

list_requester_group_membersList requester group membersC
Read-onlyIdempotent

List the requesters in a requester group.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)
requester_group_idYesRequester group ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond restating the operation, such as pagination behavior, permissions, or what the listed requesters represent.

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 a single, front-loaded sentence with zero waste. It is appropriately sized for a simple list operation, though it is so terse that it borders on restating the title.

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 the simple read-only nature, rich annotations, complete schema descriptions, and the presence of an output schema, the description covers the essential purpose. However, it does not mention pagination or the distinction from related listing tools, leaving some contextual 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 100%, so all three parameters (requester_group_id, page, per_page) are documented in the schema itself. The description does not add any parameter meaning, which is acceptable given the high schema coverage and the baseline of 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?

The description states a specific verb ('List') and resource ('requesters in a requester group'), making it clear this is a membership-listing operation. It implicitly distinguishes itself from siblings like get_all_requester_groups or add_requester_to_group, though it does not explicitly name any alternative.

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 get_requester_group or get_all_requesters. The implied usage is obvious from the name, but the description adds no context about prerequisites or exclusions.

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

list_rolesList agent rolesA
Read-onlyIdempotent

List agent roles (needed for create_agent's roles).

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/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 safety profile is fully covered structurally. The description adds only the downstream-consumption context and says nothing about result volume, pagination behavior, or whether the list is tenant-scoped (openWorldHint=true suggests it may vary).

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 resource comes first and the usage cue second. Nothing could be removed without losing 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 read-only list tool with an output schema, full parameter documentation, and complete annotations, the description covers purpose and the reason to call it. It could go slightly further by noting that results are paginated and that create_agent needs the returned role identifiers, but nothing essential 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% — both page and per_page are documented with defaults and bounds in the schema. The description adds no parameter guidance, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("List agent roles") and ties the output to a downstream need (create_agent's roles). It is clearly distinguishable from group/requester siblings, though it doesn't differentiate itself from other list-type tools in any deeper way.

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?

The parenthetical "needed for create_agent's roles" tells the agent exactly when to reach for this tool — before calling create_agent — which is the primary use case. It stops short of naming exclusions or an alternative source for role data.

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

list_service_catalog_categoriesList service catalog categoriesC
Read-onlyIdempotent

List service catalog categories.

NameRequiredDescriptionDefault
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.1/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 structurally. The description adds nothing beyond that—no note on pagination, workspace scoping, or what subset of categories is returned—so it contributes no behavioral context of its own.

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

Conciseness3/5

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

It is a single short sentence with no wasted words, but at one tautological line it is under-specified rather than concise. Front-loading is irrelevant when the only content is a restatement of the name.

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-value detail is not strictly required, but the description still leaves the agent without any sense of scope, workspace defaults, or relationship to the service item tools. For a listing tool this is thin.

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 optional parameter (workspace_id) exists, and its schema description already fully explains the default and the 0-means-all-workspaces semantics at 100% coverage. The description adds nothing, but with schema coverage this high a baseline 3 is appropriate.

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 simply restates the tool name and title: "List service catalog categories." It names a verb and a resource but adds no scope, filtering behavior, or differentiation from siblings such as list_service_items or search_service_items.

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 guidance on when to use this tool, when not to, or which sibling to prefer for service catalog lookups. 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.

list_service_itemsList service itemsB
Read-onlyIdempotent

List one page of service catalog items.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 30 for this endpoint)
category_idNoOnly items in this category
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

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, non-destructive and openWorld, so the safety profile is covered. The description adds only the pagination framing ('one page') and nothing about ordering, total counts, or page-limited behavior beyond the schema's max 30.

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

Conciseness4/5

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

A single short sentence with no filler and the scope front-loaded. It is efficient, though thin enough that it earns little credit beyond brevity.

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

Completeness3/5

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

With an output schema present and full parameter documentation, the description needn't explain return values, but it should clarify how listing relates to search/filter siblings and whether it enumerates the whole catalog. That routing information is missing, leaving it only minimally 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 100% and all four optional parameters are documented in the schema, including defaults and the max-30 cap. The description adds no meaning beyond that, which is the expected baseline when the schema does the work.

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 ... service catalog items') with a pagination scope ('one page'). It does not, however, distinguish itself from siblings like search_service_items or get_service_item, so an agent must infer which 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?

There is no guidance on when to list versus when to search or fetch a single item, and no prerequisites or exclusions. The word 'one page' only hints at paginated enumeration.

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

list_solution_subfoldersList solution sub-foldersC
Read-onlyIdempotent

List the sub-folders of a folder.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)
folder_idYesSolution folder ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare that this is a read-only, idempotent, non-destructive, open-world listing operation. The description adds no behavioral context beyond that, such as pagination behavior or what happens if the folder has no sub-folders.

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 a single front-loaded sentence with no wasted words. Its extreme brevity is appropriate in form, though it leaves substantive gaps in content.

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. Still, the description is minimal for a tool whose folder_id could refer to different levels of the solution folder hierarchy, and it gives no caution about pagination or empty results beyond what the schema implies.

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 all three parameters (page, per_page, folder_id) are documented in the schema. The description itself adds no parameter semantics, which is acceptable given the schema quality but leaves no additional value.

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

Purpose4/5

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

The description states a clear verb ('List') and resource ('sub-folders of a folder'), so the basic operation is understandable. However, it largely restates the tool name and title and does not distinguish this from related siblings such as get_list_of_solution_folder or get_solution_folder.

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 its many solution-folder siblings. It does not mention prerequisites, whether the parent folder must exist, or any alternative for traversing the folder hierarchy.

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

list_ticket_activitiesList ticket activitiesA
Read-onlyIdempotent

List the audit trail of a ticket (field changes, assignments, status changes).

NameRequiredDescriptionDefault
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is fully covered by structured data. The description adds a useful content disclosure (what the audit trail contains) but says nothing about volume, ordering, or whether the result set is paginated/truncated — a meaningful omission for an audit-trail listing that could be very large.

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 resource stated first and the content scope in parentheses. No filler, nothing to trim.

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 shape need not be described, and the single required parameter is fully documented in the schema. The only residual gap is behavioral detail about result size/ordering, which is minor for a one-parameter read 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?

Only one parameter and schema description coverage is 100%; the schema already explains that ticket_id is the number shown as #INC-123 / #SR-123. The description adds no extra semantics about the identifier, so the documented baseline of 3 applies.

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

Purpose4/5

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

Specific verb ('List') plus resource ('audit trail of a ticket') with a clarifying parenthetical naming the event types returned (field changes, assignments, status changes). That scope cleanly separates it from conversation, time-entry, and field-metadata siblings, 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 implied by the resource name — an agent can infer 'call this when you need the change history of a specific ticket' — but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative such as list_all_ticket_conversation for comments.

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

list_ticket_sourcesList ticket sourcesA
Read-onlyIdempotent

List ticket sources (channels), built-in and custom, with the numeric IDs create_ticket expects.

Returns {"sources": [{"id": 1, "value": "Email"}, ...]}. Freshservice has no endpoint that lists sources (/ticket_fields/sources only creates one), so they are read from the ticket form's "source" field.

NameRequiredDescriptionDefault
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.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, so the bar is lower, yet the description still adds real value by disclosing the data-source quirk: no dedicated Freshservice endpoint exists, so values are read from the ticket form's 'source' field. It also sketches the response shape, which annotations cannot convey; auth or rate-limit behavior is not covered.

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 purpose and downstream use come first, the return shape and implementation caveat second. Every sentence carries information an agent needs; nothing is padded.

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?

For a zero-required-param read tool with full schema coverage, an output schema, and complete annotations, this description covers what it returns, why it exists, and the underlying data quirk. No gaps remain that would cause a misinvocation.

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 100% and the sole parameter (workspace_id) is fully documented in the schema, including its default and the special '0 means all workspaces' semantics. The description adds nothing about workspace scoping, so the baseline 3 applies.

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 ('List ticket sources (channels), built-in and custom') and immediately ties the output to a downstream consumer ('the numeric IDs create_ticket expects'). The mention of the /ticket_fields/sources workaround also distinguishes it from the sibling get_ticket_fields tool.

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?

The purpose clause makes the use case explicit: fetch valid source IDs before calling create_ticket. That is clear contextual routing, though it stops short of naming exclusions or an explicit alternative tool to use when sources aren't needed.

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

list_ticket_time_entriesList ticket time entriesB
Read-onlyIdempotent

List time entries (time tracked by agents) on a ticket.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)
ticket_idYesTicket ID

Output Schema

NameRequiredDescription

No output parameters

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 domain context that entries represent agent-tracked time on a ticket, but says nothing about ordering, totals, or whether all entries are returned at 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?

A single well-formed sentence with the scope constraint front-loaded and zero filler. It is arguably too terse given available room, 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 and complete parameter descriptions exist, so the core call is unambiguous. Still, for a paginated per-ticket listing among several time-entry siblings, the description could note pagination behavior or how it differs from the single-entry viewer; the minimum viable bar is met but not exceeded.

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 100%, so ticket_id, page, and per_page are already fully documented. The description only reinforces that the listing is scoped to a single ticket; it adds no syntax or format detail beyond 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 (list time entries) and clarifies what a time entry is (time tracked by agents) on a ticket. It is clear on its own, but does not contrast itself with the sibling view_ticket_time_entry, so an agent must infer the singular-vs-list distinction from 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?

There is no guidance about when to use this versus view_ticket_time_entry or how it relates to the create/update/delete time-entry siblings. The only implied usage is 'you have a ticket_id and want its entries'.

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

publish_solution_articlePublish solution articleB
Idempotent

Publish a draft article (sets status to 2).

NameRequiredDescriptionDefault
article_idYesSolution article ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description usefully adds the concrete side effect (status set to 2) and the draft precondition, but says nothing about visibility changes, notifications to subscribers, or failure modes for non-draft articles.

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 short sentence with the action front-loaded and a parenthetical for the concrete effect; no filler or redundancy.

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

Completeness3/5

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

With one required parameter, an output schema, and full annotations, the definition is minimally sufficient to invoke correctly. However, it does not clarify what 'publish' changes beyond the numeric status (e.g., visibility, subscriber notification) or whether publishing is reversible, which matters for a state-transition 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 100% with a single documented parameter ('Solution article ID'), so the schema carries the burden and baseline 3 applies. The description adds no format, range, or source hints for article_id beyond what the schema states.

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: 'Publish a draft article' clearly identifies the action and target object, distinct from create/update/delete siblings in the solution-article family. It does not explicitly name a sibling alternative, so it stays below 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 word 'draft' implies a precondition (the article must already exist as a draft), but no explicit when-to-use, when-not-to-use, or pointer to update_solution_article for status changes. An agent must infer the relationship with the other article tools.

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

reactivate_agentReactivate agentB
Idempotent

Reactivate a deactivated agent.

NameRequiredDescriptionDefault
agent_idYesAgent ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety and idempotency profile is fully covered. The description adds only the precondition that the agent must be deactivated; it says nothing about permissions required, side effects on associated tickets/requester links, or error behavior.

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

Conciseness4/5

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

A single short sentence with the action front-loaded and zero padding. It is efficient, though the terseness leaves little room for the useful preconditions it omits.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the tool is simple with one parameter. Still, for a state-transition mutation the description should say what happens when the agent is already active (given idempotentHint=true) and whether permissions are needed.

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 a single required parameter with 100% schema description coverage, so the schema carries the burden. The description adds no meaning beyond the schema (e.g. where to obtain agent_id), so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource ('reactivate' + 'agent') and implicitly contrasts with the sibling deactivate_agent. It is clear what the tool does, though it offers no explicit sibling differentiation 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 Guidelines3/5

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

The phrase 'a deactivated agent' implies a precondition, giving some implied usage context. However, there is no explicit when-to-use/when-not-to-use guidance, no mention of alternatives (e.g. update_agent for other state changes), and no statement about what happens if the agent is already active.

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

reactivate_requesterReactivate requesterA
Idempotent

Reactivate a deactivated requester.

NameRequiredDescriptionDefault
requester_idYesRequester ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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, idempotent, non-destructive operation. The description adds the useful state requirement that the requester must be deactivated, but does not explain side effects, required permissions, or what happens if the requester is already active.

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 short sentence with no redundant wording. The operation and target state are front-loaded and immediately understandable.

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 simple one-parameter mutation with annotations and an output schema available, the description is nearly complete. The only meaningful omission is explicit prerequisite or permission information, but that is not strictly required 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 100%, so the single requester_id parameter is already documented. The description does not add format details or constraints beyond the schema, which is acceptable at baseline when the schema carries the 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?

States a specific verb and resource: reactivate a requester. The qualifier 'deactivated' distinguishes the operation from related tools like deactivate_requester and reactivate_agent, though it does not explicitly name siblings.

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

Usage Guidelines3/5

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

Usage is implied by the name and by the 'deactivated' precondition, making it clear this applies to an inactive requester. However, there is no explicit guidance about when to use this versus alternatives or about prerequisites such as permissions.

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

remove_requester_from_groupRemove requester from groupB
Idempotent

Remove a requester from a manual requester group.

NameRequiredDescriptionDefault
requester_idYesRequester ID
requester_group_idYesRequester group ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered elsewhere. The description contributes one useful behavioral fact — that it applies to 'manual' requester groups, implying dynamic/automatic groups are out of scope — but says nothing about what happens if the requester is not a member or whether the requester record itself is affected.

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 no redundancy. It is efficiently sized, though its brevity comes at the cost of the missing usage and behavioral detail noted above rather than from trimming genuine excess.

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 the annotations are rich, so return-value explanation is not required. However, for a mutation that changes group membership, the description omits error/edge-case behavior (requester not in group, non-manual group) and any pointer to prerequisites, leaving it only minimally sufficient.

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%, so both integer parameters are documented in the schema and the description need not repeat them. The description adds no format, range, or lookup guidance (e.g., how to obtain requester_group_id) beyond the schema baseline.

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 ('Remove') and resource ('a requester from a manual requester group'), which is far more precise than the title alone. The word 'manual' adds a real scoping qualifier, though the description never names the counterpart tools (add_requester_to_group, list_requester_group_members) that an agent would weigh it against.

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 add_requester_to_group, list_requester_group_members, or delete_requester_group, nor any prerequisite such as the group being manual or the requester currently being a member. Usage is only inferable 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.

restore_ticketRestore ticketA
Idempotent

Restore a deleted (trashed) ticket.

NameRequiredDescriptionDefault
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, so the safety profile is covered. The description adds genuine value by disclosing the soft-delete model ('deleted' = 'trashed'), but says nothing about what happens if the ticket isn't trashed, whether restore expires, or what permissions are required.

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

Conciseness5/5

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

A single short sentence, front-loaded with the verb and resource, with the disambiguating detail in the most useful position. Nothing is wasted and nothing important is buried.

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 one fully documented parameter, rich annotations, and an output schema, the definition is nearly self-sufficient. The remaining gap is operational context — retention limits and behavior on a non-trashed ticket — which the short description does not cover.

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 and schema coverage is 100%, with the schema already explaining that ticket_id is the number shown as #INC-123 / #SR-123. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (restore) and resource (ticket) and parenthetically disambiguates 'deleted' as 'trashed', which tells the agent this is the inverse of delete_ticket rather than a recreation step. It stops short of naming the sibling it pairs with, 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 parenthetical '(trashed)' implies the condition for use — the ticket must be in the trash — but there is no explicit when-not guidance, no mention of retention windows, and no routing language distinguishing this from create_ticket or update_ticket when a tool selection is ambiguous.

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

search_service_itemsSearch service itemsC
Read-onlyIdempotent

Search service catalog items by keyword.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page
user_emailNoSearch on behalf of this user
search_termYese.g. 'vpn access'
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety and world-scope profile is fully covered structurally. The description adds no behavioral context beyond repeating that it is a keyword search — nothing about result cap, relevance ordering, or scope (workspace/user) behavior, which is relevant given the optional user_email and workspace_id 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 front-loaded sentence with no filler; efficient, though efficiency here reflects under-specification rather than disciplined editing.

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

Completeness3/5

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

An output schema exists and all five parameters are documented in the schema, so the description needn't explain returns or arguments. What remains missing is the discriminating context — how this differs from list_service_items and what keyword matching actually does — leaving it only minimally viable for an agent choosing among catalog tools.

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 each parameter carries its own description, so baseline is 3. The description only alludes to search_term ('by keyword') and adds no semantics about paging, workspace scoping, or act-as-user behavior beyond 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: searching service catalog items, with the keyword-search qualifier. However, it does not distinguish itself from the sibling list_service_items or get_service_item, so an agent must infer which is which from names alone.

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

Usage Guidelines2/5

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

No guidance on when to use this versus list_service_items (browse/list all) or get_service_item (fetch by id), and no mention of whether search_term supports partial matches, multi-word phrases, or boolean syntax.

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

search_solution_articlesSearch solution articlesA
Read-onlyIdempotent

Full-text search across published knowledge-base articles.

Each result has id, title, folder_id/category_id, status and a short plain-text snippet (the first ~300 characters). Freshservice returns every article's full body here, which makes 30 results very large, so they are trimmed unless include_body is true. To read an article, call get_solution_article with its id (full HTML in description, plain text in description_text).

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
per_pageNoRecords per page (max 100)
user_emailNoSearch on behalf of this user (respects visibility)
search_termYesWords to look for
include_bodyNoReturn each article's full HTML and text body instead of a short snippet. Large: 30 articles can run to tens of thousands of tokens. Prefer get_solution_article.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark this read-only, idempotent and non-destructive, and the description adds real operational context: results are trimmed to a ~300-character snippet because full bodies are very large, plus the exact shape of each result (id, title, folder_id/category_id, status, snippet). That is information an agent cannot get from 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?

Four sentences, front-loaded with purpose and result shape, then the size caveat and the hand-off to the read tool. Minor redundancy between the 'trimmed unless include_body' sentence and the schema's own warning about size.

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 and strong annotations already present, the description covers the key gaps: result fields, snippet trimming, and where to go for full content. Pagination and the user_email visibility behavior are left entirely to the schema.

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 100%, so the baseline is 3, but the description adds genuine guidance for include_body — what it returns (full HTML/text), the token cost, and the preferred alternative — rather than just restating the field.

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 ('Full-text search across published knowledge-base articles') and scopes it to published content, which separates it from the sibling folder/article-listing 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?

Explicitly routes the agent to get_solution_article by id when the full article is needed, and the include_body note tells it to prefer reading over bulk body retrieval. It does not contrast with get_list_of_solution_article, so the search-vs-list choice is only implied.

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

send_ticket_replyReply to ticketB

Send a public reply to the requester on a ticket.

NameRequiredDescriptionDefault
bodyYesReply content (HTML allowed)
user_idNoAgent ID to send the reply as
cc_emailsNoEmail addresses
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)
bcc_emailsNoEmail addresses
from_emailNoA configured support email to send from. Omit to use the account default
attachmentsNoLocal file paths to attach (max 15 files / 40 MB total). Only files inside the folders in FRESHSERVICE_ATTACHMENT_DIRS are allowed; attachments are refused until that is set

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, and non-idempotent, so the safety profile is covered. The description adds the meaningful trait that the reply is publicly visible to the requester, but it does not say the message is emailed immediately, cannot be recalled or edited, or how it affects ticket status.

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, naming the action and audience immediately. It is appropriately sized but arguably under-informative for a customer-visible mutation.

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

Completeness3/5

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

With an output schema and fully described parameters, much of the burden is carried elsewhere. However, for an outbound, non-idempotent send to a customer, the description omits whether the reply is editable afterward, whether the requester is notified by email, and what side effects occur on the ticket record.

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%, with body format, from_email default behavior, attachments limits, and ticket ID format all documented in the schema. The description adds no parameter guidance beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

"Send a public reply to the requester on a ticket" gives a specific verb (send), resource (reply), and audience (requester), which separates it from internal-note siblings like create_ticket_note. It does not explicitly name that sibling or any other alternative, so it falls 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 Guidelines3/5

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

The word "public" implies this is for customer-facing communication rather than internal notes, but the description never states when to choose this over create_ticket_note or update_ticket_conversation, nor any prerequisites. Usage is only inferable from context.

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

update_agentUpdate agentB
Idempotent

Update an agent. Only the supplied fields change.

NameRequiredDescriptionDefault
agent_idYesAgent ID
agent_fieldsYesFields to change. Allowed: first_name last_name occasional job_title email work_phone_number mobile_phone_number department_ids can_see_all_tickets_from_associated_departments reporting_manager_id address time_zone time_format language location_id background_information scoreboard_level_id member_of observer_of roles custom_fields

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/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=true, and openWorld=true, so the safety profile is covered. The description does add genuine behavioral value by clarifying merge/patch semantics (unspecified fields are preserved), which annotations alone do not convey. It stops short of stating permission requirements or what happens on invalid field names.

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 verb and resource, with no filler. The second sentence is terse to the point of being slightly oblique ("supplied" implicitly means the keys present in agent_fields), 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 and annotations are rich, so return values and safety need no explanation. However, for a mutation tool with a nested free-form object parameter, the description does not explain how to construct agent_fields, whether unknown keys are rejected, or what happens to fields omitted vs. explicitly set to null.

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 the agent_fields property enumerates all allowed field names, so the schema does the heavy lifting. The description's only parameter-adjacent contribution is reinforcing the partial-update behavior of agent_fields; it adds no format, type, or validation detail beyond 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 agent"), which is unambiguous on its own and pairs with a title that says the same. It does not, however, distinguish itself from close siblings such as create_agent, deactivate_agent, or reactivate_agent, so an agent must rely on the name alone to disambiguate.

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?

"Only the supplied fields change" describes partial-update semantics rather than when to use this tool versus alternatives. There is no mention of prerequisites (e.g., needing an existing agent_id, permissions required), no exclusion guidance, and no pointer to get_agent or get_agent_fields for discovering valid field names before updating.

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

update_groupUpdate agent groupA
Idempotent

Update an agent group. Only the supplied fields change.

NameRequiredDescriptionDefault
group_idYesAgent group ID
group_fieldsYesFields to change: name, description, agent_ids, observer_ids, auto_ticket_assign, escalate_to, unassigned_for, business_hours_id

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (idempotent, non-destructive, not read-only, open-world). The description adds a meaningful behavioral disclosure beyond that: this is a partial/PATCH-style update where unspecified fields are preserved, which prevents accidental field wiping. It stops short of describing permission requirements or response behavior.

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, zero waste, with the core behavior front-loaded. Nothing is padded or 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, complete annotations, and fully described parameters, the description is sufficient to invoke the tool correctly. A minor gap is the absence of any note on required permissions or the relationship to requester-group siblings.

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%, with group_fields already enumerating the updatable fields, so the schema does the heavy lifting. The description reinforces the partial-update semantics of group_fields but adds no format, type, or nested-field detail beyond what the schema states.

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 (agent group), clearly distinguishing it from create_group/delete_group. It does not explicitly differentiate from the sibling update_requester_group, leaving that distinction to be inferred from the 'agent' qualifier.

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?

'Only the supplied fields change' implies the partial-update use case, which is useful context. However, there is no explicit when-to-use guidance, no prerequisites, and no reference to alternatives such as update_requester_group or delete_group.

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

update_requesterUpdate requesterB
Idempotent

Update a requester. Only the supplied fields change.

NameRequiredDescriptionDefault
requester_idYesRequester ID
requester_fieldsYesFields to change. Allowed: first_name last_name job_title primary_email secondary_emails work_phone_number mobile_phone_number department_ids can_see_all_tickets_from_associated_departments reporting_manager_id address time_zone time_format language location_id background_information custom_fields

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so safety is covered. The description's one real contribution is patch semantics — "only the supplied fields change" — which is not derivable from the annotations and matters for a nested-object update. It says nothing about validation errors, permission requirements, or what happens with unknown field names.

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, no waste, with the partial-update rule front-loaded right after the verb. Nothing could be cut without losing meaning.

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 the input schema is fully documented, so return values need no explanation. However, for a mutation on a nested object with openWorldHint=true, the description omits error behavior and permission context an agent would want before invoking.

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%; the requester_fields description already enumerates every allowed field. The description adds nothing about requester_id format or how nested custom_fields should be passed. Baseline 3 applies since the schema does the work.

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 a requester") and adds the scope constraint that only supplied fields change. It is distinguishable from sibling mutators like update_agent or update_group by resource name, though it never explicitly contrasts with them.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus create_requester, deactivate_requester, or convert_requester_to_agent, and no prerequisites such as whether the requester must exist or which permissions are needed. 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.

update_requester_groupUpdate requester groupC
Idempotent

Update a requester group.

NameRequiredDescriptionDefault
nameNoNew name
conditionsNoNew rules (rule_based groups)
descriptionNoNew description
requester_group_idYesRequester group ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is covered externally. The description adds nothing to that: it does not say the update is partial, whether omitted fields are left untouched, or that conditions apply only to rule-based groups. No contradiction, but zero added value.

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

Conciseness2/5

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

The brevity is not efficiency but under-specification: a single truncated fragment that duplicates the title. Nothing is front-loaded because there is nothing of substance to front-load.

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 four parameters, partial-update nulls, an output schema, and a dense set of sibling group tools, the description should at minimum say which fields are optional and what class of group can be updated. None of that appears, leaving the definition thin for a mutation 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 100%, so all four parameters including the rule_based caveat on 'conditions' are already documented in the schema. The description provides no additional semantics, which lands at the baseline 3.

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 sentence 'Update a requester group' restates the tool name and title almost verbatim, adding no scope, field, or resource detail. It conveys the verb (update) and resource (requester group) but does nothing to separate it from siblings like update_group, update_requester, or update_agent.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative routing is given. An agent cannot tell from the description whether this handles renames, rule-based condition rewrites, or both, nor when to prefer delete_requester_group or create_requester_group instead.

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

update_solution_articleUpdate solution articleC
Idempotent

Update a knowledge-base article.

NameRequiredDescriptionDefault
tagsNo
titleNo
statusNo1 Draft, 2 Published
keywordsNo
folder_idNoMove to this folder
article_idYesSolution article ID
descriptionNoHTML body
review_dateNoYYYY-MM-DD
article_typeNo1 Permanent, 2 Workaround

Output Schema

NameRequiredDescription

No output parameters

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=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it doesn't say whether this is a partial update (only article_id is required, so unspecified fields are presumably preserved), whether publishing requires a separate call, or what permission level is needed.

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

Conciseness3/5

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

A single clean, front-loaded sentence with no filler, so structurally fine. But its brevity is under-specification rather than economy — the one sentence carries almost no actionable information for a 9-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?

For a mutation tool with 9 parameters, one required ID, and an output schema present (so return values needn't be explained), the description still omits critical context: partial vs. full update semantics, interaction with publish_solution_article, and the meaning of a folder move. It is far too thin 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 coverage is a moderate 67%, with inline descriptions for status, folder_id, article_id, description, review_date, and article_type. The description adds no parameter meaning whatsoever, leaving tags, title, and keywords undocumented and not clarifying the partial-update semantics implied by the all-optional schema.

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 (Update) and a resource (knowledge-base article), but uses terminology that doesn't match the tool name or sibling family ('solution article'). It also does nothing to distinguish it from siblings like publish_solution_article, update_solution_folder, or create_solution_article, so an agent must infer the boundary from the name alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus publish_solution_article (which also changes status) or update_solution_folder (which also handles moves, a capability hinted at by folder_id). No prerequisites or exclusions are stated.

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

update_solution_categoryUpdate solution categoryC
Idempotent

Update a knowledge-base category.

NameRequiredDescriptionDefault
nameNo
category_idYesSolution category ID
descriptionNo
default_categoryNoMake this the default category

Output Schema

NameRequiredDescription

No output parameters

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=true, and openWorldHint=true, which covers the safety profile. The description adds nothing beyond that — it does not say whether omitted fields remain unchanged, whether null values clear fields, or what permissions are needed.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is efficient, though its brevity leaves the other dimensions under-specified rather than verbose.

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

Completeness2/5

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

Although an output schema exists and return values need not be explained, this is a mutation tool with four parameters and only one required key. The description does not explain update behavior, which fields can be changed, or consequences of omitted/null values, making it incomplete 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 only 50% (category_id and default_category have descriptions; name and description do not). The description contributes no parameter meaning at all, leaving gaps for the undocumented fields and no explanation of update semantics like partial vs full replacement.

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 specific verb ('Update') and a clear resource ('knowledge-base category'), so an agent can understand the intended action. However, it does not distinguish this from siblings like update_solution_folder or update_solution_article, and 'knowledge-base category' is slightly less precise than the tool name's 'solution category'.

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 instead of create_solution_category, delete_solution_category, get_solution_category, or the folder/article updaters. No prerequisites, no mention of required fields or partial-update semantics are provided.

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

update_solution_folderUpdate solution folderC
Idempotent

Update a knowledge-base folder.

NameRequiredDescriptionDefault
nameNo
folder_idYesSolution folder ID
group_idsNo
visibilityNoSee create_solution_folder
descriptionNo
department_idsNo
requester_group_idsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say that omitted fields are left unchanged, what permissions are required, or what the returned payload represents (openWorldHint suggests external state changes).

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

Conciseness3/5

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

One short sentence with no waste and the intent is front-loaded, but it is terse to the point of under-specification rather than genuinely efficient.

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

Completeness2/5

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

For a seven-parameter mutation with 29% schema coverage and no parameter explanations, the description leaves an agent unable to tell which fields to supply or what the update semantics are. An output schema exists, so return-value explanation is not required, but the input side remains substantially uncovered.

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 only 29% across seven parameters, so the description must compensate and it does not — it names no parameters at all. Nontrivial fields like visibility (integer 1-7, whose semantics are deferred to create_solution_folder), group_ids, department_ids and requester_group_ids are completely unexplained in the description.

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

Purpose4/5

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

States a specific verb and resource ('Update a knowledge-base folder'), which separates it from sibling mutations like update_solution_category and update_solution_article. However, it uses 'knowledge-base folder' while the tool name and schema use 'solution folder', leaving a small terminology gap for an agent scanning sibling names.

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 instead of create_solution_folder, delete_solution_folder, or get_solution_folder, and no statement that updates are partial/optional-field based even though six of seven parameters are optional.

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

update_ticketUpdate ticketB
Idempotent

Update a ticket. Only the supplied fields change.

NameRequiredDescriptionDefault
ticket_idYesTicket ID (the number shown as #INC-123 / #SR-123)
attachmentsNoLocal file paths to attach (max 15 files / 40 MB total). Only files inside the folders in FRESHSERVICE_ATTACHMENT_DIRS are allowed; attachments are refused until that is set
ticket_fieldsYesFields to change, e.g. {'status': 4, 'priority': 3, 'responder_id': 42, 'custom_fields': {'cf_root_cause': 'Network'}}. Same fields as create_ticket.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

"Only the supplied fields change" is a useful partial-update guarantee that reinforces idempotentHint=true and destructiveHint=false from the annotations. Beyond that, nothing is added: no mention of what happens to omitted fields, permission requirements, or the side effects implied by openWorldHint=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?

Two short sentences with no filler and the key constraint stated up front. It is efficiently written, though so terse that it reads as under-specified rather than deliberately minimal.

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

Completeness3/5

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

An output schema and full parameter coverage mean the description needn't explain return values or argument formats. But for a mutation tool operating on a free-form nested ticket_fields object, the description says nothing about which fields are valid or what update semantics apply beyond "only supplied fields change".

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%, so ticket_id, attachments (including the FRESHSERVICE_ATTACHMENT_DIRS constraint and size limits), and ticket_fields are already documented in the schema. The description's "only the supplied fields change" reinforces that ticket_fields is a partial patch rather than a full replacement, but adds no detail on which fields are updatable. Baseline 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 and resource ("Update a ticket"), which is clear enough to separate it from siblings like update_ticket_conversation or update_ticket_time_entry by noun alone. It does not, however, explicitly contrast itself with create_ticket or the more narrowly scoped update 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?

There is no guidance on when to use this tool versus create_ticket, update_ticket_conversation, or update_ticket_time_entry, and no prerequisites or exclusions 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.

update_ticket_conversationUpdate ticket conversationA
Idempotent

Edit a note or reply. Only notes and replies created through the API/agents can be edited.

NameRequiredDescriptionDefault
bodyYesNew content (HTML allowed)
attachmentsNoLocal file paths to attach (max 15 files / 40 MB total). Only files inside the folders in FRESHSERVICE_ATTACHMENT_DIRS are allowed; attachments are refused until that is set
conversation_idYesConversation (reply/note) ID

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare mutation (readOnlyHint=false), idempotency and non-destructiveness, so the description rightly focuses on the editability restriction, which is genuinely additive. It does not say whether body replaces existing content wholesale, nor what error/response results from attempting to edit a non-API note, which are the details an agent would still need.

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, the action first and the restriction second; nothing is redundant or padded.

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

Completeness3/5

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

With full schema coverage, annotations and an output schema, the structured data carries most of the load, and the description adds the one non-obvious eligibility rule. Still missing is any indication of replace-vs-merge semantics or failure behavior, which matters for an edit 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 100%, and the schema already documents body as HTML content, attachments constraints (15 files / 40 MB, FRESHSERVICE_ATTACHMENT_DIRS) and conversation_id. The description adds nothing about parameters, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Edit') and resource ('a note or reply'), which clearly separates it from the create-side siblings send_ticket_reply, create_ticket_note and delete_ticket_conversation. It does not name those siblings, so differentiation is implied rather than explicit.

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 eligibility constraint ('Only notes and replies created through the API/agents can be edited') gives a real precondition, but there is no guidance on when to edit versus delete-and-recreate, and no mention of what to do for older/human-authored notes other than that they cannot be edited.

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

update_ticket_time_entryUpdate ticket time entryC
Idempotent

Update a time entry on a ticket. Time entry fields: time_spent ('hh:mm'), note, agent_id, billable, executed_at (ISO-8601), timer_running, task_id, custom_fields.

NameRequiredDescriptionDefault
ticket_idYesTicket ID
time_entry_idYesTime entry ID
time_entry_fieldsYesTime entry fields: time_spent ('hh:mm'), note, agent_id, billable, executed_at (ISO-8601), timer_running, task_id, custom_fields

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — it never explains partial-update semantics (whether omitted fields are preserved or cleared), whether updates are reversible, or any permission requirements. For a mutation tool this is a meaningful gap even with annotations present.

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 followed by the field inventory; no filler. The only inefficiency is that the second sentence duplicates the nested object's schema description rather than adding new 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?

With an output schema, full parameter coverage and annotations present, most of the structural burden is borne elsewhere. What remains missing is an explanation of update semantics (partial vs full replacement) and any side effects such as timer state changes, which an agent would need before invoking a 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 100%, so the schema already documents all three parameters, including the nested time_entry_fields list. The description reproduces the field list verbatim without adding format nuance beyond the 'hh:mm' and ISO-8601 hints already in the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Update a time entry on a ticket') that an agent can map directly onto the update_ticket_time_entry name and distinguish from create_ticket_time_entry / delete_ticket_time_entry siblings. It stops short of explicitly differentiating itself from those siblings in text, but the intent 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 gives no guidance on when to call this versus create_ticket_time_entry, view_ticket_time_entry, or delete_ticket_time_entry, and no prerequisites (e.g. that ticket_id and time_entry_id must already exist). The agent must infer usage entirely 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.

view_ticket_time_entryView ticket time entryB
Read-onlyIdempotent

Get one time entry on a ticket.

NameRequiredDescriptionDefault
ticket_idYesTicket ID
time_entry_idYesTime entry ID

Output Schema

NameRequiredDescription

No output parameters

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, destructiveHint=false, and openWorldHint=true, so the safety profile is clear without the description. The description adds no further behavioral context such as not-found handling or permissions, but it does not contradict the annotations.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It states the core operation immediately and is appropriately sized for a simple two-parameter read tool.

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 tool has rich annotations, 100% schema coverage, and an output schema, so the description need not explain return values or safety. It is nearly complete for a simple retrieval tool, though it could briefly clarify its relationship to list_ticket_time_entries.

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%, with both required parameters documented in the schema. The description does not add meaning beyond the schema, such as how ticket_id and time_entry_id relate or where to obtain them, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Get one time entry on a ticket.' The word 'one' implies retrieval of a single entry rather than a list, which subtly distinguishes it from list_ticket_time_entries, but it does not name that sibling 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?

The description provides no guidance on when to use this tool versus alternatives such as list_ticket_time_entries, update_ticket_time_entry, or delete_ticket_time_entry. An agent must infer that this is the single-record lookup path from the name and required IDs alone.

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. 76 tool updatesv2.1.0
    • First observedadd_requester_to_group
    • First observedconvert_requester_to_agent
    • First observedcreate_agent
    • First observedcreate_child_ticket
    • First observedcreate_group
    • First observedcreate_requester
    • First observedcreate_requester_group
    • First observedcreate_service_request
    • First observedcreate_solution_article
    • First observedcreate_solution_category
    • First observedcreate_solution_folder
    • First observedcreate_ticket
    • First observedcreate_ticket_note
    • First observedcreate_ticket_time_entry
    • First observeddeactivate_agent
    • First observeddeactivate_requester
    • First observeddelete_group
    • First observeddelete_requester_group
    • First observeddelete_solution_article
    • First observeddelete_solution_category
    • First observeddelete_solution_folder
    • First observeddelete_ticket
    • First observeddelete_ticket_conversation
    • First observeddelete_ticket_time_entry
    • First observedfilter_agents
    • First observedfilter_requesters
    • First observedfilter_tickets
    • First observedget_agent
    • First observedget_agent_fields
    • First observedget_agent_group
    • First observedget_all_agent_groups
    • First observedget_all_agents
    • First observedget_all_requester_groups
    • First observedget_all_requesters
    • First observedget_all_solution_category
    • First observedget_list_of_solution_article
    • First observedget_list_of_solution_folder
    • First observedget_requested_items
    • First observedget_requester
    • First observedget_requester_group
    • First observedget_service_item
    • First observedget_solution_article
    • First observedget_solution_category
    • First observedget_solution_folder
    • First observedget_ticket_by_id
    • First observedget_ticket_fields
    • First observedget_tickets
    • First observedlist_all_requester_fields
    • First observedlist_all_ticket_conversation
    • First observedlist_requester_group_members
    • First observedlist_roles
    • First observedlist_service_catalog_categories
    • First observedlist_service_items
    • First observedlist_solution_subfolders
    • First observedlist_ticket_activities
    • First observedlist_ticket_sources
    • First observedlist_ticket_time_entries
    • First observedpublish_solution_article
    • First observedreactivate_agent
    • First observedreactivate_requester
    • First observedremove_requester_from_group
    • First observedrestore_ticket
    • First observedsearch_service_items
    • First observedsearch_solution_articles
    • First observedsend_ticket_reply
    • First observedupdate_agent
    • First observedupdate_group
    • First observedupdate_requester
    • First observedupdate_requester_group
    • First observedupdate_solution_article
    • First observedupdate_solution_category
    • First observedupdate_solution_folder
    • First observedupdate_ticket
    • First observedupdate_ticket_conversation
    • First observedupdate_ticket_time_entry
    • First observedview_ticket_time_entry

TDQS

C2.9/5.0

Scored across 76 tools

Disambiguation4/5

Most tools are separated by resource and action (agent vs requester vs ticket vs solution), and descriptions clarify list/search/get variants. A few boundaries are fuzzy—e.g. create_group is an agent group while requester groups are explicitly prefixed, and solution folder/article listing uses several get/list patterns—but tools are not broadly indistinguishable.

Naming Consistency3/5

Names are all snake_case and generally verb_noun, but the verb vocabulary is inconsistent: get_all_agents vs list_roles vs filter_agents, get_list_of_solution_folder vs list_solution_subfolders, and singular get_all_solution_category. The pattern is readable but not predictable enough for a top score.

Tool Count1/5

76 tools is far beyond the 3–15 well-scoped range and exceeds the 50+ extreme-mismatch threshold. Even for a broad ITSM product, this surface should be split or namespaced into smaller MCP servers.

Completeness4/5

Core service-desk resources have strong lifecycle coverage: tickets (create/update/delete/restore, conversations, time entries), agents/requesters (create/update/deactivate/reactivate), groups (CRUD), and knowledge base (CRUD/search/publish). Gaps remain around admin CRUD for service catalog items and broader ITSM modules such as changes, problems, and assets, but the apparent service-desk scope is largely covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers