Search tickets, people, organizations and KB articles in Deskpro, and create tickets and replies.
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 message to a ticket as the key's agent. With is_note=true it is an internal agent note (not shown to the requester); with is_note=false it is a REPLY that the helpdesk emails to the requester — that cannot be unsent. Deskpro: POST /api/v2/tickets/{id}/messages.
true = internal agent note; false = public reply to the requester.
The message body.
The ticket's numeric id.
Format of the body. Default text.
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 message to a ticket as the key's agent. With is_note=true it is an internal agent note (not shown to the requester); with is_note=false it is a REPLY that the helpdesk emails to the requester — that cannot be unsent. Deskpro: POST /api/v2/tickets/{id}/messages.
| Argument | Type | Description |
|---|---|---|
| format | string | Format of the body. Default text. |
| is_note* | boolean | true = internal agent note; false = public reply to the requester. |
| message* | string | The message body. |
| ticket_id* | integer | The ticket's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id",
"message",
"is_note"
],
"properties": {
"format": {
"enum": [
"html",
"text"
],
"type": "string",
"description": "Format of the body. Default text."
},
"is_note": {
"type": "boolean",
"description": "true = internal agent note; false = public reply to the requester."
},
"message": {
"type": "string",
"minLength": 1,
"description": "The message body."
},
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket's numeric id.",
"exclusiveMinimum": 0
}
}
}Create a customer organization. Email domains auto-associate people with matching addresses. Deskpro: POST /api/v2/organizations.
| Argument | Type | Description |
|---|---|---|
| name* | string | The organization's name. |
| labels | array | Labels to set. |
| summary | string | A short description. |
| email_domains | array | Email domains belonging to the organization, e.g. example.com. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The organization's name."
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Labels to set."
},
"summary": {
"type": "string",
"description": "A short description."
},
"email_domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Email domains belonging to the organization, e.g. example.com."
}
}
}Open a new ticket for a requester (by person id, or by email — Deskpro creates the person if the email is new) with a first message. Depending on the helpdesk's triggers this may email the requester. Returns the created ticket. Deskpro: POST /api/v2/tickets.
| Argument | Type | Description |
|---|---|---|
| labels | array | Labels to set. |
| status | string | Ticket status: awaiting_agent, awaiting_user, pending or resolved, optionally with a custom sub-status id suffix (e.g. pending.5 — see deskpro_list_ticket_statuses). The hidden (deleted/spam) status is not settable here. |
| message* | string | The first message body. |
| subject* | string | The ticket subject. |
| urgency | integer | Urgency 1-10. |
| agent_id | integer | Assign to this agent id. |
| person_id | integer | The requester's person id. |
| agent_team | integer | Assign to this agent team id. |
Fetch a single knowledgebase article by id — title, content, status, categories and labels. Deskpro: GET /api/v2/articles/{id}.
| Argument | Type | Description |
|---|---|---|
| article_id* | integer | The article's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"article_id"
],
"properties": {
"article_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The article's numeric id.",
"exclusiveMinimum": 0
}
}
}Return who the API key acts as — the auth method, the bound person id and their profile. A cheap way to confirm the helpdesk URL and key are right. Deskpro: GET /api/v2/me.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a single organization by id — name, summary, email domains, labels, custom fields and ticket count. Deskpro: GET /api/v2/organizations/{id}.
| Argument | Type | Description |
|---|---|---|
| include | string | Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization. |
| organization_id* | integer | The organization's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"organization_id"
],
"properties": {
"include": {
"type": "string",
"description": "Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization."
},
"organization_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The organization's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch a single person by id — name, emails, phone numbers, organization, labels, custom fields and ticket count. Deskpro: GET /api/v2/people/{id}.
| Argument | Type | Description |
|---|---|---|
| include | string | Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization. |
| person_id* | integer | The person's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"person_id"
],
"properties": {
"include": {
"type": "string",
"description": "Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization."
},
"person_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The person's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch a single ticket by id, with its subject, status, assignment, requester, labels, custom fields, SLA state and timing. A merged ticket redirects to the ticket it was merged into. Deskpro: GET /api/v2/tickets/{id}.
| Argument | Type | Description |
|---|---|---|
| include | string | Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization. |
| ticket_id* | integer | The ticket's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id"
],
"properties": {
"include": {
"type": "string",
"description": "Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization."
},
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket's numeric id.",
"exclusiveMinimum": 0
}
}
}List the helpdesk's agents (id, name, email, online state) — needed to assign a ticket. Deskpro: GET /api/v2/agents.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| online | any | 1 = online only, 0 = offline only, -1 = both. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"online": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": -1
}
],
"description": "1 = online only, 0 = offline only, -1 = both."
}
}
}List knowledgebase articles, filterable by category, status and author. Deskpro: GET /api/v2/articles.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| author | string | Only articles by this author id, or 'me' for the key's agent. |
| status | string | Only articles in this status. |
| category | integer | Only articles in this category id. |
| order_by | string | Sort field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"author": {
"type": "string",
"pattern": "^(\\d+|me)$",
"description": "Only articles by this author id, or 'me' for the key's agent."
},
"status": {
"enum": [
"published",
"archived",
"hidden"
],
"type": "string",
"description": "Only articles in this status."
},
"category": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only articles in this category id."
},
"order_by": {
"enum": [
"date_created",
"date_updated",
"person"
],
"type": "string",
"description": "Sort field."
}
}
}List the ticket departments (id, title, parent, whether tickets/chat are enabled) — needed to route a new ticket. Deskpro: GET /api/v2/ticket_departments.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
}
}
}List the tickets belonging to one organization. Deskpro: GET /api/v2/organizations/{id}/tickets.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| organization_id* | integer | The organization's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"organization_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"organization_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The organization's numeric id.",
"exclusiveMinimum": 0
}
}
}List customer organizations, filterable by name or labels. Deskpro: GET /api/v2/organizations.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the organization with this name. |
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| labels | string | Only organizations with these labels (comma-separated). |
| search | string | Search on name. |
| include | string | Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the organization with this name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"labels": {
"type": "string",
"description": "Only organizations with these labels (comma-separated)."
},
"search": {
"type": "string",
"description": "Search on name."
},
"include": {
"type": "string",
"description": "Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization."
}
}
}List people (end users and agents), searchable by name and filterable by email, organization or agent flag. Deskpro: GET /api/v2/people.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| search | string | Search on name. |
| include | string | Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization. |
| is_agent | boolean | true for agents only, false for end users only. |
| order_by | string | Sort field. |
| order_dir | string | Sort direction. |
| organization | string | Only members of these organization ids (comma-separated). |
| primary_email | string | Only the person with this primary email. |
List the tickets raised by one person — their support history. Deskpro: GET /api/v2/people/{id}/tickets.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| person_id* | integer | The person's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"person_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"person_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The person's numeric id.",
"exclusiveMinimum": 0
}
}
}List the conversation on one ticket — every reply and agent note, with its author, date, is_agent_note flag and HTML body. Deskpro: GET /api/v2/tickets/{id}/messages.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| include | string | Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization. |
| ticket_id* | integer | The ticket's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"include": {
"type": "string",
"description": "Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization."
},
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket's numeric id.",
"exclusiveMinimum": 0
}
}
}List the ticket statuses and custom sub-statuses (status_type, status_code, title) configured on the helpdesk. Deskpro: GET /api/v2/ticket_statuses.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| count | integer | Results per page, 1-200. |
| status_type | string | Only statuses of this type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"status_type": {
"enum": [
"pending",
"awaiting_agent",
"awaiting_user",
"resolved"
],
"type": "string",
"description": "Only statuses of this type."
}
}
}List tickets, filtered by status, assigned agent, requester, organization, department or labels, and sorted. Returns ticket objects (id, ref, subject, ticket_status, agent, person, department, urgency, labels, dates) plus pagination meta. Deskpro: GET /api/v2/tickets.
| Argument | Type | Description |
|---|---|---|
| ids | string | Fetch exactly these ticket ids (comma-separated). |
| page | integer | Page number, starting at 1. |
| agent | integer | Only tickets assigned to this agent id. |
| count | integer | Results per page, 1-200. |
| labels | string | Only tickets with these labels (comma-separated). |
| person | integer | Only tickets raised by this person id. |
| status | string | Only tickets in this status, e.g. awaiting_agent, awaiting_user, pending, resolved. |
| include | string | Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization. |
Quick search across tickets, people, organizations, articles, news, downloads, community topics and chats; results are grouped by type. Deskpro: GET /api/v2/search.
| Argument | Type | Description |
|---|---|---|
| q* | string | The search term. |
| types | string | Comma-separated types to search, e.g. ticket,person,organization. Omit for all. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1,
"description": "The search term."
},
"types": {
"type": "string",
"pattern": "^(article|download|community|news|ticket|person|agent|organization|chat_conversation)(,(article|download|community|news|ticket|person|agent|organization|chat_conversation))*$",
"description": "Comma-separated types to search, e.g. ticket,person,organization. Omit for all."
}
}
}Change a ticket's subject, status, assignment, department, organization, urgency, hold state or labels. Only the fields you pass are sent. Reversible by updating again. Cannot set the hidden (deleted/spam) status. Deskpro: PUT /api/v2/tickets/{id}.
| Argument | Type | Description |
|---|---|---|
| labels | array | The ticket's labels. |
| status | string | Ticket status: awaiting_agent, awaiting_user, pending or resolved, optionally with a custom sub-status id suffix (e.g. pending.5 — see deskpro_list_ticket_statuses). The hidden (deleted/spam) status is not settable here. |
| is_hold | boolean | Put the ticket on hold (true) or take it off hold (false). |
| subject | string | New subject. |
| urgency | integer | Urgency 1-10. |
| agent_id | integer | Assign to this agent id. |
| ticket_id* | integer | The ticket's numeric id. |
| agent_team | integer | Assign to this agent team id. |
| department |
| integer |
| Department id (see deskpro_list_departments). |
| person_name | string | The requester's name, for a new person. |
| organization | integer | Organization id. |
| person_email | string | The requester's email (used when person_id is not given). |
| message_format | string | Format of the message body. Default text. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"subject",
"message"
],
"properties": {
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Labels to set."
},
"status": {
"type": "string",
"pattern": "^(awaiting_agent|awaiting_user|pending|resolved)(\\.\\d+)?$",
"description": "Ticket status: awaiting_agent, awaiting_user, pending or resolved, optionally with a custom sub-status id suffix (e.g. pending.5 — see deskpro_list_ticket_statuses). The hidden (deleted/spam) status is not settable here."
},
"message": {
"type": "string",
"minLength": 1,
"description": "The first message body."
},
"subject": {
"type": "string",
"minLength": 1,
"description": "The ticket subject."
},
"urgency": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Urgency 1-10."
},
"agent_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Assign to this agent id."
},
"person_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The requester's person id.",
"exclusiveMinimum": 0
},
"agent_team": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Assign to this agent team id."
},
"department": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Department id (see deskpro_list_departments)."
},
"person_name": {
"type": "string",
"description": "The requester's name, for a new person."
},
"organization": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Organization id."
},
"person_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The requester's email (used when person_id is not given)."
},
"message_format": {
"enum": [
"html",
"text"
],
"type": "string",
"description": "Format of the message body. Default text."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"search": {
"type": "string",
"description": "Search on name."
},
"include": {
"type": "string",
"description": "Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization."
},
"is_agent": {
"type": "boolean",
"description": "true for agents only, false for end users only."
},
"order_by": {
"enum": [
"id",
"date_created",
"date_last_login",
"name",
"first_name",
"last_name",
"primary_email",
"timezone",
"organization"
],
"type": "string",
"description": "Sort field."
},
"order_dir": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"organization": {
"type": "string",
"pattern": "^\\d+(,\\d+)*$",
"description": "Only members of these organization ids (comma-separated)."
},
"primary_email": {
"type": "string",
"description": "Only the person with this primary email."
}
}
}| order_by |
| string |
| Sort field. |
| department | integer | Only tickets in this department id. |
| group_sort | string | Sort direction. |
| organization | integer | Only tickets from this organization id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "string",
"pattern": "^\\d+(,\\d+)*$",
"description": "Fetch exactly these ticket ids (comma-separated)."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"agent": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only tickets assigned to this agent id."
},
"count": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1-200."
},
"labels": {
"type": "string",
"description": "Only tickets with these labels (comma-separated)."
},
"person": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only tickets raised by this person id."
},
"status": {
"type": "string",
"description": "Only tickets in this status, e.g. awaiting_agent, awaiting_user, pending, resolved."
},
"include": {
"type": "string",
"description": "Comma-separated related object types to side-load into the response's `linked` section, e.g. person,agent,department,organization."
},
"order_by": {
"enum": [
"id",
"urgency",
"date_created",
"date_status",
"date_last_agent_reply",
"date_last_user_reply",
"date_last_reply",
"date_user_waiting",
"total_user_waiting",
"subject",
"status"
],
"type": "string",
"description": "Sort field."
},
"department": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only tickets in this department id."
},
"group_sort": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"organization": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only tickets from this organization id."
}
}
}| department |
| integer |
| Move to this department id. |
| organization | integer | Set the organization id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id"
],
"properties": {
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "The ticket's labels."
},
"status": {
"type": "string",
"pattern": "^(awaiting_agent|awaiting_user|pending|resolved)(\\.\\d+)?$",
"description": "Ticket status: awaiting_agent, awaiting_user, pending or resolved, optionally with a custom sub-status id suffix (e.g. pending.5 — see deskpro_list_ticket_statuses). The hidden (deleted/spam) status is not settable here."
},
"is_hold": {
"type": "boolean",
"description": "Put the ticket on hold (true) or take it off hold (false)."
},
"subject": {
"type": "string",
"minLength": 1,
"description": "New subject."
},
"urgency": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Urgency 1-10."
},
"agent_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Assign to this agent id."
},
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket's numeric id.",
"exclusiveMinimum": 0
},
"agent_team": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Assign to this agent team id."
},
"department": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Move to this department id."
},
"organization": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Set the organization id."
}
}
}