MCP server for Freshdesk ticketing system integration with support for tickets, contacts, groups, canned responses, and Hungama API integration
This server presents moderate definition quality with significant gaps. All three tools are explicitly registered with FastMCP and have basic descriptions, but parameter descriptions are sparse or missing entirely. The get_ticket_fields tool has no input parameters and a minimal description (11 chars). The get_tickets tool has two well-described parameters with numeric constraints. The create_ticket tool has comprehensive parameter schemas with descriptions for most fields, but the source code is incomplete (cut off mid-function). Error handling is present but minimal, tools return {'error': ...} dicts without recovery guidance. Overall naming is clear and follows verb_noun convention (get_*, create_*), but descriptions lack the depth (50-200 char target) needed for optimal LLM decision-making. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. This server lands solidly in the C/D boundary, functional but with missed opportunities for clarity and robustness.
Create a ticket in Freshdesk
Get ticket fields from Freshdesk.
Get tickets from Freshdesk with pagination support.
get_ticket_fields description is 11 characters ('Get ticket fields from Freshdesk.'), below 20-char minimum. Lacks context for when/why to call it vs other tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. LLMs cannot infer safety/idempotency from names alone. create_ticket should be marked destructiveHint=true or at minimum noted as a side-effect operation in description.
Error handling returns plain dicts ({'error': '...'}) without recovery guidance. E.g. 'Failed to fetch tickets: <raw exception>' does not tell the LLM whether to retry, call a different tool, or ask the user. Violates pattern:recovery-guide.
create_ticket source code is truncated (ends mid-function). Cannot verify complete implementation, parameter validation, or return schema. Conservative score capped at 73 due to incomplete visibility.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | <=2025-11-25 | v2 |
No output schema documented for any tool. get_tickets returns a dict with 'tickets' and 'pagination' keys, but create_ticket's return type is unknown (source truncated). LLMs need documented return structures to plan downstream calls.
create_ticket accepts Union[int, str] for source, priority, status but only documents enum values in descriptions. No explicit enum constraint in schema. LLMs may pass invalid string values like 'low' instead of 'LOW' or 1.
get_tickets per_page defaults to 30 but has max 100. No minimum bound specified. LLMs could pass 0 or negative; validation occurs inside the function but error message is generic ('Page size must be between 1 and 100').