{"ok":true,"site":{"host":"sharableworlds.com","url":"https://sharableworlds.com/","type":"live","desc":"An open dotted canvas built by a human and a WebMCP agent together. The agent reads the map and fills empty lots; the human paints and locks their own.","tools":[{"name":"get_occupancy","kind":"answer","impl":"imperative","description":"READ — call first, every session. The map of the scene: goal (the board's standing goal — build toward it when set), scene (type, story, seed, phase), zones, filled lots as lot:id:owner, empty lots you can actually stand on, human_locks (never write there), the human's selection and last actions, and next_step — what the lifecycle wants from you now. THE LIFECYCLE for a scene request: plan_scene (understand + plan, no mutation) → compose_scene (architecture: footprint, zones, walls, stairs, water, paths, terrain) → populate_zones (the story objects, zone by zone) → create_environment (the framing boundary) → get_scene / inspect_region (look) → validate_scene (the completeness score) → repair_scene or targeted repairs → validate_scene again until complete. build_scene runs that whole loop in one call when you cannot steer. To GROW a scene that already stands from a new prompt ('add a fishing harbor with boats', 'build on this with a market and more people') call extend_scene — it is ADDITIVE: it annexes the zones the prompt needs, fills them, frames them, and validates the whole; nothing standing is removed. Never compose_scene or build_scene for that — they replace the architecture. A SMALL request ('add a tree beside the house') is ONE targeted call (place_piece / create_vegetation / move_piece), never a rebuild.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_scene_rules","kind":"answer","impl":"imperative","description":"READ — the world-building LAWS this application enforces, the completeness model (six scored dimensions), the scene archetypes it knows (backyard picnic, graveyard, market, house, castle, forest camp, harbor, arcade, village, street, skate park, arena, farm, park), the theme roster, and the ground palette. validate_scene runs every applicable law; the hard ones (stairs, walkways, off-scene lots) refuse violating writes at placement time. Read once before building.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_catalog","kind":"answer","impl":"imperative","description":"READ — the Kenney catalog (1,813 pieces, 22 packs). Filter with pack (furniture, pets, food, nature, coaster, toy-car, …), kind (pet|food|furniture|building|cave|space|nature|coaster|character|car|boat|stall|machine|tree|prop|crate|dungeon|pirate|ramp), or query (substring of id/label). Use ids in place_piece / place_batch. You rarely need this — the archetype composer and populate_zones choose pieces themselves.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"pack":{"type":"string","description":"Pack slug, e.g. furniture, pets, mini-arcade, toy-car."},"kind":{"type":"string","description":"Catalog kind, e.g. pet, food, furniture, building, nature, coaster."},"query":{"type":"string","description":"Case-insensitive substring of id or label."},"limit":{"type":"number","description":"Max ids per pack (default 40)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_scene","kind":"answer","impl":"imperative","description":"READ — the inspect step: every placed piece as id:lot:kind:zone:facing:owner, paginated (limit 40, page 0…). Filter by zone id/type or kind. Call after every significant build phase to see what actually landed before deciding the next move; use inspect_region for one zone in depth and lookup_object for one piece.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"page":{"type":"number","description":"0-based page (default 0)."},"limit":{"type":"number","description":"Pieces per page, max 80 (default 40)."},"zone":{"type":"string","description":"Only pieces inside this zone id or type."},"kind":{"type":"string","description":"Only pieces of this catalog kind."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_region","kind":"answer","impl":"imperative","description":"READ — look closely at one zone (zone id/type) or the area around a lot (lot + radius): its purpose, the pieces inside with their placement records (lot, zone, level, surface, facing, on_path), path and stair cells, and empty standable lots. The inspect step for a zone you just built or are about to repair.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"zone":{"type":"string","description":"Zone id or type from get_occupancy."},"lot":{"type":"string","description":"Center lot (A1-style) when not inspecting a zone."},"radius":{"type":"number","description":"Cells around lot (default 2, max 5)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lookup_object","kind":"answer","impl":"imperative","description":"READ — the full placement record for one piece id: catalog id, kind, lot, zone, level, surface, facing, clearance, whether it stands on a path, owner/locked/label, plus its nearest neighbours. Use it to check a single piece before moving or removing it.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Piece id, e.g. pirate-barrel-2."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_selection","kind":"answer","impl":"imperative","description":"READ — what the human has selected right now plus their recent edits. Build around the human's focus instead of guessing.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"tell_story","kind":"act","impl":"imperative","description":"READ — a short narrated recap of everything built so far (a few paragraphs of prose) to relay to the human when they ask what happened or for a summary.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"plan_scene","kind":"act","impl":"imperative","description":"PLAN (read-only, no mutation) — the UNDERSTAND + PLAN step for any medium or complex request. Pass theme (free text, e.g. 'a backyard picnic with burgers and cake'), optional type (an archetype id: backyard_picnic|graveyard|market|house|castle|forest_camp|harbor|arcade|village|street|skate_park|arena|farm|park), optional seed (same theme + same seed = the same plan; omit to mint a fresh world). Returns the intent (scene type, story, focal point, required and supporting elements, complexity), the zone program (which places, where, why), the environment (theme, ground, boundary), circulation, the seeded composition summary per zone, and next — the exact call sequence to build it. Nothing is placed and nothing on the canvas changes: read the plan, adjust if you must (create_zone, apply_theme after composing), then call compose_scene with the plan_id. Do NOT call this for a small addition.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"theme":{"type":"string","description":"What to build. Defaults to the board's standing goal when omitted."},"type":{"type":"string","description":"Optional archetype id to force, e.g. graveyard."},"requirements":{"type":"array","items":{"type":"string"},"description":"Short phrases the scene must include; folded into the theme."},"seed":{"type":"string","description":"Scene seed like PICNIC-8F42KQ. Omit to mint a fresh one."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compose_scene","kind":"act","impl":"imperative","description":"COMPOSE (mutation, architecture only) — stage a plan's composition onto the canvas: the footprint, themed ground, zones with their walls/stairs/water/road/rise, and the paths between them. NO props are placed. Pass plan_id from plan_scene (or theme/type/seed to plan and compose in one step). The agent's previous build is swept; human pieces are preserved. Returns the zones and circulation and what to call next: populate_zones, then create_environment, then validate_scene. For a small change to an existing scene do NOT call this (it replaces the architecture); use create_zone / create_path / place_piece instead, and extend_scene to grow a standing scene from a new prompt.","inputSchema":{"type":"object","properties":{"plan_id":{"type":"string","description":"The plan_id (seed) returned by plan_scene."},"theme":{"type":"string","description":"Free text when you skipped plan_scene."},"type":{"type":"string","description":"Optional archetype id."},"requirements":{"type":"array","items":{"type":"string"}},"seed":{"type":"string","description":"Scene seed to reproduce a world."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"populate_zones","kind":"act","impl":"imperative","description":"EXECUTE (bulk, semantic) — build the story objects of the composed scene: the focal anchor of every zone first, then each zone's required and supporting elements arranged by their own grammar (seats ring the table facing it, food beside it, stalls face the aisle, furniture backs the walls, graves in rows), then the people, facing the action. Pass zones (ids from compose_scene; default all) and/or only (element roles such as 'seating', 'burgers', or 'people') to fill part of a scene or repair a gap validate_scene named. Already-realized pieces are skipped, so it is safe to call again. Returns per-zone placed/skipped with reasons and the first placement records. Follow with create_environment, then validate_scene.","inputSchema":{"type":"object","properties":{"zones":{"type":"array","items":{"type":"string"},"description":"Zone ids to fill (default: every zone)."},"only":{"type":"array","items":{"type":"string"},"description":"Element roles to place (default: all), e.g. ['seating', 'people']."},"intent":{"type":"string","description":"Short phrase shown live on the canvas."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_environment","kind":"act","impl":"imperative","description":"EXECUTE (bulk, semantic) — the environmental framing in one call: the seeded boundary along the coast (a forest edge, standing stones — whatever the theme says), undergrowth, and a little scene texture, with deliberate gaps at the entrance, piers, roads, and functional zones. Placements go through the same collision/lock/walkway rules as everything else. Optional density (low|medium|high) and style (catalog flavor, e.g. 'dead trees'). The repair for a bare or thin boundary. Call after populate_zones; follow with validate_scene.","inputSchema":{"type":"object","properties":{"density":{"type":"string","enum":["low","medium","high"]},"style":{"type":"string","description":"Optional catalog flavor for the boundary."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"build_scene","kind":"act","impl":"imperative","description":"ORCHESTRATOR — the complete lifecycle in ONE call, for hosts that cannot steer step by step: plan_scene → compose_scene → populate_zones → create_environment → get_scene → validate_scene → repair_scene → validate_scene, all dispatched through the same WebMCP tools (they appear nested in the trace). Pass theme (and optional seed to reproduce a world). Prefer the staged calls when you want to read the plan or steer the composition; never use this for a small addition, and never to add to a scene that already stands — that is extend_scene.","inputSchema":{"type":"object","properties":{"theme":{"type":"string","description":"What to build."},"seed":{"type":"string","description":"Scene seed to reproduce a world; omit to mint a fresh one."},"max_repairs":{"type":"number","description":"Repair budget (default 6)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"extend_scene","kind":"act","impl":"imperative","description":"GROW (mutation, ADDITIVE) — build ON the scene that already stands from a new prompt, never replacing it: understands the prompt, reuses zones of the types it needs and annexes the rest beside the footprint (a harbor digs water and builds a pier, a market lays a square, a house raises a walled room), fills them with the prompt's story objects and people through the archetype grammar, frames the new ground, then validates the WHOLE scene (the base plus every addition) and repairs. Human pieces and the existing build stay exactly where they are. Pass prompt ('a fishing harbor with boats at anchor', 'a market with stalls and more people', 'a garden with benches'). Requires a scene — build_scene first on an empty board. The share link replays every addition in order, so the grown world is reproducible.","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","description":"What to add to the current scene."},"max_repairs":{"type":"number","description":"Repair budget after validation (default 6; 0 skips repair)."},"validate":{"type":"boolean","description":"Validate and repair inside this call (default true). A steering host may pass false and run validate_scene / repair_scene itself."}},"required":["prompt"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_zone","kind":"act","impl":"imperative","description":"SEMANTIC — add ONE functional zone to the current environment (architecture only, no props). The usual repair when validate_scene says a zone is missing, or the way to grow a scene ('add a garden to the west'). Pass type (plaza|home|market|garden|harbor|street|arcade|workshop|keep|lab|camp|skyline), optional location (north|south|east|west|center), size (small|medium|large), label. Interior types raise a walled terrace with a stair; garden lays a bed; harbor digs water and builds a pier; street pours road. A walk to the plaza is threaded automatically. On an empty board this also creates the starter footprint. Fill it afterwards with populate_zones {zones: [id]}.","inputSchema":{"type":"object","properties":{"type":{"type":"string","description":"plaza|home|market|garden|harbor|street|arcade|workshop|keep|lab|camp|skyline"},"location":{"type":"string","enum":["north","south","east","west","center"]},"size":{"type":"string","enum":["small","medium","large"]},"label":{"type":"string","description":"Display name, e.g. 'the fish market'. Max 40 chars."}},"required":["type"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_path","kind":"act","impl":"imperative","description":"SEMANTIC — thread a walking path between two points; the repair for a zone validate_scene says is cut off. Pass from and to as zone ids ('market'), zone types, lot ids ('M13'), or 'entrance' (the south coast). Clipped to the decks; ends one cell short of a zone's focal so the landmark stays a pedestal.","inputSchema":{"type":"object","properties":{"from":{"type":"string","description":"Zone id/type, lot id, or 'entrance'."},"to":{"type":"string","description":"Zone id/type or lot id."}},"required":["from","to"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_prop_cluster","kind":"act","impl":"imperative","description":"SEMANTIC (bulk) — furnish ONE zone by its own grammar in one call; the single-zone form of populate_zones (which is preferred for a composed scene). Pass zone (id or type) and optional theme to flavor the picks. Never furnish a zone piece by piece.","inputSchema":{"type":"object","properties":{"zone":{"type":"string","description":"Zone id or type, e.g. 'market' or 'garden-2'."},"theme":{"type":"string","description":"Optional flavor, e.g. 'fresh fruit and bread'."}},"required":["zone"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_focal_point","kind":"act","impl":"imperative","description":"SEMANTIC — give a zone its visual anchor: the archetype's focal element (a picnic table, a monument, a fountain, a campfire) or, without one, the most massive themed landmark — or a specific catalog id. Stands it at the zone's focal lot, nudging at most a cell. Pass zone (id or type; default the scene's focal zone) and optional theme or id. The repair for a missing-focal-point validation failure.","inputSchema":{"type":"object","properties":{"zone":{"type":"string","description":"Zone id or type."},"theme":{"type":"string","description":"Optional flavor for choosing the landmark, e.g. 'fountain'."},"id":{"type":"string","description":"Exact catalog id to use instead of letting the page choose."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_vegetation","kind":"act","impl":"imperative","description":"SEMANTIC (bulk) — plant a group in one call; never place trees one at a time. area: 'edge' rings the coastline (the same framing create_environment lays, for when you want a specific style or density), or a zone id/type plants inside that zone. Optional style (e.g. 'pine trees rocks', 'dead trees') and density (low|medium|high). Placements obey collision, lock, and walkway rules.","inputSchema":{"type":"object","properties":{"area":{"type":"string","description":"'edge' for the coastline boundary, or a zone id/type from get_occupancy."},"style":{"type":"string","description":"Optional catalog flavor, e.g. 'dead trees', 'palm trees rocks'."},"density":{"type":"string","enum":["low","medium","high"]}},"required":["area"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_ground_patch","kind":"act","impl":"imperative","description":"SEMANTIC — paint one themed ground patch: an intentional region of a different material, not noise. Pass material (see get_scene_rules), optional near (zone id/type or lot id — defaults to the island center), and size (small|medium|large).","inputSchema":{"type":"object","properties":{"material":{"type":"string","description":"A ground material, e.g. moss, dirt, cobble, snow, candy-pink."},"near":{"type":"string","description":"Zone id/type or lot id to center the patch on."},"size":{"type":"string","enum":["small","medium","large"]}},"required":["material"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_theme","kind":"act","impl":"imperative","description":"SEMANTIC — restyle the whole environment with a theme's material ecosystem: repaints the ground to the theme's primary, lays fresh seeded patches, sets the walk material. Pass theme (an id from get_scene_rules or free text, e.g. 'spooky graveyard'). Pieces are untouched — follow with create_environment if the boundary should change too.","inputSchema":{"type":"object","properties":{"theme":{"type":"string","description":"Theme id (e.g. spooky, candy, snow) or free text."}},"required":["theme"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"place_piece","kind":"act","impl":"imperative","description":"PRIMITIVE — ONE object. Use for a single targeted addition ('a tree beside the house': relative_to the house id, side), a unique landmark, or a correction after validate_scene. NEVER build a scene or a group with repeated calls: plan_scene → compose_scene → populate_zones builds worlds; create_vegetation plants groups; place_batch places an explicit list in one call. Pass id (catalog id, preferred — e.g. market-display-fruit, pirate-ship-pirate-large, pets-animal-cat, food-burger-cheese, furniture-lounge-sofa, nature-tree-oak, coaster-station, toycar-vehicle-racer, space-room-large) or kind. Target lot (A1-style) OR relative_to (piece id) + side (north|south|east|west) + gap (1-4); with no target the page grows the scene. rot (0|90|180|270: 0 faces camera-south, 90 west, 180 north, 270 east) sets facing. Refuses occupied, off-scene, stair, walkway (bulky pieces), and human-locked lots; a collision nudges at most 2 cells and the record says so (requested_lot, drift). Returns the placement record and the map. Lots are A1-style ids (M13 is the home center); there are no x,y. Never target human_locks. Every write returns the placement record (lot, requested_lot, drift, zone, level, surface, facing) — read it. Pass intent (a short phrase) so the canvas can narrate.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Any catalog id from list_catalog, e.g. pirate-ship-pirate-large or furniture-lounge-sofa."},"kind":{"type":"string","description":"Fallback when no id: stall|prop|character|tree|crate|machine|ramp|dungeon|boat|pirate|car|pet|food|furniture|building|cave|space|nature|coaster."},"intent":{"type":"string","description":"Short phrase shown live on the canvas, e.g. 'docking the pirate ship'."},"lot":{"type":"string","description":"Lot id like C4. Omit to place relative or auto."},"relative_to":{"type":"string","description":"Existing piece id, e.g. pirate-barrel-1."},"side":{"type":"string","enum":["north","south","east","west"]},"gap":{"type":"number","description":"Cells away from relative_to, 1-4. Default 1."},"flip":{"type":"boolean","description":"Mirror horizontally."},"rot":{"type":"number","description":"Facing: 0|90|180|270."},"reason":{"type":"string","description":"Story reason ('the centerpiece', 'out over the water') for the narrator."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"place_batch","kind":"act","impl":"imperative","description":"PRIMITIVE (bulk) — an explicit list of placements in ONE call, for an arrangement you designed yourself (a row of lanterns, three characters around a fire). For a composed scene prefer populate_zones; for vegetation prefer create_vegetation. Pass intent (what you noticed + what you will build) and items: place_piece specs ({id|kind, lot? or relative_to+side+gap?, flip?, rot?, reason?}), max 48, applied in order. Locks and collisions are skipped, not fatal. Returns per-item records (lot, requested_lot, drift, zone) and the map. Lots are A1-style ids (M13 is the home center); there are no x,y. Never target human_locks. Every write returns the placement record (lot, requested_lot, drift, zone, level, surface, facing) — read it. Pass intent (a short phrase) so the canvas can narrate.","inputSchema":{"type":"object","properties":{"intent":{"type":"string","description":"One line: what you noticed + what you will build. Shown live on the canvas."},"items":{"type":"array","maxItems":48,"items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"lot":{"type":"string"},"relative_to":{"type":"string"},"side":{"type":"string","enum":["north","south","east","west"]},"gap":{"type":"number"},"flip":{"type":"boolean"},"rot":{"type":"number"},"reason":{"type":"string"}}}}},"required":["items"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_piece","kind":"act","impl":"imperative","description":"REPAIR primitive — relocate one piece. Say WHAT is wrong and the page finds the lot: off:\"path\" (a walkway blocker), away_from:<piece id> (overlap or crowding the landmark), into_zone:<zone id> (a stray outside every zone), or give lot / relative_to + side + gap explicitly. Refuses human-locked pieces, occupied, off-scene, stair, and (for bulky pieces) walkway targets. Returns the new placement record. Lots are A1-style ids (M13 is the home center); there are no x,y. Never target human_locks. Every write returns the placement record (lot, requested_lot, drift, zone, level, surface, facing) — read it. Pass intent (a short phrase) so the canvas can narrate.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"intent":{"type":"string","description":"Short phrase shown live on the canvas."},"lot":{"type":"string"},"relative_to":{"type":"string"},"side":{"type":"string","enum":["north","south","east","west"]},"gap":{"type":"number"},"away_from":{"type":"string","description":"Piece id to get clear of."},"off":{"type":"string","enum":["path","stairs"],"description":"Step off a walkway or a stair approach."},"into_zone":{"type":"string","description":"Zone id/type to move into."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"orient_piece","kind":"act","impl":"imperative","description":"REPAIR primitive — turn one piece to face something: pass face (a piece id) or face_lot (a lot) and the page picks the quarter turn, or rot (0|90|180|270) explicitly, or flip. The fix when validate_scene says a chair or character faces away from the action. Refuses human-locked pieces.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"face":{"type":"string","description":"Piece id to face."},"face_lot":{"type":"string","description":"Lot to face."},"rot":{"type":"number","description":"Explicit facing 0|90|180|270."},"flip":{"type":"boolean"}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"label_piece","kind":"act","impl":"imperative","description":"PRIMITIVE — set the text label on one piece: id, text (40 chars max). Labels only. Refuses human-locked pieces.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string","description":"Max 40 chars. Empty string clears."}},"required":["id","text"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_piece","kind":"act","impl":"imperative","description":"REPAIR primitive — remove one agent-owned piece by id when validate_scene flags clutter, an overlap, or a piece in the wrong kind of place. Never to restart a scene (compose_scene sweeps and rebuilds). Human-owned pieces are refused unless the human has that piece selected AND force:true is passed. There is no clear-all.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"force":{"type":"boolean","description":"Only for a human-owned piece the human has selected."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"validate_scene","kind":"answer","impl":"imperative","description":"VALIDATE (read-only) — the scene completeness score and the ONLY arbiter of done. Tool success ≠ scene success. Scores six dimensions (intentCoverage, composition, spatialCoherence, environment, navigation, placementValidity) from the world-building laws — does the scene contain what was asked for, in the right zones; is there a landmark with room around it; do seats and people face the action; are zones furnished for their purpose; can you enter, walk, and climb; is everything grounded, un-overlapped, and where the plan put it; is the edge framed. Returns complete, completion %, verdict, per-check notes, and STRUCTURED repairs (tool + args) — apply them with repair_scene or by hand, then validate again. Never declare a scene finished without complete:true.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"theme":{"type":"string","description":"What the scene is supposed to be. Defaults to the current scene's prompt / the standing goal."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"repair_scene","kind":"act","impl":"imperative","description":"REPAIR (semantic) — validate, then apply the prescribed repairs THROUGH the other WebMCP tools (populate_zones for missing elements, create_path for cut-off zones, move_piece off paths / away from overlaps / into zones, orient_piece for wrong facings, create_environment for a bare edge, create_focal_point, remove_piece for misplaced kinds), most important first, up to max (default 6), then validate again. Never rebuilds the scene. Returns before/after scores, what was applied, and what remains. Loop validate_scene → repair_scene until complete.","inputSchema":{"type":"object","properties":{"max":{"type":"number","description":"Repair budget this call (default 6, max 12)."},"only":{"type":"array","items":{"type":"string"},"description":"Restrict to these rule ids, e.g. ['paths_clear', 'orientation']."},"exclude":{"type":"array","items":{"type":"string"},"description":"Rule ids to leave alone, e.g. ['zones'] to keep repairs from laying new ground."},"theme":{"type":"string","description":"What the scene is supposed to be (defaults to the current prompt)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_scene_seed","kind":"answer","impl":"imperative","description":"READ — the current scene's identity: seed, prompt, scene type, generator version, and the share_url that reproduces this world (prompt + seed, never coordinates). has_seed:false for freeform boards.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_scene_seed","kind":"act","impl":"imperative","description":"SEED — mint a fresh unique seed (like PICNIC-8F42KQ) WITHOUT building anything, to pass to plan_scene / build_scene or offer the human a choice of worlds.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"concept":{"type":"string","description":"Optional concept word for the prefix."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_scene_seed","kind":"act","impl":"imperative","description":"SEED — import a specific seed (e.g. from a shared scene) as the board's identity and, by default, REBUILD its world deterministically through build_scene (pass rebuild:false to only stamp the identity). Pass seed and optional prompt (defaults to the current prompt / standing goal).","inputSchema":{"type":"object","properties":{"seed":{"type":"string"},"prompt":{"type":"string"},"rebuild":{"type":"boolean","description":"Default true."}},"required":["seed"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"regenerate_scene","kind":"act","impl":"imperative","description":"SEED — remix: mint a NEW seed and rebuild the same concept as a meaningfully different composition (different footprint, zone arrangement, picks) through build_scene. Human pieces are preserved. Returns the new seed and share_url.","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","description":"Optional new prompt; defaults to the current scene's."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/sharableworlds.com.ico","apiSurface":"mixed","toolCount":33}}