Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The ticket id to add a note to.
The note content, HTML (required).
Whether the note is internal/private (default true). Set false for a public note.
Agent emails to notify about this note.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
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.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The ticket id to add a note to. |
| body* | string | The note content, HTML (required). |
| private | boolean | Whether the note is internal/private (default true). Set false for a public note. |
| notify_emails | array | Agent emails to notify about this note. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"body"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ticket id to add a note to."
},
"body": {
"type": "string",
"description": "The note content, HTML (required)."
},
"private": {
"type": "boolean",
"description": "Whether the note is internal/private (default true). Set false for a public note."
},
"notify_emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Agent emails to notify about this note."
}
}
}Create a company. `name` is required. Freshdesk REST: POST /companies.
| Argument | Type | Description |
|---|---|---|
| name* | string | The company name (required). |
| note | string | A note about the company. |
| domains | array | Email domains associated with the company. |
| description | string | Freeform description / notes. |
| custom_fields | object | Custom field values, keyed by field name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The company name (required)."
},
"note": {
"type": "string",
"description": "A note about the company."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Email domains associated with the company."
},
"description": {
"type": "string",
"description": "Freeform description / notes."
},
"custom_fields": {
"type": "object",
"description": "Custom field values, keyed by field name.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Create a contact. `name` is required. Freshdesk REST: POST /contacts.
| Argument | Type | Description |
|---|---|---|
| name* | string | The contact's full name (required). |
| tags | array | Tags (array of strings). |
| string | Email address. | |
| phone | string | Phone number. |
| mobile | string | Mobile number. |
| address | string | Postal address. |
| job_title | string | Job title. |
| company_id | integer | Id of the company the contact belongs to. |
| twitter_id | string | Twitter handle. |
| description | string | Freeform description / notes. |
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.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tags (array of strings). |
| type | string | Ticket type (e.g. Question, Incident). |
| string | Requester email (one of email/requester_id/phone required). | |
| phone | string | Requester phone (one of email/requester_id/phone required). |
| source | integer | Ticket source: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedbackwidget, 10=Outbound email. |
| status | integer | Ticket status: 2=Open, 3=Pending, 4=Resolved, 5=Closed. |
| subject* | string | Ticket subject (required). |
| group_id | integer | Id of the group to assign the ticket to. |
Get a single agent by id. Freshdesk REST: GET /agents/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The agent id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The agent id."
}
}
}Get a single company by id. Freshdesk REST: GET /companies/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The company id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The company id."
}
}
}Get a single contact by id. Freshdesk REST: GET /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The contact id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The contact id."
}
}
}Get a single ticket by id. Freshdesk REST: GET /tickets/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The ticket id. |
| include | string | Embed extra data, comma-separated: conversations, requester, company, stats. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ticket id."
},
"include": {
"type": "string",
"description": "Embed extra data, comma-separated: conversations, requester, company, stats."
}
}
}List/filter agents. Freshdesk REST: GET /agents.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| string | Filter by email. | |
| phone | string | Filter by phone number. |
| state | string | Filter by state: fulltime or occasional. |
| mobile | string | Filter by mobile number. |
| per_page | integer | Results per page (1-100, max 100, default 30). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number for pagination (1-based)."
},
"email": {
"type": "string",
"description": "Filter by email."
},
"phone": {
"type": "string",
"description": "Filter by phone number."
},
"state": {
"enum": [
"fulltime",
"occasional"
],
"type": "string",
"description": "Filter by state: fulltime or occasional."
},
"mobile": {
"type": "string",
"description": "Filter by mobile number."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, max 100, default 30)."
}
}
}List companies. Freshdesk REST: GET /companies.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| per_page | integer | Results per page (1-100, max 100, default 30). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number for pagination (1-based)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, max 100, default 30)."
}
}
}List/filter contacts. Freshdesk REST: GET /contacts.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| string | Filter by email. | |
| phone | string | Filter by phone number. |
| state | string | Filter by state: verified, unverified, blocked, or deleted. |
| mobile | string | Filter by mobile number. |
| per_page | integer | Results per page (1-100, max 100, default 30). |
| company_id | integer | Filter by company id. |
| updated_since | string | Only contacts updated after this ISO 8601 timestamp. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number for pagination (1-based)."
},
"email": {
"type": "string",
"description": "Filter by email."
},
"phone": {
"type": "string",
"description": "Filter by phone number."
},
"state": {
"enum": [
"verified",
"unverified",
"blocked",
"deleted"
],
"type": "string",
"description": "Filter by state: verified, unverified, blocked, or deleted."
},
"mobile": {
"type": "string",
"description": "Filter by mobile number."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, max 100, default 30)."
},
"company_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by company id."
},
"updated_since": {
"type": "string",
"description": "Only contacts updated after this ISO 8601 timestamp."
}
}
}List groups (agent groups tickets are routed to). Freshdesk REST: GET /groups.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| per_page | integer | Results per page (1-100, max 100, default 30). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number for pagination (1-based)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, max 100, default 30)."
}
}
}List the conversations (replies and notes) on a ticket. Freshdesk REST: GET /tickets/{id}/conversations.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The ticket id. |
| page | integer | Page number for pagination (1-based). |
| per_page | integer | Results per page (1-100, max 100, default 30). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ticket id."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number for pagination (1-based)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, max 100, default 30)."
}
}
}List/filter tickets (max page 300). Freshdesk REST: GET /tickets.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| string | Filter by requester email. | |
| filter | string | Predefined filter: new_and_my_open, watching, spam, or deleted. |
| include | string | Embed extra data, comma-separated, e.g. "requester,stats,description". |
| order_by | string | Sort field: created_at, due_by, updated_at, or status. |
| per_page | integer | Results per page (1-100, max 100, default 30). |
| company_id | integer | Filter by company id. |
| order_type | string | Sort direction: asc or desc. |
| requester_id | integer | Filter by requester (contact) id. |
| updated_since |
Add a public reply to a ticket (sent to the requester). Freshdesk REST: POST /tickets/{id}/reply.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The ticket id to reply to. |
| body* | string | The reply content, HTML (required). |
| cc_emails | array | Emails to CC on the reply. |
| bcc_emails | array | Emails to BCC on the reply. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"body"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ticket id to reply to."
},
"body": {
"type": "string",
"description": "The reply content, HTML (required)."
},
"cc_emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Emails to CC on the reply."
},
"bcc_emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Emails to BCC on the reply."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-10; search endpoints return 30 results per page and ignore per_page). |
| query* | string | Freshdesk search query, e.g. "company_id:123" (do NOT add surrounding quotes yourself — they are added for you). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Page number (1-10; search endpoints return 30 results per page and ignore per_page)."
},
"query": {
"type": "string",
"description": "Freshdesk search query, e.g. \"company_id:123\" (do NOT add surrounding quotes yourself — they are added for you)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-10; search endpoints return 30 results per page and ignore per_page). |
| query* | string | Freshdesk search query, e.g. "priority:3 AND status:2" (do NOT add surrounding quotes yourself — they are added for you). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Page number (1-10; search endpoints return 30 results per page and ignore per_page)."
},
"query": {
"type": "string",
"description": "Freshdesk search query, e.g. \"priority:3 AND status:2\" (do NOT add surrounding quotes yourself — they are added for you)."
}
}
}Update fields on an existing contact. Only provided fields are changed. Freshdesk REST: PUT /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The contact id to update. |
| name | string | The contact's full name. |
| tags | array | Tags (array of strings). |
| string | Email address. | |
| phone | string | Phone number. |
| mobile | string | Mobile number. |
| address | string | Postal address. |
| job_title | string | Job title. |
| company_id | integer | Id of the company the contact belongs to. |
| description | string | Freeform description / notes. |
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}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The ticket id to update. |
| tags | array | Tags (array of strings). |
| type | string | Ticket type. |
| source | integer | Ticket source: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedbackwidget, 10=Outbound email. |
| status | integer | Ticket status: 2=Open, 3=Pending, 4=Resolved, 5=Closed. |
| subject | string | Ticket subject. |
| group_id | integer | Id of the group to assign the ticket to. |
| priority | integer | Ticket priority: 1=Low, 2=Medium, 3=High, 4=Urgent. |
| company_id | integer | Id of the company the ticket belongs to. |
| custom_fields |
| object |
| Custom field values, keyed by field name. |
| unique_external_id | string | External id from your own system. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The contact's full name (required)."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags (array of strings)."
},
"email": {
"type": "string",
"description": "Email address."
},
"phone": {
"type": "string",
"description": "Phone number."
},
"mobile": {
"type": "string",
"description": "Mobile number."
},
"address": {
"type": "string",
"description": "Postal address."
},
"job_title": {
"type": "string",
"description": "Job title."
},
"company_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the company the contact belongs to."
},
"twitter_id": {
"type": "string",
"description": "Twitter handle."
},
"description": {
"type": "string",
"description": "Freeform description / notes."
},
"custom_fields": {
"type": "object",
"description": "Custom field values, keyed by field name.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"unique_external_id": {
"type": "string",
"description": "External id from your own system."
}
}
}| priority | integer | Ticket priority: 1=Low, 2=Medium, 3=High, 4=Urgent. |
| cc_emails | array | Emails to CC on the ticket. |
| company_id | integer | Id of the company the ticket belongs to. |
| description* | string | Ticket description, HTML content (required). |
| requester_id | integer | Requester (contact) id (one of email/requester_id/phone required). |
| responder_id | integer | Id of the agent the ticket is assigned to. |
| custom_fields | object | Custom field values, keyed by field name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"subject",
"description"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags (array of strings)."
},
"type": {
"type": "string",
"description": "Ticket type (e.g. Question, Incident)."
},
"email": {
"type": "string",
"description": "Requester email (one of email/requester_id/phone required)."
},
"phone": {
"type": "string",
"description": "Requester phone (one of email/requester_id/phone required)."
},
"source": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Ticket source: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedbackwidget, 10=Outbound email."
},
"status": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Ticket status: 2=Open, 3=Pending, 4=Resolved, 5=Closed."
},
"subject": {
"type": "string",
"description": "Ticket subject (required)."
},
"group_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the group to assign the ticket to."
},
"priority": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Ticket priority: 1=Low, 2=Medium, 3=High, 4=Urgent."
},
"cc_emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Emails to CC on the ticket."
},
"company_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the company the ticket belongs to."
},
"description": {
"type": "string",
"description": "Ticket description, HTML content (required)."
},
"requester_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Requester (contact) id (one of email/requester_id/phone required)."
},
"responder_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the agent the ticket is assigned to."
},
"custom_fields": {
"type": "object",
"description": "Custom field values, keyed by field name.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}| string |
| Only tickets updated after this ISO 8601 timestamp. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number for pagination (1-based)."
},
"email": {
"type": "string",
"description": "Filter by requester email."
},
"filter": {
"enum": [
"new_and_my_open",
"watching",
"spam",
"deleted"
],
"type": "string",
"description": "Predefined filter: new_and_my_open, watching, spam, or deleted."
},
"include": {
"type": "string",
"description": "Embed extra data, comma-separated, e.g. \"requester,stats,description\"."
},
"order_by": {
"enum": [
"created_at",
"due_by",
"updated_at",
"status"
],
"type": "string",
"description": "Sort field: created_at, due_by, updated_at, or status."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, max 100, default 30)."
},
"company_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by company id."
},
"order_type": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction: asc or desc."
},
"requester_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by requester (contact) id."
},
"updated_since": {
"type": "string",
"description": "Only tickets updated after this ISO 8601 timestamp."
}
}
}| custom_fields |
| object |
| Custom field values, keyed by field name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The contact id to update."
},
"name": {
"type": "string",
"description": "The contact's full name."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags (array of strings)."
},
"email": {
"type": "string",
"description": "Email address."
},
"phone": {
"type": "string",
"description": "Phone number."
},
"mobile": {
"type": "string",
"description": "Mobile number."
},
"address": {
"type": "string",
"description": "Postal address."
},
"job_title": {
"type": "string",
"description": "Job title."
},
"company_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the company the contact belongs to."
},
"description": {
"type": "string",
"description": "Freeform description / notes."
},
"custom_fields": {
"type": "object",
"description": "Custom field values, keyed by field name.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}| description | string | Ticket description, HTML content. |
| requester_id | integer | Requester (contact) id. |
| responder_id | integer | Id of the agent the ticket is assigned to. |
| custom_fields | object | Custom field values, keyed by field name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The ticket id to update."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags (array of strings)."
},
"type": {
"type": "string",
"description": "Ticket type."
},
"source": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Ticket source: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedbackwidget, 10=Outbound email."
},
"status": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Ticket status: 2=Open, 3=Pending, 4=Resolved, 5=Closed."
},
"subject": {
"type": "string",
"description": "Ticket subject."
},
"group_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the group to assign the ticket to."
},
"priority": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Ticket priority: 1=Low, 2=Medium, 3=High, 4=Urgent."
},
"company_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the company the ticket belongs to."
},
"description": {
"type": "string",
"description": "Ticket description, HTML content."
},
"requester_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Requester (contact) id."
},
"responder_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the agent the ticket is assigned to."
},
"custom_fields": {
"type": "object",
"description": "Custom field values, keyed by field name.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}