# update_project

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

Change a project. Only the fields given change; teams and products replace the links. A team stays linked while the project holds its tickets. An archived project cannot change. Returns the project. Needs write access.

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

## Inputs

- `project` (string, required): A project's slug, such as docs-launch.
- `name` (string): A new name, up to 100 characters.
- `slug` (string): A new slug, such as docs-site-launch.
- `teams` (array of strings): Keys of the teams whose tickets the project holds, such as WEB. Replaces the links. At least 1 item.
- `summary` (nullable string): Up to 200 characters on what the project delivers. null means none.
- `status` (string, one of: `planned`, `active`, `paused`, `completed`, `canceled`): Where the project stands. A new project starts planned.
- `lead` (nullable string): The project lead's email or user ID, such as maya@acme.dev. null means none.
- `targetDate` (nullable string): The target date as YYYY-MM-DD, such as 2026-11-30. null means none.
- `products` (array of strings): Slugs of the products the project changes, such as storefront. Replaces the links.
- `document` (nullable string): The project's Markdown document, up to 200,000 characters. null means none.

## Request

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_project",
    "arguments": {
      "project": "docs-launch",
      "status": "active",
      "targetDate": "2026-12-04"
    }
  }
}
```

## 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/projects:update \
  -H "Authorization: Bearer $CLANKER_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "project": "docs-launch",
    "status": "active",
    "targetDate": "2026-12-04"
  }'
```
