AuralisDocs
Tools reference

reply_to_ticket

Every input property this tool accepts, with its bounds.

Post a customer-facing reply or an internal note on a ticket.

Role required: editor. This is the same check the HTTP route POST /v1/tickets/{ticket_id}/events applies, run by the same guard object.

Source: tool definition services/runtime/src/runtime/mcp/tools.py:492-514, handler services/runtime/src/runtime/mcp/tools.py:334-359, role check services/runtime/src/runtime/mcp/tools.py:339-342, HTTP route services/runtime/src/runtime/api/tickets.py:1422-1425.

Input

PropertyTypeRequiredNotes
ticket_idstringyesMust be a UUID
bodystringyesThe message text
workspace_idstringnoThe workspace to act in. Optional if you belong to exactly one workspace, required otherwise
kindstringnoreply or internal_note. Defaults to reply
apply_statusstringnoMove the ticket to this status in the same call. One of closed, deleted, merged, on_hold, open, pending, solved, spam

Source: services/runtime/src/runtime/mcp/tools.py:499-510, with the apply_status values built from services/runtime/src/runtime/api/tickets.py:47-49.

Reply or note

Two values, and only two.

kindWhat it does
replyA customer-facing reply. This is the default
internal_noteAn internal note, not sent to the customer

Source: services/runtime/src/runtime/mcp/tools.py:503-507. The default is declared in the schema and applied again by the handler (services/runtime/src/runtime/mcp/tools.py:346), so omitting it produces reply either way.

The default is a customer-facing reply

If you want an internal note you have to ask for one. A call that omits kind posts a customer-facing reply.

ticket_id and body are checked before anything else runs, and an empty string counts as absent. A call missing either is refused with ticket_id and body are required.

Source: services/runtime/src/runtime/mcp/tools.py:335-336.

Output

The event as the HTTP route returns it, delivered as JSON text.

Failures

An unusable value comes back as a tool error carrying the reason: a ticket_id that is not a UUID, a kind or apply_status outside the accepted set, or a status transition the ticket's current state does not allow.

Source: services/runtime/src/runtime/mcp/tools.py:350-359.

Anything unanticipated returns exactly one message, this tool call could not be completed, with the real exception and its traceback written to the server logs instead. That is deliberate, and it is why a caller never sees a database error.

Source: services/runtime/src/runtime/mcp/tools.py:566-574.

On this page