# Character Studio MCP

Connect to /mcp with Streamable HTTP. Read get_capabilities without a key.
Create a private workspace key at /developers in the browser whose character
library you want to use. Send Authorization: Bearer <key>. Never put keys in prompts.

1. create_character(name, prompt, idempotency_key) generates an original fictional
   adult character. Alternatively import_asset(image_base64), then pass asset_id
   to create_character to save that reference unchanged.
2. Poll get_job(job_id) every 3 seconds until succeeded/failed/unknown.
3. edit_image(character_id, base_version_id, prompt, target, idempotency_key)
   creates a candidate. box uses [left, top, right, bottom], normalized 0..1.
   A mask_asset_id is a white-edit/black-preserve image matching the base dimensions.
   strict preserves pixels outside the effective selection; natural allows a
   transition; pose recomposes the image and does not guarantee pixel preservation.
4. Inspect the image. select_version(character_id, expected_version,
   operation_id) accepts a candidate. Or pass version_id to restore history.
5. export_character returns PNG + JSON URLs valid for 15 minutes.

Always reuse an idempotency_key for retries of the SAME creation/edit request.
Do not retry a failed or unknown generation automatically with a new key.
Get fresh current versions after a conflict. Preserve outputs; don't overwrite
the current version until a candidate is selected. Each workspace has a rolling
daily allowance and shares a service-wide generation circuit breaker.
Generated assets remain private. Studio URLs require the original browser session.
This is a preview service, not an unlimited-generation or identity-guarantee offer.
