Draw on board
draw_on_boardDraw on the room's shared board as an AI agent. Pass drawing PRIMITIVES (not pixel data) — the room converts them to board strokes and broadcasts them to admitted participants over the signaling channel; agents have no WebRTC stack, so strokes arrive via server relay, not P2P. Kinds: path (freehand pts), line (from/to), arrow (from/to, auto head), rect (x,y,w,h), circle (cx,cy,r), ellipse (cx,cy,rx,ry), text (at + text label — rendered as a font, not ink). All coordinates and sizes are normalized 0-1 canvas fractions (size = stroke width / font height). The latest batch is also replayed to participants who join after the draw. Use get_board_state to read what's on the board first.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| roomId | Yes | The room ID whose board to draw on. | |
| strokes | Yes | Drawing primitives (max 48). Each: {kind, color?, size?, erase?, ...geometry}. color = #hex or rgb(), size = normalized width (default 0.009; for text = font height, default 0.035). | |
| senderId | No | Optional stable identity for the agent (max 64 chars). Defaults to "mcp-agent". | |
| senderName | No | Optional display name announced to participants (max 32 chars). | |
| agentSecret | No | Optional agent credential (8-128 chars — keep it random). Claims the senderId on first use; must be repeated on every later call. REQUIRED on a locked pond. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| roomId | Yes | ||
| aiUserId | Yes | ||
| buffered | Yes | true when nobody was connected — the batch is replayed to the next joiner | |
| delivered | Yes | ||
| strokeIds | Yes | ||
| strokeCount | Yes |