Turn any picture into a hand-drawn whiteboard animation video, from your AI assistant.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Draw a picture as a whiteboard animation. Spends credits (see quote). Answers at once with the drawing_id; the drawing takes a few minutes, follow it with get_drawing.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Draw a picture as a whiteboard animation. Spends credits (see quote). Answers at once with the drawing_id; the drawing takes a few minutes, follow it with get_drawing.
| Argument | Type | Description |
|---|---|---|
| image | object | |
| title | string | |
| settings | object | |
| upload_id | string | |
| max_credits | number | |
| quote_version | string |
{
"type": "object",
"required": [],
"properties": {
"image": {
"type": "object",
"required": [
"download_url"
],
"properties": {
"file_id": {
"type": "string"
},
"file_name": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri"
}
}
},
"title": {
"type": "string",
"maxLength": 120
},
"settings": {
"type": "object",
"required": [],
"properties": {
"hold": {
"anyOf": [
{
"const": 0
},
{
"const": 0.08
},
{
"const": 0.16
},
{
"const": 0.32
}
]
},
"brush": {
"type": "object",
"required": [
"seed",
"size",
"swing"
],
"properties": {
"seed": {
"type": "integer"
},
"size": {
"type": "number",
"maximum": 8,
"minimum": 0.1
},
"swing": {
"type": "number",
"maximum": 8,
"minimum": 0
}
}
},
"strategy": {
"enum": [
"baseline",
"regions",
"attention",
"cohesion"
],
"type": "string"
},
"color_order": {
"enum": [
"subject",
"natural",
"regions"
],
"type": "string"
},
"line_duration": {
"type": "number",
"maximum": 600,
"minimum": 1
},
"color_duration": {
"type": "number",
"maximum": 600,
"minimum": 1
}
}
},
"upload_id": {
"type": "string",
"minLength": 1
},
"max_credits": {
"type": "number",
"minimum": 0
},
"quote_version": {
"type": "string",
"maxLength": 64,
"minLength": 1
}
}
}Start uploading a picture: answers an upload_url to PUT the bytes to, with the given headers. Then call create_drawing with the upload_id. Not needed when the host attaches the picture to create_drawing itself.
| Argument | Type | Description |
|---|---|---|
| size* | integer | |
| file_name* | string | |
| content_type* | string |
{
"type": "object",
"required": [
"file_name",
"content_type",
"size"
],
"properties": {
"size": {
"type": "integer",
"maximum": 10485760,
"minimum": 1
},
"file_name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"content_type": {
"enum": [
"image/png",
"image/jpeg",
"image/webp"
],
"type": "string"
}
}
}A drawing by id: its status and progress, its preview page, and once done the export options render_link accepts for it.
| Argument | Type | Description |
|---|---|---|
| drawing_id* | string |
{
"type": "object",
"required": [
"drawing_id"
],
"properties": {
"drawing_id": {
"type": "string"
}
}
}The latest drawings in the library, newest first.
| Argument | Type | Description |
|---|---|---|
| limit | integer |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
}
}
}What drawing one picture costs, in credits, and the quote_version to pass when creating it.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}One link that renders up to 20 of your drawings as files, each with its own choices (format, resolution, aspect, background, hand…; see get_drawing export_options). Opening it in a browser renders them one after another and saves each file to that browser’s downloads; drawings still being drawn are rendered once they finish. Follow it with wait_render.
| Argument | Type | Description |
|---|---|---|
| drawings* | array |
{
"type": "object",
"required": [
"drawings"
],
"properties": {
"drawings": {
"type": "array",
"items": {
"type": "object",
"required": [
"drawing_id"
],
"properties": {
"hand": {
"type": "string",
"pattern": "^[\\w-]{1,40}$"
},
"skip": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"trace": {
"type": "boolean"
},
"aspect": {
"enum": [
"original",
"16:9",
"9:16",
"1:1"
],
"type": "string"
},
"colour": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$"
},
"format": {
"enum": [
"mp4",
"webm",
"png"
],
"type": "string"
},
"timing": {
"enum": [
"keep",
"trim"
],
"type": "string"
},
"hand_size": {
"type": "number",
"maximum": 1.5,
"minimum": 0.65
},
"hand_tilt": {
"type": "integer",
"maximum": 15,
"minimum": -15
},
"background": {
"enum": [
"paper",
"colour",
"transparent",
"layers"
],
"type": "string"
},
"drawing_id": {
"type": "string",
"minLength": 1
},
"resolution": {
"enum": [
"original",
"720p",
"1080p"
],
"type": "string"
},
"hand_direction": {
"enum": [
"auto",
"right",
"bottom"
],
"type": "string"
}
}
},
"maxItems": 20,
"minItems": 1
}
}
}Call first. The signed-in workspace: its plan, credits left, drawings queued and running, and how many may queue.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}For the drawing card: answers get_drawing as soon as the drawing moves on from the status and progress the card last showed, or after about 50 seconds.
| Argument | Type | Description |
|---|---|---|
| status | string | |
| progress | any | |
| drawing_id* | string |
{
"type": "object",
"required": [
"drawing_id"
],
"properties": {
"status": {
"type": "string"
},
"progress": {},
"drawing_id": {
"type": "string"
}
}
}A render link’s files: each drawing’s state (pending, rendering, saved, failed) and, once saved, its file name and size in the browser’s downloads. Pass back the states of the last answer: it answers as soon as any of them moves on, or after about 50 seconds.
| Argument | Type | Description |
|---|---|---|
| states | array | |
| render_id* | string |
{
"type": "object",
"required": [
"render_id"
],
"properties": {
"states": {
"type": "array",
"items": {
"type": "string"
}
},
"render_id": {
"type": "string"
}
}
}