Freshdesk MCP server. Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"freshdesk": {
"url": "https://freshdesk.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
freshdesk_list_tickets | read | List tickets List/filter tickets (max page 300). Freshdesk REST: GET /tickets. |
freshdesk_get_ticket | read | Get ticket Get a single ticket by id. Freshdesk REST: GET /tickets/{id}. |
freshdesk_search_tickets | read | Search tickets 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. |
freshdesk_list_ticket_conversations | read | List ticket conversations List the conversations (replies and notes) on a ticket. Freshdesk REST: GET /tickets/{id}/conversations. |
freshdesk_list_contacts | read | List contacts List/filter contacts. Freshdesk REST: GET /contacts. |
freshdesk_get_contact | read | Get contact Get a single contact by id. Freshdesk REST: GET /contacts/{id}. |
freshdesk_search_contacts | read | Search contacts Search contacts with the Freshdesk query DSL. The query VALUE is wrapped in double quotes automatically. Examples: `name:'ada'`, `email:'[email protected]'`, `company_id:123`. Freshdesk REST: GET /search/contacts. |
freshdesk_list_companies | read | List companies List companies. Freshdesk REST: GET /companies. |
freshdesk_get_company | read | Get company Get a single company by id. Freshdesk REST: GET /companies/{id}. |
freshdesk_list_agents | read | List agents List/filter agents. Freshdesk REST: GET /agents. |
freshdesk_get_agent | read | Get agent Get a single agent by id. Freshdesk REST: GET /agents/{id}. |
freshdesk_list_groups | read | List groups List groups (agent groups tickets are routed to). Freshdesk REST: GET /groups. |
freshdesk_create_ticket | write | Create ticket 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. |
freshdesk_update_ticket | write | Update ticket 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}. |
freshdesk_reply_ticket | write | Reply to ticket Add a public reply to a ticket (sent to the requester). Freshdesk REST: POST /tickets/{id}/reply. |
freshdesk_add_note | write | Add note to ticket 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. |
freshdesk_create_contact | write | Create contact Create a contact. `name` is required. Freshdesk REST: POST /contacts. |
freshdesk_update_contact | write | Update contact Update fields on an existing contact. Only provided fields are changed. Freshdesk REST: PUT /contacts/{id}. |
freshdesk_create_company | write | Create company Create a company. `name` is required. Freshdesk REST: POST /companies. |
freshdesk_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. | |
freshdesk_upgrade | Upgrade to Pro (unlimited) Subscribe to Pro for unlimited tool calls, monthly ($9) or yearly ($90). Returns a Stripe Checkout link. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Pro | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.