update_page
Propose an update to an existing page — title, tags, folder, or collection.
Last updated
update_page
Propose an update to an existing page: rename, re-tag, move between folders, or move between collections. Only the fields the agent provides are patched; omitted fields are untouched.
Queued for human approval unless the agent has auto-approve enabled.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
page_id | string | yes | The ID of the page to update. |
title | string | no | New title. Maximum 500 characters. |
tags | string[] | no | Replacement tag list. Not merged — the full array wins. |
folder_id | string | null | no | New folder ID, or null to move to the collection root. |
collection_id | string | no | Move to a different collection. |
To change the body of a page, use a different surface — update_page does
not accept a body argument today.
To null-out a folder (move to collection root), explicitly pass
"folder_id": null. Omitting the field leaves it unchanged.
Returns
Auto-approved
{
"content": [{ "type": "text", "text": "Page updated: note_xyz789." }]
}
Awaiting approval
{
"content": [
{
"type": "text",
"text": "Update proposal submitted — awaiting approval in Plainwork. Action ID: act_abc123."
}
]
}
The approval UI shows the diff: which fields changed, to what, and the
agent's stated intent (from the preview diffSummary).
Example
Rename and re-tag a page:
{
"tool": "update_page",
"arguments": {
"page_id": "note_xyz789",
"title": "Standup 2026-04-10 (archived)",
"tags": ["standup", "archive"]
}
}
Move a page to the collection root:
{
"tool": "update_page",
"arguments": {
"page_id": "note_xyz789",
"folder_id": null
}
}
See also
read_page— fetch the current state before updatingmove_item— alternative API for collection/folder movescreate_page