Update to Ava Studio
Snapshot Oct 27, 2026 · 06:08 UTC · version 0.7.3
Collection source: downloaded plugin package.
Instructions updated for ava
Skill instructions — Now says: When asked to clone a TikTok, Reel, or Short, let Ava fetch and analyze the link. Your own browser does not need access to it. Try the Ava tool...
Observed in instructions or declared skills. Runtime behavior has not been tested.
Up to 10 plugins free · no card required.
All fields and original values.
Skill instructions
Oct 26, 2026 · 06:09 UTC
No removed lines (ordering may have changed)
Oct 27, 2026 · 06:08 UTC
When asked to clone a TikTok, Reel, or Short, let Ava fetch and analyze the link. Your own browser does not need access to it. Try the Ava tool before declaring a public reference inaccessible; report its actual error if it fails. For an...
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -64,6 +64,14 @@ ## Reference cloning and media +When asked to clone a TikTok, Reel, or Short, let Ava fetch and analyze the +link. Your own browser does not need access to it. Try the Ava tool before +declaring a public reference inaccessible; report its actual error if it fails. +For an editable clone, use a project and `project_ask` with the reference URL +attachment below. `draft_clone` creates only a brief. After the user approves +production, use `generate:true` with the agreed media budget, then poll and +export. Do not silently change a request to generate into planning only. + Pass reference attachments to `project_ask`: a TikTok photo post uses `{type:"carousel",source:{url}}`, a social video uses `{type:"url",source:{url}}`, and an image or video file uses its corresponding @@ -95,6 +103,11 @@ `file_name`. Ava downloads and saves the files directly. Do not invent file ids or download URLs, and do not replace this handoff with `library_upload_url`. +For a clone with a reference MP4 and actor/product photos, import those files +first. Attach the MP4 as `type:"video"` and the photos as `type:"image"`, each +with its returned `source:{library_asset_id}`. Include the user's script and +instructions in the `project_ask` message; no manual rebuild in Studio is needed. + Poll the import job, check both `result.assets` and `result.failed`, then use the returned `library_asset_id` in the actual generation inputs. For example, an image reference can be `video_generate.reference_images` containing @@ -104,6 +117,11 @@ for a fresh attachment or accessible HTTPS link. Do not silently substitute a text description for the requested photo and spend on that altered request; obtain approval for such a fallback. +When a required attachment cannot be transferred, explain the failed handoff +and ask for it here. Do not create an empty project or spend on a placeholder +production plan as a substitute for the requested video. Reuse an existing +project when the file is available; offer a planning-only fallback if the user +wants one. Public HTTPS links use `library_add.items`. Clients that can send file bytes may use `library_upload_url`, PUT the bytes with the returned headers, then
Full technical diff · 1 changed fields
changed /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## 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\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\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.\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""---\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"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## 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"
}SHA-256 of public snapshot: a6133120b68440e14ddef248251b0b218f0d669101c4af7ff7920f42bbc9e5b5