Tidio MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TIDIO_CLIENT_ID | Yes | Your Tidio API client ID | |
| TIDIO_CLIENT_SECRET | Yes | Your Tidio API client secret |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_departmentsA | Get all departments from Tidio. Departments are a agent groups, and can be assigned to tickets. Returns: Dict: A dictionary containing departments information. |
| get_operatorsA | Get all operators from Tidio. Operators are agents that manage tickets and contact with customers. Operator can be assigned to tickets. This endpoint supports pagination. If the response contains meta.cursor with a non-null value, there are more results available. Pass that cursor value to the next request to fetch the next page. When meta.cursor is null, you've reached the end of the list. Args: cursor (str, optional): Pagination cursor from previous response. Use the value from meta.cursor to fetch the next page of results. Returns: Dict: A dictionary containing operator information and pagination metadata. |
| get_contactsA | Get all contacts from Tidio. Contacts are customers that have contacted company via chat or email. This endpoint supports pagination. If the response contains meta.cursor with a non-null value, there are more results available. Pass that cursor value to the next request to fetch the next page. When meta.cursor is null, you've reached the end of the list. Args: cursor (str, optional): Pagination cursor from previous response. Use the value from meta.cursor to fetch the next page of results. email (str, optional): Filter contacts by email address. Must be a full, valid email address (wildcards not supported). Returns: Dict: A dictionary containing contacts information and pagination metadata. |
| get_contact_detailsA | Get details of a specific contact (customer) from Tidio. Args: contact_id (str): Required. The UUID of the contact to retrieve. Returns: Dict: A dictionary containing the contact details. |
| create_contactA | Create a new contact in Tidio. Always creates a new contact; existing data is never overwritten. At least one of email, first_name, last_name, or phone must be provided. distinct_id is required and identifies the contact in your external system. If the user has not supplied a distinct_id, ASK them for it. Do NOT invent one or copy it from any other field — not from email, phone, name, email_consent, or any custom property. Args: distinct_id (str): Required. ID of the contact in the external system. Maximum 55 characters. Must be a real external-system identifier provided by the user. Never copy it from email, phone, name, or any other property. Ask the user if it is missing. email (str, optional): Contact email address in RFC822 format. phone (str, optional): Contact phone number. first_name (str, optional): Contact's first name. last_name (str, optional): Contact's last name. email_consent (str, optional): Email consent status. Must be one of: 'subscribed', 'unsubscribed'. properties (list, optional): List of custom contact properties. Each item must be a dict with 'name' (max 128 chars) and 'value' (max 1000 chars) fields. Example: [{"name": "plan", "value": "premium"}, {"name": "score", "value": 42}] Returns: Dict: A dictionary containing the created contact ID. Raises: ValueError: If any of the provided arguments have invalid values. |
| update_contactA | Update a specific contact in Tidio. Pass only the fields you want to update. Omitted fields remain unchanged; null clears the field (except distinct_id, which cannot be cleared). Args: contact_id (str): Required. The UUID of the contact to update. email (str, optional): Contact email address in RFC822 format. phone (str, optional): Contact phone number. first_name (str, optional): Contact's first name. last_name (str, optional): Contact's last name. email_consent (str, optional): Email consent status. Must be one of: 'subscribed', 'unsubscribed'. distinct_id (str, optional): External system identifier. Maximum 55 characters. Cannot be cleared (null is not accepted). properties (list, optional): List of custom contact properties to update. Each item must be a dict with 'name' (max 128 chars) and 'value' (max 1000 chars) fields. Example: [{"name": "plan", "value": "premium"}, {"name": "score", "value": 42}] Returns: Dict: A dictionary with success status. Raises: ValueError: If any of the provided arguments have invalid values. |
| delete_contactA | Delete a specific contact (customer) from Tidio. Args: contact_id (str): Required. The UUID of the contact to delete. Returns: Dict: A dictionary with success status. |
| get_ticketsA | Get all tickets from Tidio. Use this to get tickets overview. This endpoint supports pagination. If the response contains meta.cursor with a non-null value, there are more results available. Pass that cursor value to the next request to fetch the next page. When meta.cursor is null, you've reached the end of the list. Args: cursor (str, optional): Pagination cursor from previous response. Use the value from meta.cursor to fetch the next page of results. Returns: Dict: A dictionary containing ticket information and pagination metadata. |
| get_ticket_detailsA | Get details of a specific ticket from Tidio. Use this to get full ticket information including messages. Args: ticket_id (int): Required. The ID of the ticket to retrieve. Returns: Dict: A dictionary containing the ticket details. |
| delete_ticketA | Delete a specific ticket from Tidio. Args: ticket_id (int): Required. The ID of the ticket to delete. Returns: Dict: A dictionary with success status. |
| create_ticketA | Create a new ticket in Tidio. This tool creates a ticket from a customer's perspective. Args: contact_email (str): Required. Email of the customer creating the ticket. subject (str): Required. Subject of the ticket. message_content (str): Required. Ticket message content from the customer. assigned_department_id (str, optional): UUID of assigned department. When not provided, the General department is assigned as default. Returns: Dict: A dictionary containing the created ticket ID. |
| update_ticketA | Update a specific ticket from Tidio with new information. Args: ticket_id (int): Required. The ID of the ticket to update. status (str, optional): The new status for the ticket. Must be one of: 'open', 'pending', 'solved'. priority (str, optional): The new priority for the ticket. Must be one of: 'low', 'normal', 'urgent'. assigned (dict, optional): Dictionary with 'type' and 'id' fields to assign the ticket. Example: {"type": "operator", "id": "uuid-here"} or {"type": "department", "id": "dept-uuid-here"}. 'type' must be either 'operator' or 'department'. 'id' must be a string (UUID). Returns: Dict: A dictionary with success status. Raises: ValueError: If any of the provided arguments have invalid values. |
| unassign_ticketB | Unassign operator from ticket in Tidio. Args: ticket_id (int): Required. The ID of the ticket to unassign. Returns: Dict: A dictionary with success status. |
| reply_to_a_ticketA | Send a public reply to a specific ticket in Tidio. This reply will be visible to the customer and sent to them. Args: ticket_id (int): Required. The ID of the ticket to reply to. content (str): Required. The content of the reply. Can be HTML. operator_id (str): Required. The UUID of the operator who is sending the reply. Returns: Dict: A dictionary with success status and created message ID. |
| add_internal_note_to_a_ticketA | Add an internal note to a specific ticket in Tidio. This note is only visible to operators and not sent to the customer. Args: ticket_id (int): Required. The ID of the ticket to add a note to. content (str): Required. The content of the internal note. Must be plain text. operator_id (str): Required. The UUID of the operator who is adding the note. Returns: Dict: A dictionary with success status and created message ID. Raises: ValueError: If any of the provided arguments have invalid values. |
| get_contact_propertiesA | Get all contact properties from Tidio. Contact properties are fields that can be associated with contacts, including default properties (name, email, phone, etc.) and custom ones. This endpoint supports pagination. If the response contains meta.cursor with a non-null value, there are more results available. Pass that cursor value to the next request to fetch the next page. When meta.cursor is null, you've reached the end of the list. Args: cursor (str, optional): Pagination cursor from previous response. Use the value from meta.cursor to fetch the next page of results. Returns: Dict: A dictionary containing contact properties and pagination metadata. Each property has: name (internal identifier), label (human-readable), and type (one of: text, number, email, phone, url). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adrmrn/tidio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server