Skip to main content
Glama

Freshdesk MCP by usefulapi

Server Details

Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
82.8% over 65 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools target a distinct resource and action, and add_note vs reply_ticket is clearly explained as internal vs public communication. The main ambiguity is between list_* and search_* for tickets and contacts, since both retrieve records through overlapping mechanisms, though the descriptions do clarify the difference.

Naming Consistency5/5

Every tool follows the same freshdesk_ prefix and consistent snake_case verb_noun pattern (create_, get_, list_, update_, search_, add_, reply_). This is highly predictable and easy to parse.

Tool Count4/5

At 19 tools, the set is slightly above the typical 3-15 range but remains reasonable for a multi-entity helpdesk API covering tickets, contacts, companies, agents, and groups. Each tool maps to a distinct resource/action, though some read operations could potentially be consolidated.

Completeness3/5

Core ticket and contact workflows are well covered with create, get, list, update, search, reply, and note operations. However, notable gaps remain: companies lack update/delete, agents and groups are read-only, and no resource exposes delete operations, which limits full lifecycle coverage.

Available Tools

19 tools
freshdesk_add_noteAdd note to ticketA
Destructive
Inspect

Add a note to a ticket. Notes are internal (private) by default; set private: false for a public note. Freshdesk REST: POST /tickets/{id}/notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ticket id to add a note to.
bodyYesThe note content, HTML (required).
privateNoWhether the note is internal/private (default true). Set false for a public note.
notify_emailsNoAgent emails to notify about this note.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations supply only destructiveHint=true, and the description does add the meaningful default-privacy behavior plus the underlying REST call. But the privacy default is also already stated in the schema for `private`, and the description says nothing about notifying agents, permissions required, or what the mutation affects.

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, followed by the one non-obvious behavioral caveat and the endpoint. No filler or 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?

For a four-parameter mutation tool with no output schema, the description plus the 100%-covered schema gives an agent enough to call it correctly. Minor gaps remain around notify_emails side effects and whether the note triggers customer-visible notifications.

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 (id, body, private, notify_emails) are fully documented in the schema. The description's private/default remark duplicates the schema text and adds no format or constraint detail beyond it; 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+resource ('Add a note to a ticket') and a clear scope statement about default privacy. It implies a distinction from the public-reply sibling but never names freshdesk_reply_ticket, so sibling differentiation is left to inference.

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

Usage Guidelines3/5

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

The description conveys the key usage condition (internal by default; set private:false for a public note), which implicitly separates this from reply-ticket workflows. However, it never states when to use this tool versus freshdesk_reply_ticket, nor any prerequisites or exclusions.

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

freshdesk_create_companyCreate companyC
Destructive
Inspect

Create a company. name is required. Freshdesk REST: POST /companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe company name (required).
noteNoA note about the company.
domainsNoEmail domains associated with the company.
descriptionNoFreeform description / notes.
custom_fieldsNoCustom field values, keyed by field name.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations supply only destructiveHint=true, leaving the description to explain mutation behavior. Beyond restating that name is required and citing the REST route 'POST /companies', it says nothing about side effects, whether the company is returned, or duplicate-domain handling. For a write tool with thin annotations, this is a real gap.

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

Conciseness4/5

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

Three short sentences, front-loaded with purpose and the required field. The REST endpoint reference is arguably redundant, but nothing is bloated or buried.

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 no output schema, the description should say what a successful call returns and cover error conditions. It omits both, and gives no context on the destructiveHint=true annotation, leaving an agent under-informed for a mutation tool with a nested custom_fields object.

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 five parameters (including the nested custom_fields) are already documented in the schema. The description's only parameter note ('name is required') repeats what the schema's required array and field description already state, 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?

The description states a specific verb and resource ('Create a company'), which cleanly separates it from siblings like freshdesk_get_company and freshdesk_list_companies. It does not explicitly name an alternative, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus freshdesk_update_contact-style alternatives or how it relates to freshdesk_create_contact. No prerequisites, no mention of required permissions, no indication of what happens on duplicate names/domains.

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

freshdesk_create_contactCreate contactC
Destructive
Inspect

Create a contact. name is required. Freshdesk REST: POST /contacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe contact's full name (required).
tagsNoTags (array of strings).
emailNoEmail address.
phoneNoPhone number.
mobileNoMobile number.
addressNoPostal address.
job_titleNoJob title.
company_idNoId of the company the contact belongs to.
twitter_idNoTwitter handle.
descriptionNoFreeform description / notes.
custom_fieldsNoCustom field values, keyed by field name.
unique_external_idNoExternal id from your own system.

TDQS

C2.8/5.0
Behavior2/5

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

The annotations declare destructiveHint=true, so the write/mutation nature is already known. The description adds only the REST endpoint (POST /contacts) and no information about what gets created, whether duplicates are rejected, permissions needed, or failure behavior. It does not contradict the annotations, but it contributes little behavioral context.

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

Conciseness3/5

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

Very terse and front-loaded, but three clipped fragments read as under-specification rather than efficiency for a 12-parameter tool. The 'Freshdesk REST: POST /contacts' fragment offers little value to an agent already invoking the 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 12-parameter mutation tool with a nested custom_fields object and no output schema, the description is thin. It omits any mention of the nested object, duplicate/validation behavior, and the shape of the returned contact, leaving meaningful gaps for a create 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%, so all 12 parameters (including the nested custom_fields object) are already documented in the schema. The description adds nothing beyond restating that `name` is required, 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 and resource ('Create a contact'), which is clear and actionable. It does not distinguish itself from write siblings such as freshdesk_create_company or freshdesk_create_ticket, but the resource noun makes the target 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?

Only states that `name` is required. There is no guidance on when to use this versus freshdesk_update_contact, freshdesk_search_contacts, or freshdesk_create_company, and no prerequisites (e.g. duplicate handling, required auth scope) are mentioned.

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

freshdesk_create_ticketCreate ticketB
Destructive
Inspect

Create a ticket. subject and description (HTML) are required, plus a requester — provide at least one of email, requester_id, or phone. status: 2=Open, 3=Pending, 4=Resolved, 5=Closed. priority: 1=Low, 2=Medium, 3=High, 4=Urgent. source: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedbackwidget, 10=Outbound email. Freshdesk REST: POST /tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags (array of strings).
typeNoTicket type (e.g. Question, Incident).
emailNoRequester email (one of email/requester_id/phone required).
phoneNoRequester phone (one of email/requester_id/phone required).
sourceNoTicket source: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedbackwidget, 10=Outbound email.
statusNoTicket status: 2=Open, 3=Pending, 4=Resolved, 5=Closed.
subjectYesTicket subject (required).
group_idNoId of the group to assign the ticket to.
priorityNoTicket priority: 1=Low, 2=Medium, 3=High, 4=Urgent.
cc_emailsNoEmails to CC on the ticket.
company_idNoId of the company the ticket belongs to.
descriptionYesTicket description, HTML content (required).
requester_idNoRequester (contact) id (one of email/requester_id/phone required).
responder_idNoId of the agent the ticket is assigned to.
custom_fieldsNoCustom field values, keyed by field name.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations supply only destructiveHint=true, so the bar is lower, and the description does add the requester rule ('provide at least one of email/requester_id/phone') and the HTML requirement for description. It does not disclose side effects that matter for a create/side-effecting tool — e.g. whether the requester is notified, permission or auth requirements, or error behavior — so it is adequate but not rich.

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

Conciseness4/5

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

Front-loaded with 'Create a ticket' followed by the required fields, the requester rule, enums, and the endpoint in a compact block with no filler. The enum value lists are somewhat redundant with the schema, but they read as a deliberate quick-reference rather than padding.

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 15-parameter tool with a nested custom_fields object and no output schema, the description covers what an agent needs to route and call it: required fields, the requester one-of rule, and the common enums. The remaining optional params (tags, cc_emails, group_id, company_id, responder_id, type) are fully described in the schema, so nothing critical 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%, so every parameter is already documented; the 3 baseline applies. The description restates the status/priority/source enum mappings and the requester one-of rule, which duplicates rather than extends the schema, adding no new syntax or default semantics.

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

Purpose4/5

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

States a specific verb and resource ('Create a ticket') and the REST mapping (POST /tickets), which makes it genuinely distinguishable from siblings like update_ticket or list_tickets. However, it never explicitly differentiates itself from the other creation tools (create_contact, create_company) or from ticket-adders like reply_ticket/add_note, so it stops short of the explicit sibling routing a 5 would require.

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

Usage Guidelines2/5

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

The description offers no when-to-use or when-not-to-use guidance and names no alternatives. It explains which fields to supply, but that is parameter guidance, not tool-selection guidance — an agent is left to infer that this is the tool for opening a brand-new ticket.

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

freshdesk_get_agentGet agentA
Read-only
Inspect

Get a single agent by id. Freshdesk REST: GET /agents/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe agent id.

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint=true annotation already tells the agent this is a safe read with no side effects. The description adds the underlying REST mapping (GET /agents/{id}), which is useful orientation but not behavior an agent needs to invoke the call; it says nothing about error behavior for missing ids or rate limits.

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

Conciseness5/5

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

Two short sentences, zero filler, with the core action stated first and the endpoint detail trailing. Every clause carries information.

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

Completeness4/5

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

For a single-parameter read tool whose annotation already declares the safety profile, this covers what an agent needs. With no output schema, a brief note on the returned agent shape would have made it fully self-contained, but the gap is minor for a conventional REST GET.

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 'id' parameter is documented in the schema, so the description carries no extra burden here. Baseline 3 is appropriate since the description 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?

Names a specific verb and resource ('Get a single agent by id') and pins the scope to one record via the id, which implicitly separates it from the sibling freshdesk_list_agents. It stops short of explicitly naming that alternative, so it is clear but not sibling-differentiated by 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?

Usage is implied: the caller needs an agent id and wants one record rather than a list. There is no explicit statement of when to prefer this over freshdesk_list_agents, nor any note about prerequisites such as permissions or whether the agent must exist.

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

freshdesk_get_companyGet companyB
Read-only
Inspect

Get a single company by id. Freshdesk REST: GET /companies/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe company id.

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint=true annotation already establishes this is a safe read, so the bar is lower. The description adds the REST endpoint mapping (GET /companies/{id}) but says nothing about not-found behavior, error handling, or response shape, so it adds only modest value 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?

Two short sentences, front-loaded with the core action, with no wasted prose. The REST endpoint line is somewhat redundant with the tool name but is compact enough to be acceptable.

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 single-resource lookup with full schema coverage and no output schema, the description is essentially complete; the only minor gap is the absence of any guidance on selection versus the list/search 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 documented 'id' parameter, so the schema carries the semantics. The description's 'by id' merely restates what the schema already provides, making the baseline 3 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 specific verb+resource ('Get a single company by id'), which implicitly distinguishes it from freshdesk_list_companies and freshdesk_create_company via the singular 'a single company'. It does not name a sibling explicitly, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives such as freshdesk_list_companies or freshdesk_search_contacts. The only signal is the implied need for a known id, which the agent must infer.

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

freshdesk_get_contactGet contactB
Read-only
Inspect

Get a single contact by id. Freshdesk REST: GET /contacts/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe contact id.

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, so the safety profile is covered. The description adds the upstream REST mapping (GET /contacts/{id}), which is useful for cross-referencing API docs, but says nothing about failure behavior (e.g., unknown id) or the shape of the returned record.

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

Conciseness5/5

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

Two short sentences, front-loaded with the purpose and followed by the endpoint mapping. No filler or 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?

For a one-parameter read tool with annotations covering safety and no output schema, the description is nearly sufficient. It would be complete with a note on not-found behavior, but nothing essential is missing for correct invocation.

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

Parameters3/5

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

With a single parameter at 100% schema description coverage, the schema already documents 'id' fully. The description's 'by id' adds no format, range, or lookup semantics beyond it, 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 and resource ('Get a single contact by id'), which is unambiguous on its own. However, it never names or distinguishes itself from close siblings like freshdesk_list_contacts or freshdesk_search_contacts, leaving that differentiation to inference.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this versus list_contacts or search_contacts, or on any prerequisites. The only implicit cue is 'by id', which an agent must interpret as 'when you already know the contact id'.

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

freshdesk_get_ticketGet ticketB
Read-only
Inspect

Get a single ticket by id. Freshdesk REST: GET /tickets/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ticket id.
includeNoEmbed extra data, comma-separated: conversations, requester, company, stats.

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint annotation already covers the safety profile, so the bar is lower. The description adds only the underlying REST endpoint (GET /tickets/{id}), which confirms a plain read but discloses nothing about 404 behavior, rate limits, or the shape/size of the 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 short sentences, strictly front-loaded with the purpose and the id key. The REST endpoint reference is mildly redundant given the tool name but costs little.

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

Completeness3/5

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

For a low-complexity single-item read whose annotations cover safety, this is near-adequate. With no output schema, however, an agent gets no hint about returned fields or error cases, leaving a modest 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% – both id and the comma-separated include options (conversations, requester, company, stats) are fully documented in the schema. The description adds nothing about the include parameter or id format, 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 single ticket by id" states a specific verb (get) and resource (single ticket) with the retrieval key. It implicitly separates itself from list_tickets/search_tickets by saying "single ... by id", though it never names those siblings explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance is given beyond the trivial implication that you need a known id. It does not tell the agent when to prefer this over freshdesk_search_tickets or freshdesk_list_tickets, nor what to do on a miss.

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

freshdesk_list_agentsList agentsC
Read-only
Inspect

List/filter agents. Freshdesk REST: GET /agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-based).
emailNoFilter by email.
phoneNoFilter by phone number.
stateNoFilter by state: fulltime or occasional.
mobileNoFilter by mobile number.
per_pageNoResults per page (1-100, max 100, default 30).

TDQS

C2.9/5.0
Behavior2/5

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

readOnlyHint=true is already declared in annotations, so the safe-read profile is covered by structured data. The description adds only the endpoint mapping; it says nothing about default page size behavior, result caps, rate limits, or ordering, which are the behavioral facts 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.

Conciseness4/5

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

Two short sentences with the operation stated first and the endpoint reference second; nothing is redundant or padded. It is efficient, though borderline under-specified rather than genuinely tight.

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

Completeness3/5

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

For a zero-required-parameter list tool with no output schema and full schema coverage, the minimum is met: purpose, filters, and endpoint are all visible. What is missing is any note on total result behavior, default pagination, or sorting, which leaves the agent guessing about the shape of the result 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?

All 6 parameters are fully documented in the schema (100% coverage), including the enum values for state and the per_page bounds, so the schema carries the load. The description adds no filtering syntax or format detail beyond what is already present, making the baseline 3 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+resource ('List/filter agents') and even maps it to the Freshdesk REST endpoint GET /agents, so an agent knows exactly what operation this is. It doesn't explicitly distinguish itself from the sibling freshdesk_get_agent beyond the list-vs-get wording, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus freshdesk_get_agent or the other list tools, and no stated prerequisites, pagination limits, or conditions. The only context is the REST endpoint, which is descriptive rather than prescriptive.

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

freshdesk_list_companiesList companiesC
Read-only
Inspect

List companies. Freshdesk REST: GET /companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-based).
per_pageNoResults per page (1-100, max 100, default 30).

TDQS

C2.9/5.0
Behavior2/5

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

The readOnlyHint annotation already establishes this is a safe read operation, so the description needn't restate that. Beyond exposing the underlying REST endpoint (GET /companies), it discloses no return shape, pagination behavior, or default page size, adding almost nothing behavioral.

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 operation and free of filler. However, the endpoint sentence is arguably restatement rather than value-adding, keeping it just below the top mark.

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

Completeness3/5

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

For a simple paginated list tool with no output schema and a read-only annotation, this is minimally adequate. An agent can call it, but the description omits any note on pagination limits or default result count that would round out the picture.

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' fully documented including defaults and bounds, so the schema carries the parameter burden. The description adds nothing about pagination syntax or behavior beyond what the schema already provides, making the baseline 3 correct.

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

Purpose4/5

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

States a specific verb ('List') and resource ('companies'), which clearly separates it from freshdesk_get_company or freshdesk_create_company by operation. It stops short of explicitly naming siblings or scope limits, so the 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?

The description gives no indication of when to use this versus alternatives such as freshdesk_get_company (single company) or search. There is no context, prerequisite, or exclusion guidance at all.

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

freshdesk_list_contactsList contactsB
Read-only
Inspect

List/filter contacts. Freshdesk REST: GET /contacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-based).
emailNoFilter by email.
phoneNoFilter by phone number.
stateNoFilter by state: verified, unverified, blocked, or deleted.
mobileNoFilter by mobile number.
per_pageNoResults per page (1-100, max 100, default 30).
company_idNoFilter by company id.
updated_sinceNoOnly contacts updated after this ISO 8601 timestamp.

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe, non-mutating read, so the description needn't restate that. It adds the GET /contacts endpoint context, which is mildly useful for parity with the Freshdesk REST docs, but says nothing about pagination behavior, result ordering, or limits beyond what the schema already declares.

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 purpose is front-loaded ahead of the API reference note. The endpoint sentence earns its place only modestly, but there is no wasted prose.

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

Completeness3/5

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

For a read-only list tool with zero required params and a fully documented schema, the description is barely sufficient: an agent can call it, but it lacks any statement of return shape, default sorting, or pagination semantics, and no output schema exists to fill that gap. The missing list-vs-search routing against freshdesk_search_contacts is the most consequential hole.

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 eight filters (page, per_page, email, phone, mobile, state, company_id, updated_since) are already documented with types, ranges, and enum values. The description's bare 'filter' wording adds no syntax, combination, or precedence guidance beyond the schema, 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 plus resource ('List/filter contacts') that an agent can act on immediately, and the REST endpoint reference reinforces what it maps to. It stops short of distinguishing itself from the sibling freshdesk_search_contacts, so an agent still has to guess which of the two list/search tools 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 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 and no mention of alternatives. The most important omission is freshdesk_search_contacts, which overlaps heavily with 'List/filter contacts'; nothing in the description says when to prefer this endpoint over that one, or when the filters here are insufficient.

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

freshdesk_list_groupsList groupsA
Read-only
Inspect

List groups (agent groups tickets are routed to). Freshdesk REST: GET /groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-based).
per_pageNoResults per page (1-100, max 100, default 30).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds the underlying REST endpoint (GET /groups), which is marginally useful for mapping, but says nothing about pagination behavior or result shape beyond the schema.

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

Conciseness5/5

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

Two short sentences, zero waste, with the resource definition front-loaded before the endpoint detail.

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 parameterless read-only list tool with annotations covering the safety profile, the definition is nearly complete. The only minor gap is that no output schema exists and the description does not sketch the returned group fields.

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 and per_page fully documented including ranges and default. The description adds no parameter meaning beyond the schema, so the baseline of 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 (List) and resource (groups) and adds a clarifying gloss on what a group is: 'agent groups tickets are routed to.' No sibling tool operates on groups, so there is no ambiguity to resolve.

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

Usage 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; the description only says what the tool returns. The gloss about routing hints at relevance, but nothing tells the agent under which circumstances to call this versus the other list endpoints.

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

freshdesk_list_ticket_conversationsList ticket conversationsB
Read-only
Inspect

List the conversations (replies and notes) on a ticket. Freshdesk REST: GET /tickets/{id}/conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ticket id.
pageNoPage number for pagination (1-based).
per_pageNoResults per page (1-100, max 100, default 30).

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already establishes the safe-read profile, and the description usefully clarifies that the payload includes both replies and notes, which is not derivable from the name or annotations. It adds nothing about ordering, auth requirements, rate limits, or pagination beyond what the schema states.

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

Conciseness4/5

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

Two short sentences, front-loaded with the purpose; the second sentence pins the exact REST route. The endpoint reference is arguably redundant, but it costs little.

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

Completeness3/5

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

For a simple read-only list tool with full schema coverage and readOnlyHint, the essentials are present. However, with no output schema, the description omits any sense of the returned conversation shape, ordering, or pagination behavior, which an agent would need to consume the results.

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 id, page, and per_page are already fully documented with ranges and defaults. The description adds no additional parameter meaning, which is the expected baseline when 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 (List) and resource (conversations on a ticket), and clarifies scope by naming what conversations are (replies and notes). It does not differentiate itself from sibling get_ticket, which an agent might otherwise pick to inspect a ticket's thread.

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 framing, no prerequisite (e.g. ticket must exist), and no guidance on choosing this over get_ticket or list_tickets. Usage is only inferable from the verb itself.

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

freshdesk_list_ticketsList ticketsB
Read-only
Inspect

List/filter tickets (max page 300). Freshdesk REST: GET /tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-based).
emailNoFilter by requester email.
filterNoPredefined filter: new_and_my_open, watching, spam, or deleted.
includeNoEmbed extra data, comma-separated, e.g. "requester,stats,description".
order_byNoSort field: created_at, due_by, updated_at, or status.
per_pageNoResults per page (1-100, max 100, default 30).
company_idNoFilter by company id.
order_typeNoSort direction: asc or desc.
requester_idNoFilter by requester (contact) id.
updated_sinceNoOnly tickets updated after this ISO 8601 timestamp.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered structurally. The description adds the pagination ceiling ('max page 300') and the underlying REST endpoint (GET /tickets), which is modest but real context. It omits return shape, default page size, and rate-limit behavior.

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

Conciseness4/5

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

Two short sentences with the core purpose front-loaded and no padding. The trailing 'Freshdesk REST: GET /tickets' is borderline filler, but it does give an API mapping an agent could use.

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

Completeness3/5

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

For a 10-parameter read tool with no output schema, the description is thin: it never describes what a returned ticket looks like, what the default result set is, or how the 'include' embedding changes the response. The readOnly annotation and exhaustive schema compensate enough to keep this at minimum-viable rather than inadequate.

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 every one of the 10 parameters documented in the schema itself (including enum values and defaults for per_page). The description adds nothing about parameters, 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 concrete verb+resource combination ('List/filter tickets') that an agent can act on immediately. It does not differentiate itself from the sibling freshdesk_search_tickets, which is the closest alternative and would be the natural confusion point.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: no indication of when to prefer this over freshdesk_search_tickets, no mention of default behavior when no filter is supplied, and no prerequisites. The only guidance-like content is a pagination ceiling ('max page 300'), which is a constraint rather than usage direction.

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

freshdesk_reply_ticketReply to ticketA
Destructive
Inspect

Add a public reply to a ticket (sent to the requester). Freshdesk REST: POST /tickets/{id}/reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ticket id to reply to.
bodyYesThe reply content, HTML (required).
cc_emailsNoEmails to CC on the reply.
bcc_emailsNoEmails to BCC on the reply.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations supply only destructiveHint=true, leaving most behavior undocumented. The description usefully discloses that the reply is public and delivered to the requester, but says nothing about notification side effects, permission requirements, or why the operation is flagged destructive. Adds some value, but not rich behavioral context.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and visibility before the API detail. The REST path is low-value for an MCP agent but costs little; there is no padding or repetition.

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 4-parameter, 100%-documented write tool with no output schema, the description covers action, audience, and endpoint. The main omission is any hint of what the call returns or how the requester is notified, which is minor at this complexity.

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 id, body, cc_emails and bcc_emails are already fully documented in the schema. The description adds no syntax, format, or constraint detail beyond what the schema provides, making the baseline 3 correct.

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 ('Add a public reply to a ticket') and immediately disambiguates scope with '(sent to the requester)', which separates it from the sibling freshdesk_add_note (internal note). An agent can pick between the two 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 Guidelines3/5

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

The parenthetical about the reply being sent to the requester implies when this is appropriate (customer-facing communication), but no alternative is named and no when-not condition is given. Usage must be inferred rather than read.

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

freshdesk_search_contactsSearch contactsA
Read-only
Inspect

Search contacts with the Freshdesk query DSL. The query VALUE is wrapped in double quotes automatically. Examples: name:'ada', email:'ada@example.com', company_id:123. Freshdesk REST: GET /search/contacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-10; search endpoints return 30 results per page and ignore per_page).
queryYesFreshdesk search query, e.g. "company_id:123" (do NOT add surrounding quotes yourself — they are added for you).

TDQS

A3.7/5.0
Behavior4/5

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

readOnlyHint=true already establishes the safety profile, and the description adds a genuinely non-obvious behavioral trait: the query VALUE is auto-wrapped in double quotes, so the agent must not quote it itself. It also names the underlying REST call. It stops short of noting rate limits or result-set 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?

Three short sentences, front-loaded with what the tool does and immediately followed by the auto-quoting constraint and examples. Little waste; the trailing REST endpoint reference is mildly redundant but cheap.

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 read-only, two-param search with no output schema, the description covers mechanism, formatting caveat, and examples. Only the missing routing against freshdesk_list_contacts keeps it from being fully complete.

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

Parameters3/5

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

Schema coverage is 100%, so both `query` and `page` are already documented in the schema, including the same no-manual-quoting rule. The description's examples add minor value but largely duplicate the schema's own description, 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 (Search) and resource (contacts) plus the mechanism (Freshdesk query DSL), which is far more than a restated title. It does not, however, name the nearest sibling freshdesk_list_contacts or explain how searching differs from listing, so an agent must infer the distinction.

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 examples (`name:'ada'`, `email:'...'`, `company_id:123`) show intended usage patterns and imply this is a filtered lookup, but there is no explicit when-to-use guidance, no statement of when to prefer list_contacts, and no prerequisites or limits called out.

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

freshdesk_search_ticketsSearch ticketsA
Read-only
Inspect

Search tickets with the Freshdesk query DSL. The query VALUE is wrapped in double quotes automatically. Examples: status:2 AND priority:3, created_at:>'2026-01-01', agent_id:123, group_id:45, tag:'urgent'. Freshdesk REST: GET /search/tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-10; search endpoints return 30 results per page and ignore per_page).
queryYesFreshdesk search query, e.g. "priority:3 AND status:2" (do NOT add surrounding quotes yourself — they are added for you).

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint=true is consistent with a search tool, so there is no contradiction. The description adds genuine behavioral detail beyond the annotations: the query value is auto-wrapped in double quotes and the underlying REST call is exposed. It omits rate limits (Freshdesk search is heavily throttled) and result-cap behavior, which would have pushed it higher.

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 purpose, followed by the auto-quoting rule, a compact set of examples, and the endpoint mapping. Every sentence carries information an agent needs and there is 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?

For a two-parameter, read-only search tool with no output schema, the definition covers the query dialect, quoting behavior, and pagination constraints (via schema). It could still note result caps or throttling, but nothing required to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns an extra point by supplying four DSL example shapes (status/priority AND, created_at range operator, agent_id, group_id, tag) where the schema documents only one. It also reinforces the auto-quoting rule for the query parameter.

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

Purpose4/5

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

States a specific verb and resource ('Search tickets') and immediately scopes it to the Freshdesk query DSL, plus maps it to GET /search/tickets. The distinction from the sibling freshdesk_list_tickets is left implicit rather than stated, which keeps this just short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the DSL framing and the examples, but the description never says when to choose search over freshdesk_list_tickets, nor what happens when a query is too broad. No explicit when/when-not guidance or alternatives are named.

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

freshdesk_update_contactUpdate contactA
Destructive
Inspect

Update fields on an existing contact. Only provided fields are changed. Freshdesk REST: PUT /contacts/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe contact id to update.
nameNoThe contact's full name.
tagsNoTags (array of strings).
emailNoEmail address.
phoneNoPhone number.
mobileNoMobile number.
addressNoPostal address.
job_titleNoJob title.
company_idNoId of the company the contact belongs to.
descriptionNoFreeform description / notes.
custom_fieldsNoCustom field values, keyed by field name.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the mutation risk profile is partially covered. The description adds genuinely useful semantics not in the annotations — that unlisted fields are left untouched (a true PATCH, not a replace) — but is silent on permissions/auth requirements, side effects on linked tickets or companies, and reversibility of a destructive update.

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

Conciseness5/5

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

Three short sentences, fully front-loaded: action first, partial-update semantics second, endpoint mapping last. No filler and nothing restated from the title.

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

Completeness4/5

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

For an 11-param destructive mutation with no output schema, the description covers what it changes, how it changes it, and the underlying API route; annotations cover the destructive classification. Only error behaviour and permission prerequisites are left unspecified, which is a minor 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% across all 11 parameters, so the schema already documents id, name, tags, custom_fields, etc. The description adds nothing parameter-level beyond reaffirming that only supplied fields change, which is the baseline 3 scenario.

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 fields on an existing contact') and adds a precise scope qualifier that the sibling tools lack. It does not explicitly distinguish itself from freshdesk_create_contact or freshdesk_update_ticket, but the resource/operation pairing is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: 'existing contact' signals this is not a create operation, and the partial-update statement tells the caller they need not supply all fields. There is no explicit when-to-use/when-not guidance and no mention of alternatives such as freshdesk_create_contact for new records.

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

freshdesk_update_ticketUpdate ticketB
Destructive
Inspect

Update fields on an existing ticket. Only provided fields are changed. status: 2=Open, 3=Pending, 4=Resolved, 5=Closed. priority: 1=Low, 2=Medium, 3=High, 4=Urgent. Freshdesk REST: PUT /tickets/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ticket id to update.
tagsNoTags (array of strings).
typeNoTicket type.
sourceNoTicket source: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedbackwidget, 10=Outbound email.
statusNoTicket status: 2=Open, 3=Pending, 4=Resolved, 5=Closed.
subjectNoTicket subject.
group_idNoId of the group to assign the ticket to.
priorityNoTicket priority: 1=Low, 2=Medium, 3=High, 4=Urgent.
company_idNoId of the company the ticket belongs to.
descriptionNoTicket description, HTML content.
requester_idNoRequester (contact) id.
responder_idNoId of the agent the ticket is assigned to.
custom_fieldsNoCustom field values, keyed by field name.

TDQS

B3.2/5.0
Behavior3/5

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

The annotation destructiveHint=true is not elaborated on — no warning that changes may be irreversible, and no mention of permissions or side effects. The description does add genuine context beyond annotations with the partial-update semantics ('Only provided fields are changed') and the REST endpoint, but omits the destructive framing an agent needs.

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 compact sentences with the core action front-loaded and no filler. The status/priority legends duplicate the schema slightly, which is the only minor waste.

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

Completeness3/5

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

For a 13-parameter mutation tool with no output schema and only a destructiveHint annotation, the description omits auth/permission requirements, reversibility, and error behavior. It is adequate for calling the tool but leaves behavioral gaps that structured fields do not fill.

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 13 parameters are already documented, including the status/priority/source enum legends. The description merely repeats the status and priority mappings, adding no syntax, format, or constraint information 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 fields on an existing ticket') and adds the partial-update rule, which distinguishes it from create_ticket and get_ticket implicitly. It does not explicitly name a sibling, but the operation is unmistakable.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no routing to alternatives. Given siblings like reply_ticket and add_note that also mutate a ticket's conversation, an agent gets no signal about which mutation path to choose.

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. 19 tool updates
    • Changedfreshdesk_add_note1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_create_company1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_create_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_create_ticket1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_get_agent1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_get_company1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_get_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_get_ticket1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_list_agents1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_list_companies1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_list_contacts1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_list_groups1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_list_ticket_conversations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_list_tickets1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_reply_ticket1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_search_contacts1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_search_tickets1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_update_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfreshdesk_update_ticket1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 19 tool updates
    • First observedfreshdesk_add_note
    • First observedfreshdesk_create_company
    • First observedfreshdesk_create_contact
    • First observedfreshdesk_create_ticket
    • First observedfreshdesk_get_agent
    • First observedfreshdesk_get_company
    • First observedfreshdesk_get_contact
    • First observedfreshdesk_get_ticket
    • First observedfreshdesk_list_agents
    • First observedfreshdesk_list_companies
    • First observedfreshdesk_list_contacts
    • First observedfreshdesk_list_groups
    • First observedfreshdesk_list_ticket_conversations
    • First observedfreshdesk_list_tickets
    • First observedfreshdesk_reply_ticket
    • First observedfreshdesk_search_contacts
    • First observedfreshdesk_search_tickets
    • First observedfreshdesk_update_contact
    • First observedfreshdesk_update_ticket

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to search and read tickets and their conversations, contacts, companies, agents, groups, knowledge base articles, SLA policies, business hours and canned responses, and, on explicit request, create and update records, reply to tickets, add notes, and perform confirmed deletes, merges or conversions. It is stateless and multi-tenant, taking per-request credentials via HTTP headers so every action is performed as the designated agent.
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.