{"ok":true,"site":{"host":"playground.nottyduck.com","url":"https://playground.nottyduck.com/","type":"live","desc":"A tiny local-first WebMCP playground where you and an AI agent make harmless mischief together.","tools":[{"name":"playground.get_state","kind":"answer","impl":"imperative","description":"Inspect the current NottyDuck playground: duck, mission progress, toys, and spark locations. This is read-only and uses no account or network storage.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.move_duck","kind":"act","impl":"imperative","description":"Move the duck a small number of steps in one cardinal direction. The movement is animated in the same canvas the person sees and may collect nearby sparks.","inputSchema":{"type":"object","properties":{"direction":{"type":"string","enum":["up","down","left","right"],"description":"Cardinal direction to waddle."},"steps":{"type":"integer","minimum":1,"maximum":8,"description":"Small movement units; use 1-4 for precise play."}},"required":["direction","steps"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.set_target","kind":"act","impl":"imperative","description":"Send the duck toward a normalized point in the playground. Coordinates are between 0 and 1. A person can immediately interrupt the movement with keyboard or pointer input.","inputSchema":{"type":"object","properties":{"x":{"type":"number","minimum":0.08,"maximum":0.92,"description":"Horizontal target; 0 is left and 1 is right."},"y":{"type":"number","minimum":0.16,"maximum":0.9,"description":"Vertical target; 0 is top and 1 is bottom."}},"required":["x","y"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.spawn_toy","kind":"act","impl":"imperative","description":"Add one harmless toy to the shared playground. Toys are visual and local to this browser. At most 12 toys are kept.","inputSchema":{"type":"object","properties":{"kind":{"type":"string","enum":["ball","donut","paper-plane"],"description":"Toy to add."},"x":{"type":"number","minimum":0.08,"maximum":0.92,"description":"Horizontal spawn position."},"y":{"type":"number","minimum":0.16,"maximum":0.9,"description":"Vertical spawn position."}},"required":["kind","x","y"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.quack","kind":"act","impl":"imperative","description":"Make the duck show a playful text quack in the shared canvas. This does not use audio, a microphone, or an external service.","inputSchema":{"type":"object","properties":{"style":{"type":"string","enum":["tiny","loud","question"],"description":"The personality of the quack."}},"required":["style"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.customize_duck","kind":"act","impl":"imperative","description":"Change the local duck's short display name and color. This updates the visible UI and localStorage only.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":18,"description":"A friendly duck name, up to 18 characters."},"color":{"type":"string","enum":["yellow","coral","mint","purple"],"description":"Duck body color."}},"required":["name","color"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.create_surprise","kind":"act","impl":"imperative","description":"Create one bounded random playground moment: add a toy, make the duck quack, or give it a nearby destination. It never spends money, contacts anyone, or leaves the page.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.get_local_memory","kind":"answer","impl":"imperative","description":"Read the recent playful event log stored on this device. It contains only in-game actions and is read-only.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"playground.reset_local_world","kind":"act","impl":"imperative","description":"Reset the duck, score, toys, and event history in this browser. This is destructive only to this page's local saved game and requires the exact confirmation phrase.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"confirmation":{"type":"string","const":"reset tiny playground","description":"Must exactly equal: reset tiny playground"}},"required":["confirmation"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/playground.nottyduck.com.png","apiSurface":"spec","toolCount":9}}