{"name":"Leony by Aweb","category":"AI Creative Studio","version":"0.1.0","status":"foundation_live_read_only_execution_gated","urls":{"app":"https://aweb-leony.vercel.app","studio":"https://aweb-leony.vercel.app/studio","discovery":"https://aweb-leony.vercel.app/api/leony/v1","capabilities":"https://aweb-leony.vercel.app/api/leony/v1/capabilities","events":"https://aweb-leony.vercel.app/api/leony/v1/events","openapi":"https://aweb-leony.vercel.app/api/leony/v1/openapi","mcp_manifest":"https://aweb-leony.vercel.app/.well-known/mcp.json","developer_console":"https://aweb-leony.vercel.app/developers","api_keys":"https://aweb-leony.vercel.app/api/leony/v1/keys","aweb_v2_api":"https://aweb-wine.vercel.app/api/v2","aweb_mcp_transport":"https://aweb-wine.vercel.app/api/mcp"},"authentication":{"rest":{"type":"bearer","header":"Authorization","format":"Bearer sk-aweb-...","issue_keys_from":"https://aweb-leony.vercel.app/developers","key_api":"https://aweb-leony.vercel.app/api/leony/v1/keys"},"mcp":{"transport":"https://aweb-wine.vercel.app/api/mcp","auth":"Bearer Google ID token or X-API-Key, depending on Aweb deployment policy","discover":"Call aweb_explore with domain=\"leony\""}},"governance":{"liveProviderSpend":"approval_required","publishing":"approval_required","voiceAndLikeness":"approval_required","commercialClaims":"approval_required","receipts":"required_for_live_execution"},"mcp":{"implementationStatus":{"phase":"leony-governed-execution-foundation","status":"schema_hardened_routes_persisted_runtime_and_guarded_worker","nextMission":"Enable approved Leony provider execution only with production worker credentials, provenance signing, receipts, and operator approval."},"summary":{"toolCount":7,"resourceCount":12,"writesStateToolCount":5,"stageCounts":{"catalog":2,"planning":2,"execution_gate":2,"operator":1},"freshnessCounts":{"catalog":4,"runtime":6,"policy":2}},"tools":[{"name":"leony_explore","input":"LeonyExploreInput","description":"Browse Leony providers, workflows, assets, jobs, plans, approvals, metrics, and API surfaces.","writesState":false,"stage":"catalog","readsResources":["leony://providers/catalog","leony://workflows/index","leony://assets/reel","leony://api/surface"],"inputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-explore-input.json","type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"type":"string","enum":["providers","workflows","assets","jobs","plans","approvals","metrics","api"]},"query":{"type":"string","minLength":1,"maxLength":240},"capability":{"type":"string","minLength":1,"maxLength":160},"limit":{"type":"integer","minimum":1,"maximum":100,"default":12}}},"outputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-tool-result.json","type":"object","additionalProperties":false,"required":["tool","status","warnings","resources","output"],"properties":{"tool":{"type":"string"},"status":{"type":"string","enum":["ok"]},"warnings":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"output":{"type":"object","additionalProperties":true},"persistence":{"type":"object","additionalProperties":true,"description":"Optional persistence posture attached by the Leony route handler."}}}},{"name":"leony_brief","input":"LeonyBriefInput","description":"Create a structured Leony creative brief without calling media providers.","writesState":true,"stage":"planning","readsResources":["leony://providers/catalog","leony://governance/policy"],"inputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-brief-input.json","type":"object","additionalProperties":false,"required":["mode","prompt"],"properties":{"mode":{"type":"string","enum":["video","avatar","persona","voice","campaign","publish"],"description":"Leony creative mode."},"prompt":{"type":"string","minLength":1,"maxLength":4000,"description":"Creative command or production brief."},"title":{"type":"string","minLength":1,"maxLength":140,"description":"Human-readable project title."},"targetFormats":{"type":"array","description":"Requested output formats such as 9:16 social or 16:9 hero.","minItems":1,"maxItems":12,"items":{"type":"string","minLength":1,"maxLength":120},"uniqueItems":true},"channels":{"type":"array","minItems":1,"maxItems":12,"uniqueItems":true,"items":{"type":"string","enum":["tiktok","instagram","youtube_shorts","linkedin","x_twitter","pinterest","shopify","gumroad","manual_export"],"description":"Target publish or export channel."}},"managedByAweb":{"type":"boolean","default":true}}},"outputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-tool-result.json","type":"object","additionalProperties":false,"required":["tool","status","warnings","resources","output"],"properties":{"tool":{"type":"string"},"status":{"type":"string","enum":["ok"]},"warnings":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"output":{"type":"object","additionalProperties":true},"persistence":{"type":"object","additionalProperties":true,"description":"Optional persistence posture attached by the Leony route handler."}}}},{"name":"leony_plan","input":"LeonyPlanInput","description":"Create a costed provider route and approval boundary for a Leony creative brief.","writesState":true,"stage":"planning","readsResources":["leony://providers/catalog","leony://capabilities/media","leony://governance/policy","leony://plans/index"],"inputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-plan-input.json","type":"object","additionalProperties":false,"anyOf":[{"required":["briefId"]},{"required":["prompt","mode"]}],"properties":{"briefId":{"type":"string","minLength":1,"maxLength":80,"description":"Existing Leony brief id."},"prompt":{"type":"string","minLength":1,"maxLength":4000,"description":"Creative command used when creating a plan without a prior brief."},"mode":{"type":"string","enum":["video","avatar","persona","voice","campaign","publish"],"description":"Leony creative mode."},"routePolicy":{"type":"string","enum":["quality_first","speed_first","cost_guarded","balanced"],"default":"balanced","description":"Provider routing preference used for plan generation."},"targetFormats":{"type":"array","description":"Requested output formats for this plan.","minItems":1,"maxItems":12,"items":{"type":"string","minLength":1,"maxLength":120},"uniqueItems":true},"budgetUsd":{"type":"number","minimum":0,"maximum":10000,"description":"Optional operator budget ceiling for the plan."}}},"outputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-tool-result.json","type":"object","additionalProperties":false,"required":["tool","status","warnings","resources","output"],"properties":{"tool":{"type":"string"},"status":{"type":"string","enum":["ok"]},"warnings":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"output":{"type":"object","additionalProperties":true},"persistence":{"type":"object","additionalProperties":true,"description":"Optional persistence posture attached by the Leony route handler."}}}},{"name":"leony_render","input":"LeonyRenderInput","description":"Prepare or queue a governed render job. Foundation mode never spends provider credits without approval metadata.","writesState":true,"stage":"execution_gate","readsResources":["leony://plans/{id}","leony://approvals/index","leony://governance/policy","leony://jobs/index"],"inputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-render-input.json","type":"object","additionalProperties":false,"required":["planId","dryRun"],"properties":{"planId":{"type":"string","minLength":1,"maxLength":80,"description":"Leony render plan id."},"dryRun":{"type":"boolean","description":"When true, create the approval boundary without provider execution."},"approvalRef":{"type":"string","minLength":1,"maxLength":160,"description":"Approval reference required before live provider execution."},"maxCostUsd":{"type":"number","exclusiveMinimum":0,"maximum":10000,"description":"Hard cost ceiling for a governed render attempt."}}},"outputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-tool-result.json","type":"object","additionalProperties":false,"required":["tool","status","warnings","resources","output"],"properties":{"tool":{"type":"string"},"status":{"type":"string","enum":["ok"]},"warnings":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"output":{"type":"object","additionalProperties":true},"persistence":{"type":"object","additionalProperties":true,"description":"Optional persistence posture attached by the Leony route handler."}}}},{"name":"leony_publish","input":"LeonyPublishInput","description":"Prepare a social/commercial publishing handoff with approval gates and no direct external post by default.","writesState":true,"stage":"execution_gate","readsResources":["leony://assets/reel","leony://approvals/index","leony://governance/policy"],"inputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-publish-input.json","type":"object","additionalProperties":false,"anyOf":[{"required":["assetId"]},{"required":["planId"]}],"required":["channels","dryRun"],"properties":{"assetId":{"type":"string","minLength":1,"maxLength":120,"description":"Leony or Aweb asset id to publish/export."},"planId":{"type":"string","minLength":1,"maxLength":80,"description":"Plan id to use as publish/export context."},"channels":{"type":"array","minItems":1,"maxItems":12,"uniqueItems":true,"items":{"type":"string","enum":["tiktok","instagram","youtube_shorts","linkedin","x_twitter","pinterest","shopify","gumroad","manual_export"],"description":"Target publish or export channel."}},"dryRun":{"type":"boolean","description":"When true, create only an approval/outbox package."},"approvalRef":{"type":"string","minLength":1,"maxLength":160,"description":"Approval reference required before external publishing."}}},"outputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-tool-result.json","type":"object","additionalProperties":false,"required":["tool","status","warnings","resources","output"],"properties":{"tool":{"type":"string"},"status":{"type":"string","enum":["ok"]},"warnings":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"output":{"type":"object","additionalProperties":true},"persistence":{"type":"object","additionalProperties":true,"description":"Optional persistence posture attached by the Leony route handler."}}}},{"name":"leony_analyze","input":"LeonyAnalyzeInput","description":"Summarize Leony provider posture, approval queue, spend risk, publishing readiness, or asset strategy.","writesState":false,"stage":"catalog","readsResources":["leony://observability/current","leony://providers/catalog","leony://jobs/index","leony://approvals/index"],"inputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-analyze-input.json","type":"object","additionalProperties":false,"required":["scope"],"properties":{"scope":{"type":"string","enum":["providers","jobs","approvals","spend","publishing","assets"]},"window":{"type":"string","enum":["24h","7d","30d","90d"],"default":"7d"},"mode":{"type":"string","enum":["video","avatar","persona","voice","campaign","publish"],"description":"Leony creative mode."}}},"outputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-tool-result.json","type":"object","additionalProperties":false,"required":["tool","status","warnings","resources","output"],"properties":{"tool":{"type":"string"},"status":{"type":"string","enum":["ok"]},"warnings":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"output":{"type":"object","additionalProperties":true},"persistence":{"type":"object","additionalProperties":true,"description":"Optional persistence posture attached by the Leony route handler."}}}},{"name":"leony_operate","input":"LeonyOperateInput","description":"Run bounded operator actions such as inspect lineage, cancel job, rerun plan, request provider setup, or verify governance.","writesState":true,"stage":"operator","readsResources":["leony://jobs/index","leony://jobs/{id}","leony://plans/index","leony://plans/{id}","leony://governance/policy"],"inputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-operate-input.json","type":"object","additionalProperties":false,"required":["action","targetType","targetId"],"properties":{"action":{"type":"string","enum":["inspect_lineage","cancel_job","rerun_plan","request_provider_setup","verify_governance"]},"targetType":{"type":"string","enum":["brief","plan","job","asset","provider"]},"targetId":{"type":"string","minLength":1,"maxLength":160,"description":"Target object id."},"params":{"type":"object","additionalProperties":true}}},"outputSchema":{"$id":"https://aweb-leony.vercel.app/schemas/leony-tool-result.json","type":"object","additionalProperties":false,"required":["tool","status","warnings","resources","output"],"properties":{"tool":{"type":"string"},"status":{"type":"string","enum":["ok"]},"warnings":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"output":{"type":"object","additionalProperties":true},"persistence":{"type":"object","additionalProperties":true,"description":"Optional persistence posture attached by the Leony route handler."}}}}],"resources":[{"uri":"leony://providers/catalog","description":"Current Leony creative provider posture derived from Aweb API Warehouse capability mappings.","freshness":"catalog"},{"uri":"leony://capabilities/media","description":"Creative media capability slice used by Leony for video, image, avatar, voice, sound, storage, publishing, and analytics.","freshness":"catalog"},{"uri":"leony://workflows/index","description":"Leony create, compose, publish, and operate workflow definitions.","freshness":"catalog"},{"uri":"leony://assets/reel","description":"Operator-supplied Leony proof reel and first-page asset strategy, including lightweight-loop decisions.","freshness":"catalog"},{"uri":"leony://jobs/index","description":"Runtime Leony render and publish job index.","freshness":"runtime"},{"uri":"leony://jobs/{id}","description":"Runtime Leony job record with approval and provider-execution posture.","freshness":"runtime"},{"uri":"leony://plans/index","description":"Runtime Leony render-plan index.","freshness":"runtime"},{"uri":"leony://plans/{id}","description":"Runtime Leony render plan with provider route, cost estimate, and gates.","freshness":"runtime"},{"uri":"leony://approvals/index","description":"Runtime approval queue for provider spend, likeness, commercial claims, and publishing.","freshness":"runtime"},{"uri":"leony://observability/current","description":"Current Leony runtime counters and provider posture summary.","freshness":"runtime"},{"uri":"leony://governance/policy","description":"Leony governance doctrine for cost, provider calls, likeness, claims, and publishing.","freshness":"policy"},{"uri":"leony://api/surface","description":"Leony API, MCP, key-management, and monitoring exposure plan.","freshness":"policy"}]},"routes":[{"method":"GET","path":"/api/leony/v1","description":"Leony API/MCP discovery manifest for standalone product clients.","auth":"none","surfaceStatus":"live_read"},{"method":"GET","path":"/api/leony/v1/capabilities","description":"Leony creative capability and provider-domain discovery.","auth":"none","surfaceStatus":"live_read"},{"method":"GET","path":"/api/leony/v1/monitoring","description":"Leony control-plane monitoring: persistence posture, recent projects, jobs, approvals, and MCP tool calls.","auth":"session_or_aweb_api_key","surfaceStatus":"live_read"},{"method":"GET","path":"/api/leony/v1/events","description":"Authenticated Leony live event stream over SSE with Last-Event-ID replay from the Neon event ledger.","auth":"session_or_aweb_api_key","surfaceStatus":"live_read"},{"method":"GET","path":"/api/leony/v1/keys","description":"List masked Leony API keys for the signed-in Aweb account.","auth":"session","surfaceStatus":"credential_live","capability":"leony.keys.read"},{"method":"POST","path":"/api/leony/v1/keys","description":"Create a scoped Leony API key in the shared Aweb credential ledger. The full secret is returned once.","auth":"session","surfaceStatus":"credential_live","capability":"leony.keys.create"},{"method":"PATCH","path":"/api/leony/v1/keys/{id}","description":"Update a Leony API key name, scopes, or IP allowlist.","auth":"session","surfaceStatus":"credential_live","capability":"leony.keys.update"},{"method":"DELETE","path":"/api/leony/v1/keys/{id}","description":"Revoke a Leony API key.","auth":"session","surfaceStatus":"credential_live","capability":"leony.keys.revoke"},{"method":"GET","path":"/api/leony/v1/keys/{id}/usage","description":"Inspect usage logs and aggregate usage for one Leony API key.","auth":"session","surfaceStatus":"credential_live","capability":"leony.keys.usage"},{"method":"GET","path":"/api/leony/v1/developer/access-check","description":"Verify the current Leony session or bearer API key and return MCP connection metadata.","auth":"session_or_aweb_api_key","surfaceStatus":"credential_live","capability":"leony.access.check"},{"method":"GET","path":"/.well-known/mcp.json","description":"Leony MCP client metadata pointing to the governed Aweb MCP transport.","auth":"none","surfaceStatus":"mcp_live"},{"method":"POST","path":"/api/v2/videos/generate","description":"Aweb V2 text-to-video generation, routed through API Warehouse and spend controls.","auth":"aweb_api_key","surfaceStatus":"aweb_v2_live","capability":"video.generate"},{"method":"POST","path":"/api/v2/videos/from-image","description":"Aweb V2 image-to-video generation.","auth":"aweb_api_key","surfaceStatus":"aweb_v2_live","capability":"video.from-image"},{"method":"POST","path":"/api/v2/personas/{id}/video","description":"Aweb V2 persona talking-head video generation with voice and video providers.","auth":"aweb_api_key","surfaceStatus":"aweb_v2_live","capability":"avatar.talking-head-text"},{"method":"POST","path":"/api/mcp","description":"Aweb MCP Streamable HTTP transport; use aweb_explore domain=leony.","auth":"aweb_mcp_auth","surfaceStatus":"mcp_live"},{"method":"POST","path":"/api/leony/v1/brief","description":"Create and persist a structured Leony creative brief through the governed runtime.","auth":"session_or_aweb_api_key","surfaceStatus":"approval_gated","capability":"leony.brief"},{"method":"POST","path":"/api/leony/v1/plan","description":"Create and persist a costed Leony provider route with approval and budget boundaries.","auth":"session_or_aweb_api_key","surfaceStatus":"approval_gated","capability":"leony.plan"},{"method":"POST","path":"/api/leony/v1/render","description":"Prepare or queue a governed Leony render job. Provider spend remains approval-gated.","auth":"session_or_aweb_api_key","surfaceStatus":"approval_gated","capability":"leony.render"},{"method":"POST","path":"/api/leony/v1/publish","description":"Create an approval-gated Leony social/commercial publish or export request without direct external posting by default.","auth":"session_or_aweb_api_key","surfaceStatus":"approval_gated","capability":"leony.publish"},{"method":"POST","path":"/api/leony/v1/worker/run","description":"Run the guarded Leony execution worker. It processes only approved queued work and requires worker credentials for provider calls.","auth":"session_or_aweb_api_key","surfaceStatus":"approval_gated","capability":"leony.worker"}]}