{"ok":true,"site":{"host":"companion.aozu.workers.dev","url":"https://companion.aozu.workers.dev/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions","type":"live","desc":"AOZU is an agent-native workshop for creating, aligning, and exporting reusable layered character assets with WebMCP.","tools":[{"name":"inspect_character_contract","kind":"answer","impl":"imperative","description":"Required before replacing, repairing, or aligning character art. Optionally name one target to receive its allowed operations, exact current asset hash, visual alignment reference, layer ownership, alpha policy, generation size (1024×1536) and final size (512×768), normalization, revision, z-order, diagnostics, and required browser visual-review workflow. replace_character_asset installs a complete finished layer without preserving old pixels and is the only operation for outfits. repair_character_asset is available only for a current expression and stitches into that exact head asset. Expressions contain only a complete whole head. Outfits contain the complete dressed character skin.","title":"Inspect Character Contract","annotations":{"readOnlyHint":true},"inputSchema":{"additionalProperties":false,"properties":{"characterId":{"minLength":1,"type":"string"},"group":{"enum":["body","expression","outfit","prop"]},"layer":{"enum":["body","head","back","front"]},"variantId":{"pattern":"^[a-z0-9][a-z0-9_-]{0,39}$","type":"string"}},"readOnly":true,"required":["characterId"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"inspect_workspace","kind":"act","impl":"imperative","description":"Start here on every page. Returns saved Character workspaces, the current Character and route, missing required art, exact next actions, and all stable asset acceptance rules. AOZU rejects opaque artwork and does not remove backgrounds; if direct transparency is unavailable, generate on one flat high-contrast color, remove it with an image tool, and verify genuine alpha before submission. Outfits are complete dressed character skins in the canonical pose, never clothing-only overlays.","title":"Inspect Workspace","annotations":{"readOnlyHint":true},"inputSchema":{"additionalProperties":false,"properties":{},"readOnly":true,"required":[],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"navigate_character","kind":"act","impl":"imperative","description":"Navigate to the Character library or an exact Character category or variant returned by inspect_workspace. A successful call pushes that route in the SPA without mutating Character data.","title":"Navigate Character","annotations":{"readOnlyHint":false},"inputSchema":{"additionalProperties":false,"properties":{"characterId":{"minLength":1,"type":"string"},"destination":{"enum":["characters","character-expressions","character-outfits","character-props"]},"variantId":{"pattern":"^[a-z0-9][a-z0-9_-]{0,39}$","type":"string"}},"required":["destination"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"redo_character_change","kind":"act","impl":"imperative","description":"Redo the most recently undone change of the active Character editing session. Same preconditions and structured statuses as undo_character_change. Success persists the next Character as a new revision and opens that Character editor.","title":"Redo Character Change","annotations":{"readOnlyHint":false},"inputSchema":{"additionalProperties":false,"properties":{"characterId":{"minLength":1,"type":"string"},"expectedRevision":{"minimum":1,"type":"integer"}},"required":["characterId","expectedRevision"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"repair_character_asset","kind":"act","impl":"imperative","description":"Repair one existing expression after inspect_character_contract. The current head asset and editable-region mask are the only edit source; this tool never falls back to the canonical body. Accepted pixels are deterministically stitched into that current asset, preserving protected pixels. Outfits and other complete layers must use replace_character_asset.","title":"Repair Character Asset","annotations":{"readOnlyHint":false},"inputSchema":{"additionalProperties":false,"properties":{"characterId":{"minLength":1,"type":"string"},"dataUrl":{"maxLength":7100000,"pattern":"^data:image/png;base64,","type":"string"},"expectedAssetSha256":{"pattern":"^[0-9a-f]{64}$","type":"string"},"expectedRevision":{"minimum":1,"type":"integer"},"filename":{"maxLength":200,"minLength":1,"type":"string"},"group":{"const":"expression"},"label":{"maxLength":80,"minLength":1,"type":"string"},"layer":{"const":"head"},"normalization":{"additionalProperties":false,"properties":{"align":{"enum":["none","reference-visible-bounds"]},"resize":{"enum":["none","exact-aspect-downscale"]}},"required":["resize","align"],"type":"object"},"variantId":{"pattern":"^[a-z0-9][a-z0-9_-]{0,39}$","type":"string"}},"required":["characterId","group","variantId","label","layer","expectedRevision","expectedAssetSha256","filename","dataUrl"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"replace_character_asset","kind":"act","impl":"imperative","description":"Install one complete canonical Character layer after inspect_character_contract. This is a true replacement: it never stitches or preserves pixels from the old asset. Expressions must contain only a complete whole head with transparency everywhere else. Outfits must contain the complete dressed character skin in a pose and registration compatible with the canonical reference; exact base-pixel coverage is not required. Opaque input is rejected; AOZU never removes backgrounds. Rejected or stale input does not mutate or navigate. Submit exact 512×768 RGBA by default, or explicitly request the deterministic normalization returned by inspect_character_contract.","title":"Replace Character Asset","annotations":{"readOnlyHint":false},"inputSchema":{"additionalProperties":false,"properties":{"characterId":{"minLength":1,"type":"string"},"dataUrl":{"maxLength":7100000,"pattern":"^data:image/png;base64,","type":"string"},"expectedAssetSha256":{"pattern":"^[0-9a-f]{64}$","type":["string","null"]},"expectedRevision":{"minimum":1,"type":"integer"},"filename":{"maxLength":200,"minLength":1,"type":"string"},"group":{"enum":["body","expression","outfit","prop"]},"label":{"maxLength":80,"minLength":1,"type":"string"},"layer":{"enum":["body","head","back","front"]},"normalization":{"additionalProperties":false,"properties":{"align":{"enum":["none","reference-visible-bounds"]},"resize":{"enum":["none","exact-aspect-downscale"]}},"required":["resize","align"],"type":"object"},"variantId":{"pattern":"^[a-z0-9][a-z0-9_-]{0,39}$","type":"string"}},"required":["characterId","group","variantId","label","layer","expectedRevision","expectedAssetSha256","filename","dataUrl"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"set_character_variant_transform","kind":"act","impl":"imperative","description":"Visually align an existing expression whole head, outfit, or prop by changing only its full-canvas translation and uniform scale. Inspect the Character in the browser first; x moves right, y moves down, and values are absolute rather than deltas. Use the exact revision from inspect_character_contract. Success opens the exact variant so you can verify Composite, Overlay, Difference, and Align before continuing. Head-anchor changes rebase current expressions; front and back prop layers share one transform. The canonical body is locked.","title":"Set Character Variant Transform","annotations":{"readOnlyHint":false},"inputSchema":{"additionalProperties":false,"properties":{"characterId":{"minLength":1,"type":"string"},"expectedRevision":{"minimum":1,"type":"integer"},"group":{"enum":["expression","outfit","prop"]},"scale":{"maximum":4,"minimum":0.25,"type":"number"},"variantId":{"pattern":"^[a-z0-9][a-z0-9_-]{0,39}$","type":"string"},"x":{"maximum":512,"minimum":-512,"type":"number"},"y":{"maximum":768,"minimum":-768,"type":"number"}},"required":["characterId","group","variantId","expectedRevision","x","y","scale"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"undo_character_change","kind":"act","impl":"imperative","description":"Undo the latest change of the active Character editing session. Requires the exact saved Character revision and a settled (saved) session; inactive, pending, failed, conflicted, stale, or empty-history requests return a structured status without mutation or navigation. Success persists the previous Character as a new revision and opens that Character editor.","title":"Undo Character Change","annotations":{"readOnlyHint":false},"inputSchema":{"additionalProperties":false,"properties":{"characterId":{"minLength":1,"type":"string"},"expectedRevision":{"minimum":1,"type":"integer"}},"required":["characterId","expectedRevision"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"},{"name":"update_character_profile","kind":"act","impl":"imperative","description":"Update one or more identity fields of a saved Character using its exact revision. Omitted fields stay unchanged; empty description, backstory, or attributes clear that field. A successful call saves one undoable change and opens that Character editor.","title":"Update Character Profile","annotations":{"readOnlyHint":false},"inputSchema":{"additionalProperties":false,"properties":{"attributes":{"additionalProperties":{"maxLength":200,"type":["string","number","boolean"]},"maxProperties":32,"type":"object"},"backstory":{"maxLength":8000,"type":"string"},"characterId":{"minLength":1,"type":"string"},"description":{"maxLength":500,"type":"string"},"expectedRevision":{"minimum":1,"type":"integer"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["characterId","expectedRevision"],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/characters/22316890-14c8-480b-977b-329f282ef3ad/expressions"}],"category":"Media & Personal","favicon":"/favicons/companion.aozu.workers.dev.webp","apiSurface":"spec","toolCount":9}}