> ## Documentation Index
> Fetch the complete documentation index at: https://docs.montra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# update_ticket

> Replace a Montra ticket's title, summary, or markdown body.

Rewrites a ticket's text. Each field you pass overwrites the stored value outright, so send the complete new text rather than a fragment or a diff — read the current ticket with [`get_ticket`](/tools/get-ticket) first if you are amending rather than replacing.

Use it to record clarifications the person has approved, or to sharpen a vague spec before implementing it. Pass at least one of `title`, `summary`, or `body`; a call with none of them is an error.

## Input

<ParamField body="ticketId" type="string" required>
  Id of the Montra ticket (UUID).
</ParamField>

<ParamField body="title" type="string">
  Replacement title. Trimmed; 1–300 characters.
</ParamField>

<ParamField body="summary" type="string">
  Replacement one-line gist. Trimmed; up to 1000 characters.
</ParamField>

<ParamField body="body" type="string">
  Replacement markdown implementation spec.
</ParamField>

## Output

<ResponseField name="ticket" type="object" required>
  <Expandable title="properties">
    <ResponseField name="id" type="string" required>Ticket id.</ResponseField>
    <ResponseField name="documentId" type="string" required>Id of the document the ticket belongs to.</ResponseField>
    <ResponseField name="title" type="string" required>Title after the update.</ResponseField>
    <ResponseField name="summary" type="string" required>One-line gist after the update. Empty string when the ticket has none.</ResponseField>
    <ResponseField name="body" type="string" required>Markdown implementation spec after the update. Empty string when the ticket has none.</ResponseField>
    <ResponseField name="status" type="string" required>`todo` or `done`.</ResponseField>
    <ResponseField name="sortRank" type="string" required>Opaque ordering key that places the ticket within its document.</ResponseField>
    <ResponseField name="timestampMs" type="number" required>Offset into the source recording, in milliseconds, that the ticket points at.</ResponseField>
    <ResponseField name="inputId" type="string" required>Id of the input whose generation produced this ticket. `null` for hand-added tickets.</ResponseField>
    <ResponseField name="createdAt" type="string" required>ISO 8601 creation timestamp.</ResponseField>
    <ResponseField name="updatedAt" type="string" required>ISO 8601 timestamp of this update.</ResponseField>
  </Expandable>
</ResponseField>

## Notes

* Fields you omit are left untouched. Fields you pass are replaced wholesale — there is no append or patch mode.
* The edit is flagged as a manual edit, so a generation still running in the background will not overwrite what you wrote.
* Tickets outside the workspace this connection is bound to read as not found. See [workspace binding](/authentication#workspace-binding).
* Related: [`get_ticket`](/tools/get-ticket), [`set_ticket_status`](/tools/set-ticket-status), and the [agent workflow guide](/guides/agent-workflow).
