MCP Server

trengo

io.usefulapi/trengo

What this MCP does

Manages Trengo customer-support tickets, contacts, teams, messages, assignments, board cards, and operational reports.

trengo_assign_ticket
Assign a ticket
Assign a ticket to a user or a team, with an optional assignment note. Reversible by reassigning. Trengo: POST /tickets/{ticket_id}/assign.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ticket_id', 'type'], 'properties': {'note': {'type': 'string', 'description': 'Optional assignment note.'}, 'type': {'enum': ['user', 'team'], 'type': 'string', 'description': 'Assign to a user or to a team.'}, 'team_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The team id — required when type is team.', 'exclusiveMinimum': 0}, 'user_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The user id — required when type is user.', 'exclusiveMinimum': 0}, 'ticket_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The ticket id.', 'exclusiveMinimum': 0}}}
trengo_close_ticket
Close a ticket
Close a ticket, optionally applying a ticket result (see trengo_list_ticket_results). Reversible with trengo_reopen_ticket. Trengo: POST /tickets/{ticket_id}/close.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ticket_id'], 'properties': {'ticket_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The ticket id.', 'exclusiveMinimum': 0}, 'ticket_result_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional ticket result to apply.', 'exclusiveMinimum': 0}}}
trengo_create_board_card
Create a board card
Create a card (e.g. a deal or task) in a stage of a Trengo board. The board id is in the board's URL in Trengo. Trengo: POST /boards/{boardId}/cards.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['board_id', 'stage_id', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': "The card's name."}, 'board_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The board id.', 'exclusiveMinimum': 0}, 'stage_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The stage id.', 'exclusiveMinimum': 0}, 'description': {'type': 'string', 'description': "The card's description."}}}
trengo_create_contact
Create a contact
Create a contact on a channel. The identifier is the contact's address on that channel: an email address for email channels, a phone number for WhatsApp/SMS/voice. Trengo: POST /channels/{channel_id}/contacts.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['channel_id', 'identifier'], 'properties': {'name': {'type': 'string', 'description': "The contact's full name."}, 'channel_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The channel id.', 'exclusiveMinimum': 0}, 'identifier': {'type': 'string', 'minLength': 1, 'description': 'Email address or phone number, depending on the channel.'}}}
trengo_create_ticket
Create a ticket
Open a new ticket for an existing contact on a channel. Nothing is sent to the customer until you post a message with trengo_send_ticket_message. Trengo: POST /tickets.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['channel_id', 'contact_id'], 'properties': {'subject': {'type': 'string', 'description': 'Optional subject.'}, 'channel_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The channel id.', 'exclusiveMinimum': 0}, 'contact_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The contact id.', 'exclusiveMinimum': 0}}}
trengo_get_agent_performance
Get agent performance
Per-agent performance over a period: messages sent, notes, tickets assigned and closed, average first response and resolution times (with and without business hours). Trengo: GET /reporting/agent_performance.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}, 'end_date': {'type': 'string', 'description': 'Period end as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'team_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these team ids.'}, 'user_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these user ids.'}, 'label_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these label ids.'}, 'start_date': {'type': 'string', 'description': 'Period start as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'channel_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these channel ids.'}}}
trengo_get_contact
Get a contact
Fetch one contact with name, email, phone and custom field data, optionally with notes. Trengo: GET /contacts/{id}.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contact_id'], 'properties': {'contact_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The contact id.', 'exclusiveMinimum': 0}, 'include_notes': {'type': 'boolean', 'description': "Also return the contact's notes."}}}
trengo_get_email_message
Get an email message
Fetch the full email behind one message of a ticket: original HTML body, from, to, subject and Message-ID. The message must be an email message. Trengo: GET /tickets/{ticket_id}/full_email_messages/{message_id}.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ticket_id', 'message_id'], 'properties': {'ticket_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The ticket id.', 'exclusiveMinimum': 0}, 'message_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The message id.', 'exclusiveMinimum': 0}}}
trengo_get_reporting_metrics
Get reporting metrics
Aggregate support metrics over a period: new, created, assigned, closed and reopened tickets, average first response time and average total resolution time (seconds). Filter by team, channel, label or direction. Trengo: GET /reporting/metrics.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['metrics'], 'properties': {'metrics': {'type': 'array', 'items': {'enum': ['new_tickets', 'assigned_tickets', 'average_total_resolution_time', 'average_first_response_time', 'created_tickets', 'closed_tickets', 'reopened_tickets'], 'type': 'string'}, 'minItems': 1, 'description': 'Which metrics to return.'}, 'end_date': {'type': 'string', 'description': 'Period end as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'team_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these team ids.'}, 'direction': {'enum': ['INBOUND', 'OUTBOUND'], 'type': 'string', 'description': 'Only INBOUND or OUTBOUND conversations.'}, 'label_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these label ids.'}, 'start_date': {'type': 'string', 'description': 'Period start as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'channel_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these channel ids.'}}}
trengo_get_ticket_details_report
Get ticket details report
Per-ticket reporting rows: status, assignee, labels, first reply, first resolution and total resolution times (with and without business hours). Filter by team, channel, label, direction, status and created/closed/assigned date ranges; sort by a timing metric. For large accounts page with start_after_ticket_id instead of page. Trengo: GET /reporting/details/ticket.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}, 'sort_by': {'enum': ['first_resolution_time_opening_hours', 'first_resolution_time', 'first_response_time_opening_hours', 'first_response_time', 'total_resolution_time_opening_hours', 'total_resolution_time', 'created_at', 'assigned_at', 'closed_at'], 'type': 'string', 'description': 'Sort column.'}, 'statuses': {'type': 'array', 'items': {'enum': ['OPEN', 'ASSIGNED', 'CLOSED', 'INVALID'], 'type': 'string'}, 'description': 'Only tickets in these statuses.'}, 'team_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these team ids.'}, 'direction': {'enum': ['INBOUND', 'OUTBOUND'], 'type': 'string', 'description': 'Only INBOUND or OUTBOUND conversations.'}, 'label_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these label ids.'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}, 'channel_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these channel ids.'}, 'closed_end_date': {'type': 'string', 'description': 'Closed-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'created_end_date': {'type': 'string', 'description': 'Created-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'assigned_end_date': {'type': 'string', 'description': 'Assigned-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'closed_start_date': {'type': 'string', 'description': 'Closed-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'created_start_date': {'type': 'string', 'description': 'Created-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'assigned_start_date': {'type': 'string', 'description': 'Assigned-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair.'}, 'start_after_ticket_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Keyset cursor: return tickets after this ticket id (replaces page for huge accounts).', 'exclusiveMinimum': 0}}}
trengo_list_contact_groups
List contact groups
List the contact groups in the account — use their ids with trengo_update_contact. Trengo: GET /contact_groups.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}}}
trengo_list_contacts
List or search contacts
List contacts, or search them by name, email or phone number. Trengo: GET /contacts.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}, 'term': {'type': 'string', 'description': 'Search term, matched on email, phone number and name.'}, 'include_last_interaction': {'type': 'boolean', 'description': "Also return each contact's last interaction."}}}
trengo_list_custom_fields
List custom fields
List the custom fields defined for tickets, contacts and profiles. Trengo: GET /custom_fields.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}}}
trengo_list_labels
List labels
List the ticket labels (tags) in the account, for filtering tickets and reports. Trengo: GET /labels.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}}}
trengo_list_quick_replies
List quick replies
List the saved quick replies (canned responses), optionally only the messaging or email ones — useful for drafting consistent answers. Trengo: GET /quick_replies.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'enum': ['MESSAGING', 'EMAIL'], 'type': 'string', 'description': 'Only quick replies of this type.'}}}
trengo_list_teams
List teams
List the teams in the account — use their ids to assign tickets to a team. Trengo: GET /teams.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}}}
trengo_list_ticket_messages
List a ticket's messages
List the messages of one ticket — inbound, outbound and internal notes — with the contact or agent behind each. Trengo: GET /tickets/{ticket_id}/messages.
Read only
Input schema
{'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 (1-based). Omit for the first page.'}, 'ticket_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The ticket id.', 'exclusiveMinimum': 0}}}
trengo_list_ticket_results
List ticket results
List the ticket results (closing outcomes, e.g. 'Resolved', 'Sale') that can be applied when closing a ticket. Trengo: GET /ticket_results.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}}}
trengo_list_tickets
List tickets
List tickets (conversations) visible to the token's user, newest activity first, with channel and latest message. Filter by status, contact, assignee, channel, label, last message direction or update time. Trengo: GET /tickets.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}, 'sort': {'enum': ['-date', 'date'], 'type': 'string', 'description': 'By last message time: -date newest first (default), date oldest first.'}, 'users': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these assigned user ids.'}, 'labels': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these label ids.'}, 'status': {'enum': ['OPEN', 'ASSIGNED', 'CLOSED', 'INVALID'], 'type': 'string', 'description': 'Only tickets in this status. INVALID = spam.'}, 'channels': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Only these channel ids.'}, 'contact_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Only tickets of this contact.', 'exclusiveMinimum': 0}, 'updated_at_gt': {'type': 'string', 'description': 'Only tickets updated after this date-time.'}, 'last_message_type': {'enum': ['INBOUND', 'OUTBOUND'], 'type': 'string', 'description': 'Only tickets whose last message was INBOUND or OUTBOUND.'}}}
trengo_list_users
List users
List the agents (users) in the Trengo account — use their ids to assign tickets or filter. Trengo: GET /users.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number (1-based). Omit for the first page.'}, 'sort': {'enum': ['id', 'first_name', 'last_name', 'created_at'], 'type': 'string', 'description': 'Sort column (default id).'}}}
trengo_reopen_ticket
Reopen a ticket
Reopen a closed ticket. Trengo: POST /tickets/{ticket_id}/reopen.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ticket_id'], 'properties': {'ticket_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The ticket id.', 'exclusiveMinimum': 0}}}
trengo_send_ticket_message
Send a ticket message
Post a message on a ticket. With internal_note=true it is an internal note visible only to agents. OTHERWISE IT IS DELIVERED TO THE CUSTOMER on the ticket's channel (email, WhatsApp, chat...) and cannot be recalled — confirm the text first. Trengo: POST /tickets/{ticket_id}/messages.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ticket_id', 'message'], 'properties': {'message': {'type': 'string', 'minLength': 1, 'description': 'The message. May contain HTML when the channel is email.'}, 'subject': {'type': 'string', 'description': "Email channels only. Trengo prefixes it with 'Re:' when replying."}, 'ticket_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The ticket id.', 'exclusiveMinimum': 0}, 'internal_note': {'type': 'boolean', 'description': 'true = internal note for agents only; false/omitted = sent to the customer.'}, 'attachment_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Email channels only: ids of previously uploaded attachments.'}}}
trengo_update_board_card
Update a board card
Partially update a board card: rename it, move it to another stage, or set its users (owners) and contacts (leads). user_ids / contact_ids replace the current sets. Trengo: PUT /boards/{boardId}/cards/{cardId}.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['board_id', 'card_id'], 'properties': {'name': {'type': 'string', 'description': "The card's new name."}, 'card_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The card id.', 'exclusiveMinimum': 0}, 'board_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The board id.', 'exclusiveMinimum': 0}, 'stage_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Move the card to this stage.', 'exclusiveMinimum': 0}, 'user_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Trengo user ids on the card, e.g. deal owners (replaces the set).'}, 'contact_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'Trengo contact ids on the card, e.g. leads (replaces the set).'}}}
trengo_update_contact
Update a contact
Rename a contact and/or set the contact groups it belongs to. contact_group_ids REPLACES the contact's groups. Trengo: PUT /contacts/{id}.
Destructive
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contact_id'], 'properties': {'name': {'type': 'string', 'description': "The contact's new name."}, 'contact_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The contact id.', 'exclusiveMinimum': 0}, 'contact_group_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'description': 'The full set of contact group ids (replaces the current groups).'}}}
Added
trengo_update_board_card
Oct. 2, 2026, 2:40 a.m.
Added
trengo_create_board_card
Oct. 2, 2026, 2:40 a.m.
Added
trengo_update_contact
Oct. 2, 2026, 2:40 a.m.
Added
trengo_create_contact
Oct. 2, 2026, 2:40 a.m.
Added
trengo_send_ticket_message
Oct. 2, 2026, 2:40 a.m.
Added
trengo_reopen_ticket
Oct. 2, 2026, 2:40 a.m.
Added
trengo_close_ticket
Oct. 2, 2026, 2:40 a.m.
Added
trengo_assign_ticket
Oct. 2, 2026, 2:40 a.m.
Added
trengo_create_ticket
Oct. 2, 2026, 2:40 a.m.
Added
trengo_get_ticket_details_report
Oct. 2, 2026, 2:40 a.m.
Added
trengo_get_agent_performance
Oct. 2, 2026, 2:40 a.m.
Added
trengo_get_reporting_metrics
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_quick_replies
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_custom_fields
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_ticket_results
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_labels
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_teams
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_users
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_contact_groups
Oct. 2, 2026, 2:40 a.m.
Added
trengo_get_contact
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_contacts
Oct. 2, 2026, 2:40 a.m.
Added
trengo_get_email_message
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_ticket_messages
Oct. 2, 2026, 2:40 a.m.
Added
trengo_list_tickets
Oct. 2, 2026, 2:40 a.m.