{"ok":true,"site":{"host":"codeplaygroundwebmcp.vercel.app","url":"https://codeplaygroundwebmcp.vercel.app/","type":"live","desc":"A WebMCP-enabled code playground that dynamically visualizes arrays, heaps, trees, graphs, grids, maps, sets, and Python traces.","tools":[{"name":"visualizer_get_workspace","kind":"answer","impl":"imperative","description":"Inspect the open Visualizer Playground, its run status, discovered Python variables, and visual mappings. Request a bounded source or input chunk only when needed. This never changes the workspace.","title":"Inspect visualization workspace","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"detail":{"type":"string","enum":["summary","source","inputs"],"description":"Return a summary, a source-code chunk, or a Python-input chunk.","default":"summary"},"offset":{"type":"integer","minimum":0,"description":"Character offset for source or input chunks.","default":0},"limit":{"type":"integer","minimum":200,"maximum":6000,"description":"Maximum characters in a requested source or input chunk.","default":3000}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"visualizer_run","kind":"act","impl":"imperative","description":"Run the code and inputs already accepted in the Visualizer Playground's isolated worker. This does not edit code or inputs. Optionally begin timeline playback after a successful run.","title":"Run current visualization","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"play":{"type":"boolean","description":"Start playing the generated timeline after the run succeeds.","default":false}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"visualizer_get_frame","kind":"answer","impl":"imperative","description":"Read a compact, structured snapshot of the current visualization frame, including rendered containers, highlighted values, pointers, nodes, edges, and the operation message. This never changes playback.","title":"Inspect visualization frame","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"visualizer_control_playback","kind":"act","impl":"imperative","description":"Control the accepted visualization timeline. This only changes the visible frame or playback speed; it never changes source code, inputs, or visual mappings. Frame numbers are one-based.","title":"Control visualization playback","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["play","pause","next","previous","rewind","jump"],"description":"Playback action to perform."},"frame":{"type":"integer","minimum":1,"description":"One-based frame number. Required only for the jump action."},"speed_ms":{"type":"integer","minimum":100,"maximum":1400,"description":"Optional delay between frames in milliseconds."}},"required":["action"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"visualizer_configure_visuals","kind":"act","impl":"imperative","description":"Configure how variables from the latest successful Python trace are visualized. This reversible action changes visual mappings only; it never edits or runs source code or inputs. Inspect the workspace first and use only discovered variable names.","title":"Configure Python visuals","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"bindings":{"type":"array","minItems":1,"maxItems":64,"description":"Visual mapping patches for variables discovered by the latest Python trace.","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Exact discovered variable name."},"enabled":{"type":"boolean"},"kind":{"type":"string","enum":["auto","sequence","grid","associative","graph","tree","heap","scalar"]},"view":{"type":"string","enum":["cells","bars","line"]},"role":{"type":"string","enum":["value","pointer"]},"target":{"type":"string","description":"Sequence variable highlighted by a pointer."},"pointer_mode":{"type":"string","enum":["index","value"]},"index_offset":{"type":"integer","minimum":-100000,"maximum":100000}},"required":["name"],"additionalProperties":false}}},"required":["bindings"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"visualizer_propose_python","kind":"act","impl":"imperative","description":"Stage a complete Python source and input change for the person to review. The proposal appears as a red/green diff and does not alter or run the workspace until the person explicitly selects Accept and run. Use this instead of trying to type into the editor.","title":"Propose Python workspace change","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":50000,"description":"Complete proposed Python source, including all unchanged code."},"inputs":{"description":"Complete proposed JSON-compatible input value.","type":["object","array","string","number","boolean","null"]},"summary":{"type":"string","minLength":1,"maxLength":600,"description":"Plain-language reason the proposal helps the user's visualization."},"changes":{"type":"array","maxItems":12,"items":{"type":"string","maxLength":240},"description":"Short concrete changes shown beside the diff."}},"required":["source","inputs","summary"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","favicon":"/favicons/codeplaygroundwebmcp.vercel.app.svg","apiSurface":"spec","toolCount":6}}