{"ok":true,"site":{"host":"mcp.kitemir.jp","url":"https://mcp.kitemir.jp/canvas/","type":"live","desc":"Barge In","tools":[{"name":"canvas_describe","kind":"act","impl":"imperative","description":"Report the current state of the canvas: what is drawn, how much, and who drew it. **It also reports anything the user drew themselves since you last called it**, so call it again before you draw and before you answer, for as long as the conversation continues.","inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_replan","kind":"act","impl":"imperative","description":"Declare how the user's interruption changes what you are making. **Required after canvas_describe reports an interruption — every drawing tool stays refused until you call this.** The new plan must absorb what the user drew, not merely tolerate it. ⚠️ **Write all three fields in ENGLISH**, whatever language the conversation is in — this page shows them on the canvas, and the canvas is in English.","inputSchema":{"type":"object","properties":{"observed":{"type":"string","description":"IN ENGLISH. What the user added, as you see it. e.g. \"two red wheels under the lion\""},"new_plan":{"type":"string","description":"IN ENGLISH. What the whole picture will now become. e.g. \"a lion riding a wheeled car\""},"abandoning":{"type":"string","description":"IN ENGLISH. The part of your earlier plan you are giving up. e.g. \"the four legs\""}},"required":["observed","new_plan","abandoning"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_batch","kind":"act","impl":"imperative","description":"Draw many shapes in ONE call. shapes is an array; each item is {\"kind\":\"stroke\"|\"circle\"|\"rect\"|\"text\"} plus that shape's own fields, using the same names as the single-shape tools. ⚠️ **This is the normal way to draw** — every call costs the user seconds of waiting, so 30 shapes in one call beats 30 calls. They are laid down over a few seconds, and if the user draws meanwhile the rest is dropped — so send one part at a time (the mane, then the face), not a whole picture at once.","inputSchema":{"type":"object","properties":{"shapes":{"type":"array","description":"Up to 80 shapes, drawn in order. Each needs \"kind\" plus that kind's fields","items":{"type":"object"}}},"required":["shapes"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_stroke","kind":"act","impl":"imperative","description":"Draw ONE polyline. ⚠️ Drawing more than one? Use canvas_batch and send them together. points is [[x,y],[x,y],...] where x and y are relative coordinates in 0-1. ⚠️ **Pass every point in one call. Do not call once per segment.** For a curve, list many points and send them together. Example: draw 6 whiskers in one call, not six. Each call costs a few seconds, so the number of calls is the wait the user sees.","inputSchema":{"type":"object","properties":{"points":{"type":"array","description":"[[x,y],...] every value in 0-1","items":{"type":"array","items":{"type":"number"}}},"color":{"type":"string","description":"CSS colour. Defaults to the current colour"},"width":{"type":"number","description":"Line width in px. Optional"}},"required":["points"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_circle","kind":"act","impl":"imperative","description":"Draw ONE circle. cx,cy are the centre in relative coordinates (0-1); r is the radius as a fraction of the width. ⚠️ Drawing several? Use canvas_batch instead.","inputSchema":{"type":"object","properties":{"cx":{"type":"number","description":"centre x, 0-1"},"cy":{"type":"number","description":"centre y, 0-1"},"r":{"type":"number","description":"radius, 0-1"},"color":{"type":"string","description":"CSS colour"},"width":{"type":"number","description":"line width"},"fill":{"type":"boolean","description":"fill it in"}},"required":["cx","cy","r"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_rect","kind":"act","impl":"imperative","description":"Draw ONE rectangle. x,y are the top-left corner in relative coordinates; w,h are width and height as fractions. ⚠️ Drawing several? Use canvas_batch instead.","inputSchema":{"type":"object","properties":{"x":{"type":"number","description":"top-left x, 0-1"},"y":{"type":"number","description":"top-left y, 0-1"},"w":{"type":"number","description":"width, 0-1"},"h":{"type":"number","description":"height, 0-1"},"color":{"type":"string","description":"CSS colour"},"width":{"type":"number","description":"line width"},"fill":{"type":"boolean","description":"fill it in"}},"required":["x","y","w","h"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_text","kind":"act","impl":"imperative","description":"Place text. x,y are the left edge and vertical middle of the text, in relative coordinates. size is the height as a fraction (0.06 is a normal size). Write the text in English unless the user asked otherwise. Several at once? Use canvas_batch.","inputSchema":{"type":"object","properties":{"x":{"type":"number","description":"x, 0-1"},"y":{"type":"number","description":"y, 0-1"},"text":{"type":"string","description":"the text to place"},"size":{"type":"number","description":"text height, 0-1"},"color":{"type":"string","description":"CSS colour"}},"required":["x","y","text"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_undo","kind":"act","impl":"imperative","description":"Undo the most recently drawn item. It may be something the user drew, so do not call it repeatedly without saying so.","inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]},{"name":"canvas_clear","kind":"act","impl":"imperative","description":"Erase the whole canvas. ⚠️ This also erases what the user drew. Only call it when the user has clearly asked for it.","inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/canvas/","pages":["/canvas/"]}],"category":"Media & Personal","favicon":"/favicons/mcp.kitemir.jp.png","apiSurface":"spec","toolCount":9}}