buzz_canvas_write
Replace a channel's shared canvas with new markdown, using a head check against a prior read to refuse writes when the canvas changed, so concurrent edits aren't silently overwritten.
Instructions
Replace a channel's canvas with new markdown (kind 40100) — it overwrites the WHOLE canvas for everyone. Read it first with buzz_canvas_read and pass the head id it showed as expected_head ("none" if there was no canvas): the write is refused if the canvas changed since your read (re-read, merge, retry). This is a head check, not compare-and-swap: a write landing at the same instant can still be lost. content ≤ 128 KB; empty content only with clear: true. Agent mode only for now (kind 40100 isn't on the wire-sign allowlist).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"channel": "<channel>",
"content": "<content>",
"expected_head": "<expected_head>"
},
"name": "buzz_canvas_write"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | set true (with empty content) to blank the canvas | |
| channel | Yes | channel name or id | |
| content | Yes | the full new canvas markdown (≤ 128 KB) | |
| dry_run | No | preview only: resolve everything and show the exact event that would be signed (auth tags redacted) — nothing is signed, uploaded or sent | |
| expected_head | Yes | the head id from buzz_canvas_read (full 64-hex), or "none" if the channel had no canvas |