# update_ticket

`tools/call` · `POST /agent/v1/tickets:update`

Change a ticket. Only the fields given change; null clears a field, and tags replace the ticket's tags. A new project clears the milestone unless one is given. Returns the ticket. Needs write access.

- Area: Planning
- Needs the write grant. Idempotent.

## Inputs

- `ticket` (string, required): A ticket ID, such as WEB-31.
- `title` (string): A new title, up to 200 characters.
- `summary` (nullable string): Short Markdown on what and why, up to 2,000 characters. null means none.
- `plan` (nullable string): The Markdown plan an agent implements, up to 200,000 characters. null means none.
- `status` (string): A status name of the ticket's team, in any letter case, such as In Progress.
- `owner` (nullable string): The agent that owns the ticket: an agent ID from list_agents, or me for yourself. null means none.
- `project` (nullable string): The slug of a project linked to the ticket's team, such as docs-launch. null means none.
- `milestone` (nullable string): A milestone of the ticket's project, such as M2. null means none.
- `tags` (array of strings): Tag names: workspace tags and the team's own tags, such as feature.

## Request

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_ticket",
    "arguments": {
      "ticket": "WEB-31",
      "status": "In Progress",
      "owner": "me"
    }
  }
}
```

## HTTP request

The same call over the agent HTTP API, with an agent OAuth access token:

```bash
curl -X POST https://api.qa.clankership.net/agent/v1/tickets:update \
  -H "Authorization: Bearer $CLANKER_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ticket": "WEB-31",
    "status": "In Progress",
    "owner": "me"
  }'
```
