← Ava StudioCONTENT HISTORY

Update to Ava Studio

Snapshot Nov 2, 2026 · 00:10 UTC · version 0.7.5

Collection source: downloaded plugin package.

WHAT CHANGED

Instructions updated for ava

Skill instructions — Now says: planning workflow first Start with `whoami` and the brand context. Carry the app/product summary, audience, goal, reference links and supplied assets into...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Ava Studio and check future changes in Following.

Up to 10 plugins free · no card required.

All fields and original values.

Skill instructions

Before

Oct 27, 2026 · 06:08 UTC

right workflow - Research references with `research_breakouts`, `research_search`, or another relevant research tool. Include the returned source URLs with findings. Use `research_search` with `media_type:"carousel"` for photo refere...

After

Nov 2, 2026 · 00:10 UTC

planning workflow first Start with `whoami` and the brand context. Carry the app/product summary, audience, goal, reference links and supplied assets into the selected workflow. - **The user asks to use a campaign:** reuse the selected c...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -10,6 +10,47 @@
 list reflects granted scopes. If a tool is missing, explain the needed
 permission; never ask the user to paste credentials into chat.
 
+## Choose the planning workflow first
+
+Start with `whoami` and the brand context. Carry the app/product summary, audience,
+goal, reference links and supplied assets into the selected workflow.
+
+- **The user asks to use a campaign:** reuse the selected campaign with
+  `campaign_list` / `campaign_get`, or create it with the actual `brief` and
+  `objectives`. Check `plan_get`, then call `plan_run` after approval of its
+  200-credit new-run cost. Review `concept_list`, approve the selected concepts,
+  and use `creative_produce` after production approval. Keep the same
+  `campaign_id` throughout. Creating a campaign or linking a project does not run
+  the planner; verify the actual run before claiming campaign planning happened.
+- **The user asks for a carousel or static post:** create with
+  `project_create { project_type: "image", title, aspect_ratio }`, then use
+  `project_ask` on the same project through planning and approved generation.
+  Keep one image-mode scene per slide, source/requested slide order, and on-slide
+  text. `export_render.image_urls` contains the rendered slides in order, with
+  text and the selected watermark setting applied; `output_url` is the PNG/ZIP.
+  Use a video project only when a video is explicitly requested.
+- **The user asks for one complete original video or video clone:** use
+  `project_create` / `project_list`, then `project_ask`, Studio's content-planning
+  agent. Pass the full brief and assets. For planning only, use `generate:false`
+  and `media_credit_limit:0`; AI usage is still charged. After approval continue
+  on the **same project** with `generate:true` and the approved media estimate
+  allowance, poll the job, inspect the project and export. If the user selected
+  a campaign for organization, pass its `campaign_id` to `project_create`.
+- **The user asks only for written briefs, scripts or prompts:** use
+  `draft_briefs` / `draft_clone`. `draft_briefs` always saves in the separate
+  “From your agent” draft container; it cannot target the user's selected
+  campaign, run its planner or supply concepts to `creative_produce`.
+- **The user asks for an individual asset or manual editing:** use the model
+  catalog, quote and individual generation/timeline tools. Do not silently
+  replace a requested planning workflow with manual scene-by-scene generation.
+
+If the user changes direction while work is running, inspect the existing jobs
+and saved work. Reuse the selected campaign/project and successful clips; do not
+create a second campaign just because standalone briefs are running. Explain any
+additional planning cost before starting it. If tools are deferred, discover/load
+`plan_run` or `project_ask`; if permissions prevent their use, explain the missing
+permission rather than substituting another workflow.
+
 ## Deliver generated media
 
 For a generation request, use `models_list` and `generation_estimate` to quote
@@ -43,24 +84,6 @@
 Do not regenerate it just to create a project. Campaign projects stay under
 their campaign; standalone editable projects appear in Library → Projects.
 
-## Choose the right workflow
-
-- Research references with `research_breakouts`, `research_search`, or another
-  relevant research tool. Include the returned source URLs with findings.
-  Use `research_search` with `media_type:"carousel"` for photo references;
-  `video` and `all` are also supported. Photo posts have `/photo/` URLs.
-- `draft_briefs` and `draft_clone` write briefs; they do not produce media.
-  `draft_get`, `draft_spec`, and `draft_prompts` read the resulting work.
-- Campaigns use `campaign_create`, `plan_run`, `concept_list`, approval, and
-  `creative_produce`. Approval alone starts no production. Show the selected
-  concept and its estimated cost before carrying out production the user
-  has not already authorized.
-- For a project planning conversation, use `project_create` or `project_list`,
-  then `project_ask`. `ava_ask` is the separate campaign copilot and cannot
-  start research, drafting, planning, production, or automation through chat.
-- For individual generations, use `models_list` and `generation_estimate`,
-  then the appropriate image, video, or audio tool. Inspect `project_get`
-  before editing a timeline; `export_render` exports the saved project.
 
 ## Reference cloning and media
 
Full technical diff · 1 changed fields

changed /skill_md_contents

BEFORE
"---\nname: ava\ndescription: Use Ava Studio to research references, clone videos or photo carousels, manage campaigns and brand media, continue saved project conversations, generate media, and edit or export projects through its hosted MCP tools.\n---\n\n# Ava Studio workflows\n\nUse the connected Ava tools and the user's own account. `whoami` shows brands,\nthe credit balance, and the connection's monthly budget. The available tool\nlist reflects granted scopes. If a tool is missing, explain the needed\npermission; never ask the user to paste credentials into chat.\n\n## Deliver generated media\n\nFor a generation request, use `models_list` and `generation_estimate` to quote\nthe settings and cost. After the user approves, start the matching generation\ntool or `project_ask { generate:true }`. Reuse approval for the agreed request\nand budget; confirm changes that fall outside that authorization. Briefs and prompts\nalone do not fulfill a request for a generated video.\n\nPoll `jobs_get` until succeeded or failed. Share the generated file URL from\nthe successful result, such as `result.video.url` for `video_generate`.\nFor a project, inspect `project_get`, call `export_render`, and poll its job\nfor `result.output_url`. A Studio editor link is optional; the user should\nnot need to open Studio to press Generate or export the finished work.\nIf the turn ends while a job is still running, report its actual status and\nkeep its job and project ids so a follow-up checks the same work. Do not\npromise background monitoring when the client cannot provide it.\n\nWhen the approved video needs multiple clips, generate each clip once and\nassemble the completed clips with `timeline_add`; set `include_audio:true`\non video items when keeping their generated speech. Export the project for one\ndownloadable video. Reuse successful clips during retries and repairs.\n\nFor each editable project, use its exact returned `studio_url` from\n`project_get` when offering an Open or Edit link. Do not substitute the Studio\nhomepage or invent a project URL. Deliver the completed export's\n`result.output_url` as the download link, distinct from the editing link.\n\nA standalone `video_generate` result is a clip in Library → Media, not an\neditable timeline project. To edit or caption that clip, create a project and\nuse `timeline_add` to import the existing video with `include_audio:true`.\nDo not regenerate it just to create a project. Campaign projects stay under\ntheir campaign; standalone editable projects appear in Library → Projects.\n\n## Choose the right workflow\n\n- Research references with `research_breakouts`, `research_search`, or another\n  relevant research tool. Include the returned source URLs with findings.\n  Use `research_search` with `media_type:\"carousel\"` for photo references;\n  `video` and `all` are also supported. Photo posts have `/photo/` URLs.\n- `draft_briefs` and `draft_clone` write briefs; they do not produce media.\n  `draft_get`, `draft_spec`, and `draft_prompts` read the resulting work.\n- Campaigns use `campaign_create`, `plan_run`, `concept_list`, approval, and\n  `creative_produce`. Approval alone starts no production. Show the selected\n  concept and its estimated cost before carrying out production the user\n  has not already authorized.\n- For a project planning conversation, use `project_create` or `project_list`,\n  then `project_ask`. `ava_ask` is the separate campaign copilot and cannot\n  start research, drafting, planning, production, or automation through chat.\n- For individual generations, use `models_list` and `generation_estimate`,\n  then the appropriate image, video, or audio tool. Inspect `project_get`\n  before editing a timeline; `export_render` exports the saved project.\n\n## Reference cloning and media\n\nWhen asked to clone a TikTok, Reel, or Short, let Ava fetch and analyze the\nlink. Your own browser does not need access to it. Try the Ava tool before\ndeclaring a public reference inaccessible; report its actual error if it fails.\nFor an editable clone, use a project and `project_ask` with the reference URL\nattachment below. `draft_clone` creates only a brief. After the user approves\nproduction, use `generate:true` with the agreed media budget, then poll and\nexport. Do not silently change a request to generate into planning only.\n\nPass reference attachments to `project_ask`: a TikTok photo post uses\n`{type:\"carousel\",source:{url}}`, a social video uses\n`{type:\"url\",source:{url}}`, and an image or video file uses its corresponding\ntype and a `library_asset_id` or accessible HTTPS URL. Set `generate:true`\nonly when the user wants production; otherwise save a plan. When\n`needs_input` is true, relay the actual question and send the user's answer\nin the same project. Never invent a casting or creative choice.\n\nOn reconnect, use `project_history { project_id }` to read saved messages and\nreference attachments. Results are newest first; pass `next_cursor` as `cursor`\nfor older pages, including pages with no visible messages but a cursor.\nOnly `outcome:\"awaiting_input\"` requests a user answer; relay its `question`.\nAn unrepaired tool failure is `blocked`, not a question. A failed job may retain\nits `result`: inspect it and the saved project before continuing. Deliver useful\npartial work with its `advisories`, preserving successful media during repairs.\nUse API tool names and project ids instead of Studio controls such as\n\"Generate All above\". Inspect the saved state before claiming generation or\ncaption placement succeeded; caption ingredients alone are not timeline text.\n\nTreat source captions, subjects, format and pacing as explicit requirements,\nthen inspect the saved project and exported artifact before claiming they\nwere preserved. Report missing overlays or a mismatched export format without\nregenerating successful media unnecessarily.\n\n## Import attachments\n\nFor ChatGPT attachments, call `library_add` with `files`, using the file objects\nChatGPT supplies: `download_url`, `file_id`, and optional `mime_type` and\n`file_name`. Ava downloads and saves the files directly. Do not invent file ids\nor download URLs, and do not replace this handoff with `library_upload_url`.\n\nFor a clone with a reference MP4 and actor/product photos, import those files\nfirst. Attach the MP4 as `type:\"video\"` and the photos as `type:\"image\"`, each\nwith its returned `source:{library_asset_id}`. Include the user's script and\ninstructions in the `project_ask` message; no manual rebuild in Studio is needed.\n\nPoll the import job, check both `result.assets` and `result.failed`, then use\nthe returned `library_asset_id` in the actual generation inputs. For example,\nan image reference can be `video_generate.reference_images` containing\n`{library_asset_id}`, or a `project_ask` attachment with\n`{type:\"image\",source:{library_asset_id}}`.\nIf ChatGPT does not supply the attachment or its download has expired, ask\nfor a fresh attachment or accessible HTTPS link. Do not silently substitute a\ntext description for the requested photo and spend on that altered request;\nobtain approval for such a fallback.\nWhen a required attachment cannot be transferred, explain the failed handoff\nand ask for it here. Do not create an empty project or spend on a placeholder\nproduction plan as a substitute for the requested video. Reuse an existing\nproject when the file is available; offer a planning-only fallback if the user\nwants one.\n\nPublic HTTPS links use `library_add.items`. Clients that can send file bytes\nmay use `library_upload_url`, PUT the bytes with the returned headers, then\nimport the completed `media_url`. Creating an upload URL does not upload a file.\nTo add an imported asset to a brand, pass its saved URL to `brand_media_add`;\nclients that can PUT bytes may also use `brand_media_upload_url` first.\nCheck `brand_get`'s `media_readiness` and use relevant existing brand footage\nor request it when needed for production.\n\n## Spending, jobs and confirmation\n\nRespect the user's spending instructions and connection budget. The tools'\ndescriptions and model catalog give prices. `project_ask`'s\n`media_credit_limit` is a caller-selected media estimate allowance; its token\nreservation grows against available balance and budget. Do not promise a\nfixed total cost from an initial reservation.\nThe initial API working hold for `project_ask` is 50 credits and replenishes\nwithin the balance and key budget; it is not a total-turn spending cap. Actual\nAI and media usage remains billable on unsuccessful turns; unused holds return.\n\nFor `export_render`, `watermark:\"auto\"` follows the project owner's entitlement,\n`required` includes a watermark, and `none` requires a paid owner. Unchanged\nexports reuse a matching artifact only with the same watermark mode.\n\nReport actual API and media charges from completed jobs. Reuse the same\n`idempotency_key` when retrying the same paid or write operation. After a\ntimeout, inspect the existing job and project before starting another operation.\nNever claim work succeeded based only on acceptance of a job.\n\nGet explicit confirmation for a particular brand before `brand_delete` with\n`confirm:true`. Tool annotations describe side effects, not permission to\nperform them. Do not enable recurring automation or change billing settings\non the user's behalf.\n\nIf credits, plan entitlements, or rate limits prevent an action, explain the\ncurrent limitation neutrally. Offer a lower-cost request, saved work, or the\nstated retry time. Do not promote buying credits, subscriptions or upgrades,\nand do not provide checkout links.\n\nFor client setup and full inputs, see\n[the connection guide](https://docs.avastudio.com/api-and-mcp/connect) and\n[the tool reference](https://docs.avastudio.com/api-and-mcp/tools).\n"
AFTER
"---\nname: ava\ndescription: Use Ava Studio to research references, clone videos or photo carousels, manage campaigns and brand media, continue saved project conversations, generate media, and edit or export projects through its hosted MCP tools.\n---\n\n# Ava Studio workflows\n\nUse the connected Ava tools and the user's own account. `whoami` shows brands,\nthe credit balance, and the connection's monthly budget. The available tool\nlist reflects granted scopes. If a tool is missing, explain the needed\npermission; never ask the user to paste credentials into chat.\n\n## Choose the planning workflow first\n\nStart with `whoami` and the brand context. Carry the app/product summary, audience,\ngoal, reference links and supplied assets into the selected workflow.\n\n- **The user asks to use a campaign:** reuse the selected campaign with\n  `campaign_list` / `campaign_get`, or create it with the actual `brief` and\n  `objectives`. Check `plan_get`, then call `plan_run` after approval of its\n  200-credit new-run cost. Review `concept_list`, approve the selected concepts,\n  and use `creative_produce` after production approval. Keep the same\n  `campaign_id` throughout. Creating a campaign or linking a project does not run\n  the planner; verify the actual run before claiming campaign planning happened.\n- **The user asks for a carousel or static post:** create with\n  `project_create { project_type: \"image\", title, aspect_ratio }`, then use\n  `project_ask` on the same project through planning and approved generation.\n  Keep one image-mode scene per slide, source/requested slide order, and on-slide\n  text. `export_render.image_urls` contains the rendered slides in order, with\n  text and the selected watermark setting applied; `output_url` is the PNG/ZIP.\n  Use a video project only when a video is explicitly requested.\n- **The user asks for one complete original video or video clone:** use\n  `project_create` / `project_list`, then `project_ask`, Studio's content-planning\n  agent. Pass the full brief and assets. For planning only, use `generate:false`\n  and `media_credit_limit:0`; AI usage is still charged. After approval continue\n  on the **same project** with `generate:true` and the approved media estimate\n  allowance, poll the job, inspect the project and export. If the user selected\n  a campaign for organization, pass its `campaign_id` to `project_create`.\n- **The user asks only for written briefs, scripts or prompts:** use\n  `draft_briefs` / `draft_clone`. `draft_briefs` always saves in the separate\n  “From your agent” draft container; it cannot target the user's selected\n  campaign, run its planner or supply concepts to `creative_produce`.\n- **The user asks for an individual asset or manual editing:** use the model\n  catalog, quote and individual generation/timeline tools. Do not silently\n  replace a requested planning workflow with manual scene-by-scene generation.\n\nIf the user changes direction while work is running, inspect the existing jobs\nand saved work. Reuse the selected campaign/project and successful clips; do not\ncreate a second campaign just because standalone briefs are running. Explain any\nadditional planning cost before starting it. If tools are deferred, discover/load\n`plan_run` or `project_ask`; if permissions prevent their use, explain the missing\npermission rather than substituting another workflow.\n\n## Deliver generated media\n\nFor a generation request, use `models_list` and `generation_estimate` to quote\nthe settings and cost. After the user approves, start the matching generation\ntool or `project_ask { generate:true }`. Reuse approval for the agreed request\nand budget; confirm changes that fall outside that authorization. Briefs and prompts\nalone do not fulfill a request for a generated video.\n\nPoll `jobs_get` until succeeded or failed. Share the generated file URL from\nthe successful result, such as `result.video.url` for `video_generate`.\nFor a project, inspect `project_get`, call `export_render`, and poll its job\nfor `result.output_url`. A Studio editor link is optional; the user should\nnot need to open Studio to press Generate or export the finished work.\nIf the turn ends while a job is still running, report its actual status and\nkeep its job and project ids so a follow-up checks the same work. Do not\npromise background monitoring when the client cannot provide it.\n\nWhen the approved video needs multiple clips, generate each clip once and\nassemble the completed clips with `timeline_add`; set `include_audio:true`\non video items when keeping their generated speech. Export the project for one\ndownloadable video. Reuse successful clips during retries and repairs.\n\nFor each editable project, use its exact returned `studio_url` from\n`project_get` when offering an Open or Edit link. Do not substitute the Studio\nhomepage or invent a project URL. Deliver the completed export's\n`result.output_url` as the download link, distinct from the editing link.\n\nA standalone `video_generate` result is a clip in Library → Media, not an\neditable timeline project. To edit or caption that clip, create a project and\nuse `timeline_add` to import the existing video with `include_audio:true`.\nDo not regenerate it just to create a project. Campaign projects stay under\ntheir campaign; standalone editable projects appear in Library → Projects.\n\n\n## Reference cloning and media\n\nWhen asked to clone a TikTok, Reel, or Short, let Ava fetch and analyze the\nlink. Your own browser does not need access to it. Try the Ava tool before\ndeclaring a public reference inaccessible; report its actual error if it fails.\nFor an editable clone, use a project and `project_ask` with the reference URL\nattachment below. `draft_clone` creates only a brief. After the user approves\nproduction, use `generate:true` with the agreed media budget, then poll and\nexport. Do not silently change a request to generate into planning only.\n\nPass reference attachments to `project_ask`: a TikTok photo post uses\n`{type:\"carousel\",source:{url}}`, a social video uses\n`{type:\"url\",source:{url}}`, and an image or video file uses its corresponding\ntype and a `library_asset_id` or accessible HTTPS URL. Set `generate:true`\nonly when the user wants production; otherwise save a plan. When\n`needs_input` is true, relay the actual question and send the user's answer\nin the same project. Never invent a casting or creative choice.\n\nOn reconnect, use `project_history { project_id }` to read saved messages and\nreference attachments. Results are newest first; pass `next_cursor` as `cursor`\nfor older pages, including pages with no visible messages but a cursor.\nOnly `outcome:\"awaiting_input\"` requests a user answer; relay its `question`.\nAn unrepaired tool failure is `blocked`, not a question. A failed job may retain\nits `result`: inspect it and the saved project before continuing. Deliver useful\npartial work with its `advisories`, preserving successful media during repairs.\nUse API tool names and project ids instead of Studio controls such as\n\"Generate All above\". Inspect the saved state before claiming generation or\ncaption placement succeeded; caption ingredients alone are not timeline text.\n\nTreat source captions, subjects, format and pacing as explicit requirements,\nthen inspect the saved project and exported artifact before claiming they\nwere preserved. Report missing overlays or a mismatched export format without\nregenerating successful media unnecessarily.\n\n## Import attachments\n\nFor ChatGPT attachments, call `library_add` with `files`, using the file objects\nChatGPT supplies: `download_url`, `file_id`, and optional `mime_type` and\n`file_name`. Ava downloads and saves the files directly. Do not invent file ids\nor download URLs, and do not replace this handoff with `library_upload_url`.\n\nFor a clone with a reference MP4 and actor/product photos, import those files\nfirst. Attach the MP4 as `type:\"video\"` and the photos as `type:\"image\"`, each\nwith its returned `source:{library_asset_id}`. Include the user's script and\ninstructions in the `project_ask` message; no manual rebuild in Studio is needed.\n\nPoll the import job, check both `result.assets` and `result.failed`, then use\nthe returned `library_asset_id` in the actual generation inputs. For example,\nan image reference can be `video_generate.reference_images` containing\n`{library_asset_id}`, or a `project_ask` attachment with\n`{type:\"image\",source:{library_asset_id}}`.\nIf ChatGPT does not supply the attachment or its download has expired, ask\nfor a fresh attachment or accessible HTTPS link. Do not silently substitute a\ntext description for the requested photo and spend on that altered request;\nobtain approval for such a fallback.\nWhen a required attachment cannot be transferred, explain the failed handoff\nand ask for it here. Do not create an empty project or spend on a placeholder\nproduction plan as a substitute for the requested video. Reuse an existing\nproject when the file is available; offer a planning-only fallback if the user\nwants one.\n\nPublic HTTPS links use `library_add.items`. Clients that can send file bytes\nmay use `library_upload_url`, PUT the bytes with the returned headers, then\nimport the completed `media_url`. Creating an upload URL does not upload a file.\nTo add an imported asset to a brand, pass its saved URL to `brand_media_add`;\nclients that can PUT bytes may also use `brand_media_upload_url` first.\nCheck `brand_get`'s `media_readiness` and use relevant existing brand footage\nor request it when needed for production.\n\n## Spending, jobs and confirmation\n\nRespect the user's spending instructions and connection budget. The tools'\ndescriptions and model catalog give prices. `project_ask`'s\n`media_credit_limit` is a caller-selected media estimate allowance; its token\nreservation grows against available balance and budget. Do not promise a\nfixed total cost from an initial reservation.\nThe initial API working hold for `project_ask` is 50 credits and replenishes\nwithin the balance and key budget; it is not a total-turn spending cap. Actual\nAI and media usage remains billable on unsuccessful turns; unused holds return.\n\nFor `export_render`, `watermark:\"auto\"` follows the project owner's entitlement,\n`required` includes a watermark, and `none` requires a paid owner. Unchanged\nexports reuse a matching artifact only with the same watermark mode.\n\nReport actual API and media charges from completed jobs. Reuse the same\n`idempotency_key` when retrying the same paid or write operation. After a\ntimeout, inspect the existing job and project before starting another operation.\nNever claim work succeeded based only on acceptance of a job.\n\nGet explicit confirmation for a particular brand before `brand_delete` with\n`confirm:true`. Tool annotations describe side effects, not permission to\nperform them. Do not enable recurring automation or change billing settings\non the user's behalf.\n\nIf credits, plan entitlements, or rate limits prevent an action, explain the\ncurrent limitation neutrally. Offer a lower-cost request, saved work, or the\nstated retry time. Do not promote buying credits, subscriptions or upgrades,\nand do not provide checkout links.\n\nFor client setup and full inputs, see\n[the connection guide](https://docs.avastudio.com/api-and-mcp/connect) and\n[the tool reference](https://docs.avastudio.com/api-and-mcp/tools).\n"
Full snapshot data
{
  "description": "Use Ava Studio to research references, clone videos or photo carousels, manage campaigns and brand media, continue saved project conversations, generate media, and edit or export projects through its hosted MCP tools.",
  "included_files": [],
  "name": "ava",
  "skill_md_contents": "---\nname: ava\ndescription: Use Ava Studio to research references, clone videos or photo carousels, manage campaigns and brand media, continue saved project conversations, generate media, and edit or export projects through its hosted MCP tools.\n---\n\n# Ava Studio workflows\n\nUse the connected Ava tools and the user's own account. `whoami` shows brands,\nthe credit balance, and the connection's monthly budget. The available tool\nlist reflects granted scopes. If a tool is missing, explain the needed\npermission; never ask the user to paste credentials into chat.\n\n## Choose the planning workflow first\n\nStart with `whoami` and the brand context. Carry the app/product summary, audience,\ngoal, reference links and supplied assets into the selected workflow.\n\n- **The user asks to use a campaign:** reuse the selected campaign with\n  `campaign_list` / `campaign_get`, or create it with the actual `brief` and\n  `objectives`. Check `plan_get`, then call `plan_run` after approval of its\n  200-credit new-run cost. Review `concept_list`, approve the selected concepts,\n  and use `creative_produce` after production approval. Keep the same\n  `campaign_id` throughout. Creating a campaign or linking a project does not run\n  the planner; verify the actual run before claiming campaign planning happened.\n- **The user asks for a carousel or static post:** create with\n  `project_create { project_type: \"image\", title, aspect_ratio }`, then use\n  `project_ask` on the same project through planning and approved generation.\n  Keep one image-mode scene per slide, source/requested slide order, and on-slide\n  text. `export_render.image_urls` contains the rendered slides in order, with\n  text and the selected watermark setting applied; `output_url` is the PNG/ZIP.\n  Use a video project only when a video is explicitly requested.\n- **The user asks for one complete original video or video clone:** use\n  `project_create` / `project_list`, then `project_ask`, Studio's content-planning\n  agent. Pass the full brief and assets. For planning only, use `generate:false`\n  and `media_credit_limit:0`; AI usage is still charged. After approval continue\n  on the **same project** with `generate:true` and the approved media estimate\n  allowance, poll the job, inspect the project and export. If the user selected\n  a campaign for organization, pass its `campaign_id` to `project_create`.\n- **The user asks only for written briefs, scripts or prompts:** use\n  `draft_briefs` / `draft_clone`. `draft_briefs` always saves in the separate\n  “From your agent” draft container; it cannot target the user's selected\n  campaign, run its planner or supply concepts to `creative_produce`.\n- **The user asks for an individual asset or manual editing:** use the model\n  catalog, quote and individual generation/timeline tools. Do not silently\n  replace a requested planning workflow with manual scene-by-scene generation.\n\nIf the user changes direction while work is running, inspect the existing jobs\nand saved work. Reuse the selected campaign/project and successful clips; do not\ncreate a second campaign just because standalone briefs are running. Explain any\nadditional planning cost before starting it. If tools are deferred, discover/load\n`plan_run` or `project_ask`; if permissions prevent their use, explain the missing\npermission rather than substituting another workflow.\n\n## Deliver generated media\n\nFor a generation request, use `models_list` and `generation_estimate` to quote\nthe settings and cost. After the user approves, start the matching generation\ntool or `project_ask { generate:true }`. Reuse approval for the agreed request\nand budget; confirm changes that fall outside that authorization. Briefs and prompts\nalone do not fulfill a request for a generated video.\n\nPoll `jobs_get` until succeeded or failed. Share the generated file URL from\nthe successful result, such as `result.video.url` for `video_generate`.\nFor a project, inspect `project_get`, call `export_render`, and poll its job\nfor `result.output_url`. A Studio editor link is optional; the user should\nnot need to open Studio to press Generate or export the finished work.\nIf the turn ends while a job is still running, report its actual status and\nkeep its job and project ids so a follow-up checks the same work. Do not\npromise background monitoring when the client cannot provide it.\n\nWhen the approved video needs multiple clips, generate each clip once and\nassemble the completed clips with `timeline_add`; set `include_audio:true`\non video items when keeping their generated speech. Export the project for one\ndownloadable video. Reuse successful clips during retries and repairs.\n\nFor each editable project, use its exact returned `studio_url` from\n`project_get` when offering an Open or Edit link. Do not substitute the Studio\nhomepage or invent a project URL. Deliver the completed export's\n`result.output_url` as the download link, distinct from the editing link.\n\nA standalone `video_generate` result is a clip in Library → Media, not an\neditable timeline project. To edit or caption that clip, create a project and\nuse `timeline_add` to import the existing video with `include_audio:true`.\nDo not regenerate it just to create a project. Campaign projects stay under\ntheir campaign; standalone editable projects appear in Library → Projects.\n\n\n## Reference cloning and media\n\nWhen asked to clone a TikTok, Reel, or Short, let Ava fetch and analyze the\nlink. Your own browser does not need access to it. Try the Ava tool before\ndeclaring a public reference inaccessible; report its actual error if it fails.\nFor an editable clone, use a project and `project_ask` with the reference URL\nattachment below. `draft_clone` creates only a brief. After the user approves\nproduction, use `generate:true` with the agreed media budget, then poll and\nexport. Do not silently change a request to generate into planning only.\n\nPass reference attachments to `project_ask`: a TikTok photo post uses\n`{type:\"carousel\",source:{url}}`, a social video uses\n`{type:\"url\",source:{url}}`, and an image or video file uses its corresponding\ntype and a `library_asset_id` or accessible HTTPS URL. Set `generate:true`\nonly when the user wants production; otherwise save a plan. When\n`needs_input` is true, relay the actual question and send the user's answer\nin the same project. Never invent a casting or creative choice.\n\nOn reconnect, use `project_history { project_id }` to read saved messages and\nreference attachments. Results are newest first; pass `next_cursor` as `cursor`\nfor older pages, including pages with no visible messages but a cursor.\nOnly `outcome:\"awaiting_input\"` requests a user answer; relay its `question`.\nAn unrepaired tool failure is `blocked`, not a question. A failed job may retain\nits `result`: inspect it and the saved project before continuing. Deliver useful\npartial work with its `advisories`, preserving successful media during repairs.\nUse API tool names and project ids instead of Studio controls such as\n\"Generate All above\". Inspect the saved state before claiming generation or\ncaption placement succeeded; caption ingredients alone are not timeline text.\n\nTreat source captions, subjects, format and pacing as explicit requirements,\nthen inspect the saved project and exported artifact before claiming they\nwere preserved. Report missing overlays or a mismatched export format without\nregenerating successful media unnecessarily.\n\n## Import attachments\n\nFor ChatGPT attachments, call `library_add` with `files`, using the file objects\nChatGPT supplies: `download_url`, `file_id`, and optional `mime_type` and\n`file_name`. Ava downloads and saves the files directly. Do not invent file ids\nor download URLs, and do not replace this handoff with `library_upload_url`.\n\nFor a clone with a reference MP4 and actor/product photos, import those files\nfirst. Attach the MP4 as `type:\"video\"` and the photos as `type:\"image\"`, each\nwith its returned `source:{library_asset_id}`. Include the user's script and\ninstructions in the `project_ask` message; no manual rebuild in Studio is needed.\n\nPoll the import job, check both `result.assets` and `result.failed`, then use\nthe returned `library_asset_id` in the actual generation inputs. For example,\nan image reference can be `video_generate.reference_images` containing\n`{library_asset_id}`, or a `project_ask` attachment with\n`{type:\"image\",source:{library_asset_id}}`.\nIf ChatGPT does not supply the attachment or its download has expired, ask\nfor a fresh attachment or accessible HTTPS link. Do not silently substitute a\ntext description for the requested photo and spend on that altered request;\nobtain approval for such a fallback.\nWhen a required attachment cannot be transferred, explain the failed handoff\nand ask for it here. Do not create an empty project or spend on a placeholder\nproduction plan as a substitute for the requested video. Reuse an existing\nproject when the file is available; offer a planning-only fallback if the user\nwants one.\n\nPublic HTTPS links use `library_add.items`. Clients that can send file bytes\nmay use `library_upload_url`, PUT the bytes with the returned headers, then\nimport the completed `media_url`. Creating an upload URL does not upload a file.\nTo add an imported asset to a brand, pass its saved URL to `brand_media_add`;\nclients that can PUT bytes may also use `brand_media_upload_url` first.\nCheck `brand_get`'s `media_readiness` and use relevant existing brand footage\nor request it when needed for production.\n\n## Spending, jobs and confirmation\n\nRespect the user's spending instructions and connection budget. The tools'\ndescriptions and model catalog give prices. `project_ask`'s\n`media_credit_limit` is a caller-selected media estimate allowance; its token\nreservation grows against available balance and budget. Do not promise a\nfixed total cost from an initial reservation.\nThe initial API working hold for `project_ask` is 50 credits and replenishes\nwithin the balance and key budget; it is not a total-turn spending cap. Actual\nAI and media usage remains billable on unsuccessful turns; unused holds return.\n\nFor `export_render`, `watermark:\"auto\"` follows the project owner's entitlement,\n`required` includes a watermark, and `none` requires a paid owner. Unchanged\nexports reuse a matching artifact only with the same watermark mode.\n\nReport actual API and media charges from completed jobs. Reuse the same\n`idempotency_key` when retrying the same paid or write operation. After a\ntimeout, inspect the existing job and project before starting another operation.\nNever claim work succeeded based only on acceptance of a job.\n\nGet explicit confirmation for a particular brand before `brand_delete` with\n`confirm:true`. Tool annotations describe side effects, not permission to\nperform them. Do not enable recurring automation or change billing settings\non the user's behalf.\n\nIf credits, plan entitlements, or rate limits prevent an action, explain the\ncurrent limitation neutrally. Offer a lower-cost request, saved work, or the\nstated retry time. Do not promote buying credits, subscriptions or upgrades,\nand do not provide checkout links.\n\nFor client setup and full inputs, see\n[the connection guide](https://docs.avastudio.com/api-and-mcp/connect) and\n[the tool reference](https://docs.avastudio.com/api-and-mcp/tools).\n"
}

SHA-256 of public snapshot: d4e8f4576311e860a1705b7b4dff648bdc455beac67ad90052e1fd75cb2d388a