MCP tools reference

This article documents every tool exposed by the LiveAgent MCP server, including the exact parameters each tool accepts and the exact fields it returns. The same tool set is available for both personal MCP connections and AI agent MCP connections.

Every tool returns a single JSON object. A call that succeeds returns the documented response, while a tool that has nothing to return answers with {"success": true}. A call that fails returns an error object, e.g. {"success": false, "error": "Not authorized to read this ticket"}.

Ticket read tools

Get ticket messages (get_ticket_messages)

Retrieves messages of a ticket, including internal notes by default. Limited to 50 messages per call.

Available parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
sinceNoCursor from a previous tool call response, used to return next messages
typesNoReturn only selected message types: email, chat, whatsapp, instant_message, note, or legacy_message.
dateFromNoFilter only messages added at or after specified time using RFC 3339 timestamp in UTC, e.g. 2026-07-08T10:00:00Z
dateToNoFilter only messages added at or before specified time using RFC 3339 timestamp in UTC, e.g. 2026-07-08T10:00:00Z
orderNoSort response records, use desc (default) to list newest records first, or asc to list oldest records first. When since is used, the cursor's own sorting direction applies, and a conflicting order is rejected.

Response

FieldDescription
messages[].idMessage identifier.
messages[].textMessage body as plain text.
messages[].authoragent, customer, ai_agent, rule, or external_app.
messages[].authorIdIdentifier of the author.
messages[].typeemail, chat, whatsapp, instant_message, note or legacy_message.
messages[].createdAtDatetime when the message was added.
messages[].attachments[]Attachments of the ticket messages, each with id, fileName, contentType, size (bytes) and downloadUrl.
nextCursorCursor referring to the last returned message, pass as since to retrieve next mesages. Returns null when there are no more messages.

Note: attachment content is never inlined in the result. downloadUrl is a short-lived, single-use link (valid roughly 3 hours, consumed by the first successful download), so fetch it once and keep the bytes.

Get ticket metadata (get_ticket_metadata)

Reads a ticket's properties: subject, status, originating channel, department, assignment, tags and timestamps.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d

Returns

FieldDescription
idInternal ticket ID.
codeHuman-readable ticket code.
subjectTicket subject.
statusinit, new, open, answered, resolved, postponed, chatting, calling, closed, deleted or spam.
channelChannel the ticket came from: email, contact_button, contact_form, invitation, call, call_button, facebook, facebook_message, twitter, forum, suggestion, instagram, instagram_mention, viber, whatsapp, telegram.
departmentIdDepartment the ticket belongs to.
departmentNameDepartment name (archived departments included).
assignedAgentIdAssigned agent's ID; null when unassigned.
assignedAgentNameAssigned agent's display name. The agent's e-mail address is not returned — see Known limitations.
tagsNames of the tags currently on the ticket.
createdAtWhen the ticket was created.
lastActivityAtWhen the ticket last changed.

Note: this tool does not return customer/requester details, priority, or SLA data.

Get ticket summary (get_ticket_summary)

Returns the ticket's existing AI-generated summary and when it was produced.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d

Returns

FieldDescription
summarySummary text as plain text. null when the ticket has no summary yet.
generatedAtWhen the summary was generated; null together with summary.

Get ticket notes (get_ticket_notes)

Retrieves the internal notes on a ticket (agent notes, rule notes, API notes) with cursor-based pagination.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
sinceNoCursor from a previous response.

Returns

FieldDescription
notes[].noteIdNote identifier.
notes[].textNote text.
notes[].author.idAuthor identifier.
notes[].author.nameAuthor display name.
notes[].author.typeagent, ai_agent, rule or external_app.
notes[].createdAtWhen the note was added.
nextCursorPass as since to continue.

Get tags (get_tags)

Lists every tag defined in the account. This is the tag catalogue you pick from — it is not the list of tags on a particular ticket. For a ticket's own tags, use Get ticket metadata.

Parameters: none.

Returns

FieldDescription
tags[].idTag ID (4-character alphanumeric).
tags[].nameTag name.
tags[].isPublicWhether the tag is visible outside the agent panel.

Search tickets (search_tickets)

Finds related or similar tickets. Results are ordered by last change, newest first.

Parameters

ParameterRequiredDescription
statusNoFilter by status. Accepted: new, open, answered, resolved, postponed, chatting, calling. When omitted, deleted, closed and spam tickets are excluded and everything else is returned.
departmentIdNoRestrict to one department.
agentIdNoRestrict to tickets assigned to one agent.
queryNoFull-text search phrase.
limitNoMaximum results; default 10, maximum 50 (higher values are capped).
cursorNoCursor from a previous response, to fetch the next page.

Returns

FieldDescription
tickets[].idInternal ticket ID — this is what other ticket tools expect.
tickets[].codeHuman-readable ticket code.
tickets[].subjectTicket subject.
tickets[].statusCurrent status (the full status list, including closed, deleted, spam, init).
tickets[].departmentIdDepartment the ticket belongs to.
tickets[].assignedAgentIdAssigned agent's ID.
totalCountTotal number of matching tickets, not just those on this page.
nextCursorPass as cursor for the next page.

Note: there is no date, tag, customer or channel filter, and the sort order cannot be changed. See Known limitations for what to do instead. Note also that no subject, department name or agent name is returned — only IDs.

List agents (list_agents)

Lists the agents in the account. Use it to resolve an agent ID before assigning a ticket, or to turn an assignedAgentId into a name and e-mail address.

Parameters

ParameterRequiredDescription
searchNoFilter agents by name or e-mail address.

Returns

FieldDescription
agents[].idAgent ID.
agents[].nameAgent display name.
agents[].emailAgent e-mail address.

List departments (list_departments)

Lists the departments in the account, for routing and transfer decisions.

Parameters

ParameterRequiredDescription
searchNoFilter departments by name.

Returns

FieldDescription
departments[].idDepartment ID.
departments[].nameDepartment name.

Ticket field tools

Get ticket field definitions (get_ticket_field_definitions)

Returns the custom ticket fields configured for the account, with the metadata needed to fill them in correctly. Archived definitions are excluded.

Parameters: none.

Returns

FieldDescription
definitions[].definitionIdNumeric definition ID.
definitions[].codeStable string code of the field.
definitions[].nameField label.
definitions[].typeBOOLEAN, STRING, POSTAL_ADDRESS, LIST_SINGLE_VALUED or LIST_MULTI_VALUED.
definitions[].descriptionField description.
definitions[].checkboxDescriptionBOOLEAN fields only — the label next to the checkbox.
definitions[].validationSTRING fields only. Either {"kind":"PREDEFINED","format":…} with one of ALPHANUMERIC, ALPHANUMERIC_SPACE, DATE, DATE_REVERSE, DECIMAL, EMAIL, WHOLE_NUMBER, NUMERIC_STRING, INTERNATIONAL_PHONE, US_PHONE, IP_ADDRESS, TEXT, TIME, URL; or {"kind":"CUSTOM","regex":…}.
definitions[].availableValuesLIST_SINGLE_VALUED and LIST_MULTI_VALUED fields only — the selectable option labels.

Get ticket field values (get_ticket_field_values)

Reads all custom field values stored on one ticket, each returned together with its definition metadata. Values whose definition has since been archived are still returned.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d

Returns

FieldDescription
values[].fieldIdID of this stored value — the handle delete_ticket_field_value expects.
values[].definitionIdNumeric definition ID.
values[].codeDefinition code.
values[].nameField label.
values[].typeField type, as in the definitions tool.
values[].valueBoolean for BOOLEAN; string for STRING and LIST_SINGLE_VALUED; array of strings for LIST_MULTI_VALUED; object with street, district, city, state, postalCode, country for POSTAL_ADDRESS.

Set ticket field value (set_ticket_field_value)

Idempotent upsert of one custom field value: creates it when missing, updates it when present and different, does nothing when it already matches.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
definitionIdOne of the twoNumeric definition ID. Supply either this or definitionCode — never both, never neither.
definitionCodeOne of the twoDefinition code.
booleanValueExactly oneFor BOOLEAN fields.
stringValueFor STRING fields (max 255 characters).
singleValueSelected option label for LIST_SINGLE_VALUED fields.
multiValueSelected option labels for LIST_MULTI_VALUED fields.
postalAddressKeys street, district, city, state, postalCode, country for POSTAL_ADDRESS fields.

Returns

FieldDescription
fieldIdID of the created or existing value.
actioncreated, updated or unchanged.

Note: the value parameter must match the field's type, and archived definitions are rejected. If a ticket somehow holds more than one value for the same definition, the call fails and asks you to clean up with delete_ticket_field_value first.

Delete ticket field value (delete_ticket_field_value)

Removes one stored custom field value from a ticket. Works even when the underlying definition has been archived.

Parameters

ParameterRequiredDescription
fieldIdYesThe value's ID, as returned by get_ticket_field_values. Note this is not the definition ID.

Returns

FieldDescription
fieldIdThe deleted value's ID.

Ticket write tools

Add note (add_note)

Adds an internal note to a ticket. Notes are visible to agents only, never to the customer.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
textYesNote text.
reopenTicketNoReopen the ticket if it is resolved. Default false.

Returns

FieldDescription
noteIdID of the created note.

Note: attachments cannot be added through this tool.

Add tags (add_tags_to_ticket)

Applies one or more existing tags to a ticket.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
tagsYesTag IDs (4-character alphanumeric) or tag names. Unknown tags are rejected — the tool does not create them.

Returns: {"success": true}.

Remove tags (remove_tags_from_ticket)

Removes one or more tags from a ticket.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
tagsYesTag IDs or tag names to remove.

Returns: {"success": true}.

Assign ticket (assign_ticket)

Assigns a ticket to an agent, or clears the assignment.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
agentIdYesAgent to assign to. Must be present, but may be null to unassign. Resolve IDs with list_agents.

Returns: {"success": true}.

Transfer ticket (transfer_ticket)

Moves a ticket to a different department.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
departmentIdYesTarget department. Resolve IDs with list_departments.
reopenTicketNoReopen the ticket after the transfer. Default false.

Returns: {"success": true}.

Note: for an AI agent this is a final action — the agent's run finishes once the transfer succeeds.

Resolve ticket (resolve_ticket)

Marks a ticket as resolved.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d

Returns: {"success": true}.

Note: for an AI agent this is a final action — the run finishes once the ticket is resolved. Add any tags or notes before calling it.

Reopen ticket (reopen_ticket)

Reopens a resolved ticket.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d

Returns: {"success": true}, or the error Ticket is already open when there was nothing to reopen.

Mark as spam (mark_as_spam)

Marks a ticket as spam.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d

Returns: {"success": true}, or {"note": "Ticket was already marked as spam"} when the ticket was already in that state.

Note: for an AI agent this is a final action — the run finishes here, so add any tags or notes first.

Mark as not spam (mark_as_not_spam)

Clears the spam mark and returns the ticket to the queue. Unlike mark_as_spam, this is not a final action.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d

Returns: {"success": true}, or {"note": "Ticket was already not marked as spam"}.

Reply via WhatsApp (reply_via_whatsapp)

Sends a text reply to the customer on a WhatsApp ticket. This is the only MCP tool that writes a customer-visible message.

Requires the WhatsApp addon — on accounts without it the tool is neither offered nor callable.

Parameters

ParameterRequiredDescription
ticketIdYesThe WhatsApp ticket to reply to.
textYesReply text. WhatsApp enforces a maximum message length; an over-length reply is rejected with an error stating the limit.

Returns

FieldDescription
messageIdID of the queued reply.

Conditions and caveats:

  • The ticket's channel (from get_ticket_metadata) must be whatsapp. Anything else is rejected.
  • The reply must fall inside the 24-hour WhatsApp customer service window — that is, within 24 hours of the customer's last message. Outside it, the call fails and the fallback is an approved WhatsApp template sent by a human agent, or an internal note.
  • Text only — attachments are not supported.
  • A successful result means the reply was stored and queued. Actual delivery to WhatsApp happens afterwards and its outcome is not reported by this tool.
  • For AI agents the tool is locked to the ticket the run was started for; it cannot post to a different ticket found via search_tickets.

AI assistant tools

These tools deliver an AI agent's output back into LiveAgent. They are meant for automated agent runs rather than interactive use, and each one finishes the run that called it.

Submit ticket summary (submit_ticket_summary)

Stores a generated summary on the ticket, where it appears in the agent panel.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
summaryYesThe summary text.

Returns: {"success": true}.

Submit answer suggestion (submit_answer_suggestion)

Delivers a suggested reply for the ticket, which an agent can then review and send.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
textYesThe suggested reply text.

Returns: {"success": true}. Fails with submit_answer_suggestion requires an AI agent run when called outside an AI agent run — a personal MCP connection cannot use it.

Submit text modification (submit_text_modification)

Delivers generated or rewritten text as the answer-assistant result for a ticket.

Parameters

ParameterRequiredDescription
ticketIdYesTicket identifier, e.g. 1a2b3c4d
textYesThe generated or modified text.

Returns: {"success": true}. Like the tool above, it requires an AI agent run.

Knowledge base tools

None of these tools assume a default knowledge base, so start with list_knowledge_bases and pass the knowledgeBaseId you get from it.

List knowledge bases (list_knowledge_bases)

Parameters: none.

Returns

FieldDescription
knowledgeBases[].idThe value to pass as knowledgeBaseId to the other KB tools.
knowledgeBases[].nameKnowledge base name.
knowledgeBases[].isActiveWhether the knowledge base is active.

List KB categories (list_kb_categories)

Returns categories as a nested tree — the full subtree under a parent, or the whole knowledge base when no parent is given.

Parameters

ParameterRequiredDescription
knowledgeBaseIdYesKnowledge base to read.
parentCategoryIdNoRoot of the subtree to return. Omit (or pass 0) for the whole tree.

Returns

FieldDescription
categories[].idCategory ID.
categories[].nameCategory name.
categories[].parentCategoryIdParent category ID (0 at root level).
categories[].visibilitypublic or internal.
categories[].position0-based position among its siblings.
categories[].children[]Nested child categories, same shape.
countTotal number of category nodes returned, children included.

Search KB articles (search_kb_articles)

Full-text search across a knowledge base — for finding an article that answers a customer's question, or checking whether one already exists.

Parameters

ParameterRequiredDescription
queryYesSearch keyword or phrase.
knowledgeBaseIdYesKnowledge base to search.
categoryIdNoRestrict to this category and its sub-categories.
limitNoMaximum results; default 10, maximum 50.

Returns

FieldDescription
articles[].idArticle ID.
articles[].titleArticle title.
articles[].urlPublic article URL.
articles[].summaryFirst ~300 characters of the article as plain text, truncated on a word boundary with an ellipsis.
articles[].descriptionThe article's meta description.
articles[].categoryIdCategory the article sits in.
articles[].knowledgeBaseIdKnowledge base the article belongs to.
articles[].statuspublished or draft.
articles[].visibilitypublic or internal.

Note: the full article body is not returned — fetch it with get_kb_article. There is no cursor or offset, so limit caps the result set at 50.

Get KB article (get_kb_article)

Retrieves an article's full content, by ID or by the 6-digit code in its URL.

Parameters

ParameterRequiredDescription
articleIdOne of the twoThe article's numeric ID.
urlCodeOne of the twoThe 6-digit code in the article URL — for example 397021 in .../397021-article-title.

Returns

FieldDescription
idArticle ID.
titleArticle title.
urlPublic article URL.
bodyFull article body as HTML.
plainTextThe same content as plain text.
descriptionMeta description.
keywordsMeta keywords.
categoryIdCategory ID.
knowledgeBaseIdKnowledge base ID.
statuspublished or draft.
visibilitypublic or internal.
position0-based position within its category.
createdAtWhen the article was created.
changedAtWhen it was last changed.
attachments[]Each with id, fileName, contentType, size (bytes), isInline and downloadUrl.

Note: as with ticket attachments, downloadUrl is single-use and expires after roughly 3 hours.

Create KB article (create_kb_article)

Parameters

ParameterRequiredDescription
titleYesArticle title (max 255 characters).
bodyYesArticle body in HTML.
categoryIdYesCategory to place the article in.
knowledgeBaseIdYesTarget knowledge base.
statusYespublished or draft.
visibilityYespublic or internal.
descriptionNoMeta description for search results.
keywordsNoMeta keywords.
positionNo0-based position within the category. Omit to append at the end.

Returns

FieldDescription
articleIdID of the new article.
messageConfirmation text naming the article and its status.

Note: attachments cannot be uploaded through this tool. Images referenced inline in the HTML body are picked up from the body itself.

Update KB article (update_kb_article)

Changes an existing article. Only the fields you supply are changed; everything else keeps its current value.

Parameters

ParameterRequiredDescription
articleIdYesArticle to update.
titleNoNew title (max 255 characters).
bodyNoNew body in HTML.
statusNopublished or draft.
visibilityNopublic or internal.
descriptionNoNew meta description.
keywordsNoNew meta keywords.
categoryIdNoMove the article to this category.
knowledgeBaseIdNoIf supplied, must match the article's current knowledge base — moving an article between knowledge bases is not supported.
positionNo0-based position within the category.

Returns

FieldDescription
messageConfirmation text.

Create KB category (create_kb_category)

Parameters

ParameterRequiredDescription
nameYesCategory name (max 255 characters).
knowledgeBaseIdYesTarget knowledge base.
visibilityYespublic or internal.
parentCategoryIdNoParent category. Omit for a root-level category.
keywordsNoMeta keywords for SEO.
positionNo0-based position among siblings.

Returns

FieldDescription
categoryIdID of the new category.
messageConfirmation text.

Update KB category (update_kb_category)

Renames, moves, reorders or changes the visibility of a category. Only the fields you supply are changed.

Parameters

ParameterRequiredDescription
categoryIdYesCategory to update.
nameNoNew name (max 255 characters).
visibilityNopublic or internal.
keywordsNoNew meta keywords; pass an empty string to clear them.
parentCategoryIdNoMove under this parent; 0 moves it to root level. Moving a category under one of its own descendants is rejected.
knowledgeBaseIdNoIf supplied, must match the category's current knowledge base.
positionNo0-based position among siblings.

Returns

FieldDescription
messageConfirmation text.

Known limitations and gotchas

These are the boundaries people most often run into. Knowing them up front saves a lot of guessing when a prompt does not produce the result you expected.

Attachments

  • File content is never inlined. get_ticket_messages and get_kb_article return a downloadUrl per attachment instead.
  • Those links are single-use and expire in about 3 hours. Re-reading a link from an earlier response will usually fail — call the tool again to mint a fresh one.

×