/install excalidraw-canvas
Excalidraw Canvas
Render diagrams or any drawings as PNG via a hosted API. Always double-check coordinates of elements or arrows.
Render
RESULT=$(curl -s -m 60 -X POST https://excalidraw-mcp.up.railway.app/api/render \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"elements": [...]}')
# Save PNG
echo "$RESULT" | python3 -c "import json,sys,base64; d=json.load(sys.stdin); open('/tmp/diagram.png','wb').write(base64.b64decode(d['png']))"
# Get edit URL
echo "$RESULT" | python3 -c "import json,sys; print(json.load(sys.stdin)['editUrl'])"
Response: {"success": true, "png": "\x3Cbase64>", "editUrl": "https://..../canvas/render-xxxxx"}
Always returns both the PNG image and an edit URL where your owner can modify the diagram in a full Excalidraw editor.
Element Types
All available types: rectangle, ellipse, diamond, text, arrow, line, freedraw
Shapes (rectangle, ellipse, diamond)
{"type":"rectangle","x":100,"y":100,"width":200,"height":80,"bg":"#a5d8ff","label":"My Box"}
{"type":"ellipse","x":100,"y":100,"width":150,"height":100,"bg":"#b2f2bb","label":"Node"}
{"type":"diamond","x":100,"y":100,"width":140,"height":100,"bg":"#ffec99","label":"Decision?"}
x,y— positionwidth,height— sizebg— any hex fill colorstroke— border color (default#1e1e1e)label— text centered inside the shape
Text
{"type":"text","x":100,"y":50,"text":"Title","fontSize":28}
Arrows & Lines
{"type":"arrow","x":300,"y":140,"points":[[0,0],[150,0]]}
{"type":"line","x":0,"y":200,"points":[[0,0],[800,0]]}
Points are relative to x,y. Horizontal: [[0,0],[150,0]], vertical: [[0,0],[0,100]], bent: [[0,0],[0,50],[100,50]].
Freedraw
{"type":"freedraw","x":100,"y":100,"points":[[0,0],[5,3],[10,8],[20,15]]}
Freehand path — array of [x,y] points relative to position.
Full Example
RESULT=$(curl -s -m 60 -X POST https://excalidraw-mcp.up.railway.app/api/render \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"elements": [
{"type":"text","x":250,"y":20,"text":"System Design","fontSize":28},
{"type":"rectangle","x":50,"y":80,"width":180,"height":70,"bg":"#a5d8ff","label":"Frontend"},
{"type":"rectangle","x":300,"y":80,"width":180,"height":70,"bg":"#b2f2bb","label":"API"},
{"type":"rectangle","x":550,"y":80,"width":180,"height":70,"bg":"#ffec99","label":"Database"},
{"type":"arrow","x":230,"y":115,"points":[[0,0],[70,0]]},
{"type":"arrow","x":480,"y":115,"points":[[0,0],[70,0]]}
]}')
echo "$RESULT" | python3 -c "import json,sys,base64; d=json.load(sys.stdin); open('/tmp/diagram.png','wb').write(base64.b64decode(d['png'])); print(d['editUrl'])"
Sending to User
message(action="send", filePath="/tmp/diagram.png", caption="✏️ Edit: {editUrl}")
Always include the edit URL so the user can tweak the diagram.
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install excalidraw-canvas - After installation, invoke the skill by name or use
/excalidraw-canvas - Provide required inputs per the skill's parameter spec and get structured output
What is Excalidraw Canvas?
Create Excalidraw diagrams and render them as PNG images. Use whenever you need to draw, explain complex workflows, visualize UIs/wireframes, or diagram anyt... It is an AI Agent Skill for Claude Code / OpenClaw, with 899 downloads so far.
How do I install Excalidraw Canvas?
Run "/install excalidraw-canvas" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Excalidraw Canvas free?
Yes, Excalidraw Canvas is completely free (open-source). You can download, install and use it at no cost.
Which platforms does Excalidraw Canvas support?
Excalidraw Canvas is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Excalidraw Canvas?
It is built and maintained by 0xArtex (@0xartex); the current version is v1.0.0.