Skip to main content
Glama

Server Details

Make AI videos, images, ads and short dramas from a description, priced first. Sign in to create.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 62 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
aicontentdrop/aicontentdrop
GitHub Stars
0

TDQS

A3.6/5.0

Scored across 42 tools

Disambiguation3/5

Most tools map to distinct resources/actions, but there are several overlapping boundaries: refresh_canvas is described as the same answer as get_canvas, move_cards/arrange_cards/update_card all affect card positioning, and estimate_ad_cost vs estimate_credit_cost plus generate_video/generate_ad/generate_ugc_video require careful reading. Detailed descriptions help, but the set still contains enough redundancy that misselection is plausible.

Naming Consistency4/5

The set is overwhelmingly consistent snake_case verb_noun naming (list_canvases, get_canvas, generate_video, estimate_ad_cost). The main deviation is ad_to_canvas_card, which lacks a leading verb and breaks the otherwise predictable pattern.

Tool Count2/5

42 tools is a very large surface for one server, spread across boards, generation, ad studio, competitor ads, brands, articles, and account management. While the domain is broad, the count is high enough to feel heavy and likely to overwhelm tool selection.

Completeness3/5

Core workflows are well covered: boards can be created, read, updated, populated, arranged, and linked; generation and ad jobs have estimate/generate/poll paths. However, lifecycle coverage is incomplete because there are no delete/remove operations for boards, cards, saved ads, or brand profiles, leaving dead ends for cleanup.

Available Tools

42 tools
add_frameAdd frameAInspect

Add a labelled frame (a region such as Week 1 or Hooks) to a board. The frame is placed in free space like a new card and encloses no existing card. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
labelYesThe frame's label, up to 200 characters.
widthNoOptional width in pixels; defaults to 480.
heightNoOptional height in pixels; defaults to 360.
positionNoOptional { x, y } in board pixels. When omitted the server places the card in the first free grid cell.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
cardYes
canvasYes
next_stepYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), but the description adds non-obvious behavior: no credit cost and the fact that the frame encloses nothing existing. The OAuth/API-key sign-in requirement with a concrete header format is genuinely useful preconditions context that structured fields do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by behavioral notes then auth requirements, ordered by relevance. The auth block is verbose with a full URL, but it earns its place as a blocking prerequisite; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations, a fully covered input schema, and an output schema present, the description closes the remaining gaps: cost, placement semantics, and authentication. An agent has everything needed to decide and invoke without further reading.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented including defaults and the revision semantics. The description adds only marginal meaning beyond that ('placed in free space' echoes the position parameter's 'first free grid cell' description), so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a labelled frame') and disambiguates the concept with concrete examples ('a region such as Week 1 or Hooks'). It also clarifies the frame 'encloses no existing card', which separates it from grouping/arrangement siblings like group_cards without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is only implied: 'placed in free space like a new card' suggests when auto-placement applies, but there is no explicit when-to-use-this-vs-group_cards or when-to-pass-position guidance. An agent can infer the scenario, but alternatives are never named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_generation_cardAdd generation cardAInspect

Add a draft generation card to a board: a prompt and a model (an id from list_models) that can be rendered later with run_generation_card. Adding it costs nothing; nothing renders until it is run with a quote. Set duration and resolution on the card for a per-second model: the quote for run_generation_card must be taken with them. For a step that builds on an earlier card (a still that becomes a video), pass from_card_id: the new card is connected to that card on the board and, unless it has its own image_url, starts from that card's finished image. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
kindNoDefaults to video.
modelNoA model id from list_models.
widthNoOptional card width in pixels.
heightNoOptional card height in pixels.
promptNoThe generation prompt, up to 4000 characters.
durationNoOptional clip length in seconds, for video models that price by duration.
positionNoOptional { x, y } in board pixels. When omitted the server places the card in the first free grid cell.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.
image_urlNoOptional public https reference image for image-to-video or image-to-image.
resolutionNoOptional, e.g. 720p, 1080p.
aspect_ratioNoOptional, e.g. 9:16, 16:9, 1:1.
from_card_idNoOptional: an image generation card or an image media card on the same board. The new card is connected to it, and its finished image is the new card's start frame when the new card runs (run the source card first).

Output Schema

NameRequiredDescription
cardYes
edgeNoThe connection from from_card_id, when one was given.
canvasYes
next_stepYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (not read-only, not destructive, not idempotent). The description adds real behavioral context beyond that: OAuth/API-key auth requirement with a concrete header format, the fact that duration and resolution must match what the quote is taken with, and how from_card_id links cards and seeds the start frame.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core behavior is front-loaded in the first two sentences and every sentence carries information. The trailing auth block is somewhat bulky and could be tightened, but it is not filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters but an output schema present and full schema coverage, the description supplies the missing pieces an agent needs: auth method, cost/render timing, duration-resolution coupling, and the parent-card linkage. Nothing essential for a correct call is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries the per-parameter baseline. The description still adds meaning the schema lacks: how model ids are obtained, why duration/resolution are coupled to the quote, and the connection/start-frame semantics of from_card_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a draft generation card to a board') and immediately clarifies it is a prompt+model pair that is not rendered until run_generation_card. This separates it cleanly from run_generation_card (rendering) and add_media_card (importing media).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says adding costs nothing and nothing renders until run with a quote, names run_generation_card as the follow-up and list_models as the source of model ids, and gives the concrete branch condition for from_card_id (building on an earlier card). It covers when to use, what happens next, and the alternative path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_media_cardAdd media cardAInspect

Add an image or video card to a board from a public https URL (an import_asset result, a finished generation's video_url, or an ad's video_url). Costs no credits. Returns the whole board and the new card. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
urlYesPublic https URL of the image or video.
kindYes
titleNoOptional title, up to 200 characters.
widthNoOptional card width in pixels.
heightNoOptional card height in pixels.
sourceNoOptional provenance: where the media came from.
captionNoOptional caption, up to 2000 characters.
positionNoOptional { x, y } in board pixels. When omitted the server places the card in the first free grid cell.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
cardYes
canvasYes
next_stepYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses zero credit cost, that the response is the whole board plus the new card, and the full auth path (OAuth via host prompt or an acd_live_ Bearer key). One meaningful gap remains for a mutation tool: idempotentHint=false is not surfaced, so nothing warns that a retry will create a duplicate card rather than being a no-op.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, cost, and return shape are front-loaded in two short sentences, then the auth block. The auth paragraph is long and largely boilerplate, but it is genuinely necessary setup information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 90% schema coverage, the description covers the two things structured data can't: authentication and credit cost. For a 10-parameter, nested-object mutation tool, the only missing piece an agent would want is what happens on a stale or missing 'revision'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 90%, so the schema already documents url, title, caption, position, revision, and source. The description only adds the constraint that the URL must be public https and where it typically comes from; it adds nothing about the 'kind' enum, the optional 'source' provenance object, or revision conflict behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add an image or video card to a board') plus the accepted input form (public https URL), which cleanly separates it from add_text_card, add_generation_card, and add_frame. It even names the upstream producers of that URL (import_asset result, generation's video_url, ad's video_url), so an agent knows exactly which artifact this tool consumes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear about the condition for use — a public https URL from one of three named sources — and adds a cost signal ('Costs no credits') that helps an agent pick this over a paid generation route. It never states exclusions, e.g. that non-https or private URLs are rejected or when add_generation_card should be preferred over re-adding a generation's video_url.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_text_cardAdd text cardAInspect

Add a text card (a note, an idea, a script line) to a board. The server places it on a grid unless a position is given. Costs no credits. Returns the whole board and the new card. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
textYesThe card's text, up to 4000 characters.
colorNoOptional colour name or hex the website uses for the card.
titleNoOptional title, up to 200 characters.
widthNoOptional card width in pixels.
heightNoOptional card height in pixels.
positionNoOptional { x, y } in board pixels. When omitted the server places the card in the first free grid cell.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
cardYes
canvasYes
next_stepYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses auto-placement on the grid when position is omitted, that the operation consumes no credits, that the whole board plus the new card are returned, and the full auth requirement (OAuth host prompt or Bearer acd_live_… API key with the settings URL). These are exactly the preconditions an agent needs that readOnlyHint=false/destructiveHint=false do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then behaviour, then auth, and every sentence is informative. The auth sentence is long (two mechanisms plus a URL) but it is genuinely required information rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't explain return shape, yet it still summarises it; combined with credit cost, placement defaults, and auth it covers everything needed to invoke an 8-parameter mutation tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all eight parameters including limits (4000 chars, 200-char title) and the revision fallback. The description only restates the position-vs-grid behaviour, adding no new semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a text card') and disambiguates the content type with 'a note, an idea, a script line', which separates it from sibling card-creators (add_media_card, add_generation_card, add_frame). The board-bound scope is explicit, so an agent can pick it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the examples of what a text card is and by 'Costs no credits', which helps an agent prefer it over credit-consuming generation tools. However, it never states when-not to use it or names an alternative sibling explicitly (e.g. 'for images use add_media_card').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ad_to_canvas_cardAd to boardAInspect

Place a saved competitor ad on a board as a media card (its video or image, the advertiser as title, the hook as caption) with its decoded brief attached when it has one. Costs no credits. Returns the whole board and the new card. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
ad_idYesA saved ad's id, from list_saved_ads or save_competitor_ad.
revisionNoThe board revision this change is based on. Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
adYes
cardYes
canvasYes
next_stepYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, the description adds important behavior: it costs no credits, requires OAuth or an API key, and returns the whole board plus the new card. It does not explain revision conflict behavior or failure modes, which are relevant for a non-idempotent mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and result are front-loaded, followed by cost and authentication details. Every sentence provides operational value, including the necessary sign-in instructions, with no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description is still complete enough for invocation: it identifies required inputs indirectly, explains the card transformation, states credit cost, and covers authentication. No critical calling context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents ad_id, canvas_id, and revision fully. The description adds context about the ad-to-card mapping but does not add meaning beyond the schema for individual parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: placing a saved competitor ad on a board as a media card. It also specifies the field mapping (ad video/image as media, advertiser as title, hook as caption), which clearly distinguishes it from generic card-creation siblings like add_media_card.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: use this when a saved competitor ad should become a board card, and it implicitly requires an existing ad_id and board. However, it does not explicitly name alternatives or exclusion conditions, such as when to use add_media_card instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arrange_cardsArrange cardsAInspect

Lay chosen cards (or the whole board) out as a grid, a row or a column. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
gapNoOptional spacing in pixels; defaults to 24.
idsNoCard ids to arrange; omitted means every card.
layoutYes
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
canvasYes
next_stepYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare non-readOnly/non-destructive, and the description adds genuinely new behavioral facts: zero credit cost and the exact OAuth/API-key auth path. It doesn't cover what happens on a stale revision or whether arrangement is reversible, so it stops short of 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action leads, cost is stated in three words, and the auth block is isolated and clearly flagged. The auth sentence is long but it is load-bearing setup information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 80% parameter coverage, the description needn't explain returns. It covers purpose, cost, and auth, which are the main pre-call unknowns for a 5-parameter mutation tool; only revision/conflict behavior is left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so the schema already explains ids, gap, revision and canvas_id. The description only echoes the ids/whole-board distinction ('chosen cards (or the whole board)'), adding no format or default detail beyond the schema — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Lay chosen cards (or the whole board) out as a grid, a row or a column' states both the operation and the three supported layouts. It does not name the adjacent siblings (move_cards, group_cards) that an agent might confuse it with, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Costs no credits' and 'or the whole board' hint at when this is cheap/appropriate, and the auth block tells the agent how to get access. But there is no explicit when-to-use-versus-move_cards/group_cards guidance and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connect_cardsConnect cardsA
Idempotent
Inspect

Connect two cards on a board with a line from one to the next, so the board reads as a flow: a script card to the card that renders it, an idea to each of its variations. Costs no credits. Refuses a card connected to itself, a frame, and a connection that is already there. A connection made here does not make one card's result another card's start frame; add_generation_card with from_card_id does. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
labelNoOptional short label drawn on the line, up to 200 characters.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.
to_card_idYesThe card it leads to.
from_card_idYesThe card the line starts from, from cards[] on the board.

Output Schema

NameRequiredDescription
edgeYesA connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame.
canvasYes
next_stepYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: no credit cost, three explicit rejection cases (self-connection, frames, duplicate connections), and the key semantic that this link does not create a generation dependency. It also discloses the auth requirement (OAuth or Bearer API key), which the annotations do not cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and examples before constraints and auth, and every sentence carries information. The auth block is verbose and repeated boilerplate, but it is materially useful for invocation success.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter documentation, the description covers cost, failure modes, auth, and the crucial distinction from generation dependencies. Only minor gaps remain, such as what happens on a revision conflict, which the schema's revision field only hints at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so canvas_id, from_card_id, to_card_id, label, and revision are already documented in the schema. The description adds no further parameter-level detail (e.g., ordering semantics of from/to beyond the schema text), so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — connecting two cards on a board with a line — and clarifies it is for flow/visual linkage with concrete examples (script card to render card, idea to variations). It explicitly distinguishes itself from add_generation_card with from_card_id, so an agent can tell the two apart without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use examples and points to the alternative (add_generation_card with from_card_id) when the intent is a start-frame dependency rather than a visual link. It does not spell out an explicit 'do not use this when…' clause beyond the refusal list, so it stops just short of the top mark.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_canvasCreate boardAInspect

Create a new, empty board and return it. Costs no credits. Cards are added to it with the add_* tools. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
nameNoBoard name, up to 100 characters. Defaults to Untitled Canvas.

Output Schema

NameRequiredDescription
canvasYes
next_stepYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), and the description adds genuinely new facts: the operation costs no credits and the board starts empty. The SIGN-IN REQUIRED block spells out both OAuth and API-key auth with a concrete header format and URL, which is real operational context. It does not address limits such as duplicate names or a per-account board cap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and cost, followed by the follow-on hint and then auth. The auth sentence is long but every clause is actionable (mechanism, header name, URL), so it earns its space; the only mild redundancy is restating the credential prefix format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't describe the returned board, and it correctly focuses on cost, auth, and next steps instead. Visibility/sharing semantics of a newly created board are the one gap an agent might still wonder about.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one optional parameter and the schema already documents it fully, including the 100-character limit and the 'Untitled Canvas' default. The description adds nothing about the name argument, so the baseline of 3 applies when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the key qualifier 'new, empty board and return it', which separates it cleanly from list_canvases, get_canvas, and rename_canvas. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear situational context by naming the follow-on path ('Cards are added to it with the add_* tools'), which tells the agent this is the setup step before add_frame/add_text_card etc. It stops short of explicit when-not guidance or pointing at list_canvases/get_canvas for existing boards.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_adDecode adA
DestructiveIdempotent
Inspect

Decode a saved competitor ad into a reusable formula: hook, script, scenes, audio, call to action and style, plus a generation-ready recreation prompt. Requires a quote_id from estimate_ad_cost with kind "decode" (a flat price). Credits are charged only when the analysis succeeds; an ad decoded before returns its stored decode and charges nothing. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
ad_idYesA saved ad's id, from list_saved_ads or save_competitor_ad.
quote_idYesThe quote_id from estimate_ad_cost with kind "decode". Required.

Output Schema

NameRequiredDescription
noteNoPresent only when the charge could not be applied to the account.
ad_idYes
cachedYesTrue when a stored decode was returned; nothing was charged.
decodeYesThe ad's formula, layer by layer, plus a generation-ready prompt.
replayedYesTrue when this quote_id had already been submitted and the original result was returned.
next_stepYes
credits_usedYesCredits charged: 0 for a stored decode or when the charge could not be applied (then note says so); null when the figure is not reported.
credits_quotedYesThe price fixed by the quote.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: a flat quoted price, credits charged only on success, cached results on repeat calls (consistent with idempotentHint), and full OAuth/API-key auth instructions with a key-creation URL. However, the destructiveHint=true and openWorldHint=true annotations are never addressed — the description doesn't say what, if anything, is mutated or removed, which leaves an agent-facing ambiguity for a tool nominally flagged destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and output contents, then billing/caching behavior, then the auth block — a sensible priority order. The auth sentence is dense and partially duplicative of what a host OAuth flow would surface, but it earns its place for API-key callers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, required inputs and their provenance, cost model, idempotency/caching, and authentication — all that an agent needs to invoke it correctly. Since an output schema exists, the description needn't detail return shapes, and the brief enumeration of decoded components is a bonus rather than a requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in-schema. The description largely restates the quote_id origin and adds only the 'flat price' characterization, which is marginal added meaning over the structured fields; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (decode) and resource (a saved competitor ad) plus the concrete artifacts produced: hook, script, scenes, audio, CTA, style, and a generation-ready recreation prompt. This clearly separates it from siblings like get_saved_ad (retrieval), estimate_ad_cost (pricing), and generate_ad (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the prerequisite flow — a quote_id must come from estimate_ad_cost with kind "decode" — and states that a previously decoded ad returns its stored decode at no charge, which tells the agent when calling is cheap vs. billable. It does not explicitly say when to prefer get_saved_ad or ad_to_canvas_card instead, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_ad_costEstimate ad costA
Read-onlyIdempotent
Inspect

Price a studio job before making it: a finished ad from a brief or storyboard (kind "ad"), a UGC creator video (kind "ugc"), a generated avatar (kind "avatar") or a competitor-ad decode (kind "decode"). Returns the credit lines, the total and a quote_id that generate_ad, generate_ugc_video, generate_avatar and decode_ad require. No account needed. For an ad, quote exactly the fields you will submit.

NameRequiredDescriptionDefault
kindNoDefaults to ad.
briefNoThe ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (1-5), totalDurationSec (5-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats.
qualityNoLip-sync tier. premium costs more per talking shot. Defaults to the brief's quality, else fast.
model_tierNocinematic renders on Seedance with director-grade camera work and costs more per shot; needs the brief.
storyboardNoThe storyboard returned by write_ad_storyboard, as is or edited. When present it is what renders; the brief is optional alongside it.
persona_modeNosynthetic lets the studio substitute one consistent generated creator for the avatar; exact-avatar (default) keeps the avatar as given.
needs_avatar_genNoTrue when the avatar still has to be generated (billed as a line).
needs_product_genNoTrue when the product still has to be generated (billed as a line).

Output Schema

NameRequiredDescription
kindYes
basisYes
linesYes
quote_idYesSigned quote. Pass it to the matching generate_* tool; it fixes the price and makes a retry safe.
next_stepYes
expires_atYesISO time after which the quote is refused.
credits_totalYesFor an ad, the most it can cost; the charge on success is never higher.
expires_in_secondsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds useful context beyond the read-only/idempotent annotations: it discloses the return contents (credit lines, total, quote_id), states no account is needed, and notes that the quote_id is required by generate_ad, generate_ugc_video, generate_avatar and decode_ad. It does not mention quote expiry or precision caveats, but the behavioral picture is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the purpose and kinds, followed by return values and the downstream dependency. Every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a read-only estimator: it covers purpose, supported kinds, return shape, quote_id consumers and account requirements, while the output schema and 100% schema coverage carry the field-level detail. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning by mapping each kind value to a real use case and by advising "For an ad, quote exactly the fields you will submit," which helps align brief/storyboard inputs. It does not elaborate on the individual brief fields beyond the schema, so it stays just above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Price") and resource ("studio job") and immediately enumerates the four supported kinds with concrete examples, so an agent can distinguish it from generate_ad and the other generation siblings. The description makes clear this is an estimator, not a generator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool as a preflight step ("before making it") and names the four downstream siblings that consume the returned quote_id, which is strong routing guidance. It does not explicitly state when not to use it, but the context is clear enough to avoid misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_credit_costEstimate credit costA
Read-onlyIdempotent
Inspect

Price a video or image before making it. Returns the exact credit cost and a quote_id that generate_video and generate_image require. No account needed. Pass the duration and resolution you intend to use; some video models bill per second.

NameRequiredDescriptionDefault
durationNoVideo length in seconds you intend to generate. Affects the price of per-second models.
model_idYesModel ID, e.g. "kling_3_0" or "veo_3_fast".
quantityNoHow many generations to price. Defaults to 1. Only a quote for exactly 1 can be spent; larger quantities are for planning.
resolutionNoVideo resolution you intend to generate, e.g. "720p" or "1080p". Affects the price of per-second models.
reference_video_secondsNoLength in seconds of the reference video you will pass as reference_video_url (seedance_2_5 up to 30 s, or seedance_2_0_fast up to 15 s at 720p). Reference seconds are billed as input, so they change the price; the server measures the file and refuses a quote whose length does not match.

Output Schema

NameRequiredDescription
nameYes
typeYes
basisYes
model_idYesNormalized to underscores.
quantityYes
quote_idYesSigned quote. Pass it to generate_video or generate_image; it fixes the price and makes a retry safe.
next_stepYes
resolutionNoThe resolution actually priced, for per-second models.
credits_eachYes
credits_totalYes
duration_secondsNoThe duration actually priced, for per-second models.
quote_expires_atYesISO time after which the quote is refused.
reference_video_secondsNoReference-video seconds priced as input, when a reference was quoted.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe, idempotent, closed-world read profile, so the bar is lower; the description adds genuinely non-structured context: the returned quote_id is a hard prerequisite for downstream generation, and no authentication is required. It does not restate the per-second billing nuance beyond a brief mention, and error/refusal behavior is left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with purpose and the return value before the usage caveats. Each sentence carries distinct information (what it does, what it returns, who needs it, auth, input guidance) with no restatement of the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. For a five-parameter, fully documented pricing tool the description supplies everything an agent needs: when to call it, the downstream dependency on quote_id, and the fact that no account is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters including the reference_video_seconds measurement rule are already documented in structured fields. The description only reinforces that duration and resolution should reflect intended use and that some video models bill per second, adding marginal meaning beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource framing ("Price a video or image before making it") and immediately states the return value (exact credit cost plus quote_id). It is clearly distinguishable from list_models and from the generate_* tools it feeds, so an agent knows this is the pre-flight pricing step rather than a generation or catalog call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing ("before making it") and a concrete precondition (generate_video and generate_image require the quote_id it returns), plus the useful note that no account is needed. It also instructs the caller to pass intended duration and resolution. The one gap is that it never mentions the sibling estimate_ad_cost, leaving ad pricing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_adGenerate adA
DestructiveIdempotent
Inspect

Make a finished video ad — multi-shot, with a speaking creator, product shots, captions and an optional music bed — from a brief or a storyboard plus an avatar image and a product image. Requires a quote_id from estimate_ad_cost for exactly these fields; returns a job_id to poll with get_ad_job. Credits are charged only when the ad succeeds, and never more than the quote. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
briefNoThe ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (1-5), totalDurationSec (5-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats.
musicNoOptional music bed.
qualityNoLip-sync tier. premium costs more per talking shot. Defaults to the brief's quality, else fast.
quote_idYesThe quote_id from estimate_ad_cost for these exact fields (kind ad). Required.
canvas_idNoOptional board id (from list_canvases or create_canvas): the ad is placed on it as a generation card that fills in when the render lands.
avatar_urlYesPublic https URL of the creator's reference image (a catalogue portrait, a generate_avatar result, or an import_asset URL).
model_tierNocinematic renders on Seedance with director-grade camera work and costs more per shot; needs the brief.
project_idNoOptional studio project (uuid) to file the run under.
storyboardNoThe storyboard returned by write_ad_storyboard, as is or edited. When present it is what renders; the brief is optional alongside it.
persona_modeNosynthetic lets the studio substitute one consistent generated creator for the avatar; exact-avatar (default) keeps the avatar as given.
needs_avatar_genNoTrue when the avatar still has to be generated (billed as a line).
needs_product_genNoTrue when the product still has to be generated (billed as a line).
product_image_urlYesPublic https URL of the product image.
avatar_descriptionNoOptional one-line identity note for the creator (20-500 characters).
product_descriptionNoOptional one-line product note (10-500 characters).

Output Schema

NameRequiredDescription
job_idYesPoll this with get_ad_job.
statusYes
replayedYesTrue when this quote_id had already been submitted and the original job was returned.
next_stepYes
studio_urlNoThe job's page in the studio on AI Content Drop.
credits_quotedYesThe ceiling fixed by the quote.
poll_after_secondsYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that credits are charged only on success and never exceed the quote, that the call is asynchronous returning a job_id, and the OAuth/API-key sign-in requirement. This billing and auth context is exactly what the destructive/open-world annotations leave unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences front-load the capability and workflow, followed by a clearly delimited SIGN-IN note. Every element is load-bearing; only the auth URL detail makes it slightly long, not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter async generation tool with an output schema, the description supplies the workflow chain (estimate → generate → get_ad_job), billing guarantees, and auth path. Nothing essential an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description raises it by explaining that quote_id must come from estimate_ad_cost for these exact fields, and by framing brief vs storyboard relationship. Most other parameter meaning still lives in the schema, keeping it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and a richly-scoped resource: a finished multi-shot video ad with creator, product shots, captions and optional music. It clearly differentiates from siblings by referencing the brief/storyboard inputs and naming the quote/job workflow, so an agent knows this is not generate_video or write_ad_storyboard.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites (quote_id from estimate_ad_cost for exactly these fields) and the follow-up step (poll job_id with get_ad_job), plus the brief-vs-storyboard alternative. It doesn't explicitly state when to prefer generate_video or generate_ugc_video instead, so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_avatarGenerate avatarA
DestructiveIdempotent
Inspect

Generate a creator portrait (Nano Banana) to use as the avatar in generate_ad, checked for hands, face and background defects. Requires a quote_id from estimate_ad_cost with kind "avatar". Finishes within the call; credits are charged only when a portrait comes back. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
promptYesWho the creator is: age, look, clothing, setting, mood (20-800 characters).
save_asNoOptional name; saves the portrait on a brand profile for reuse.
quote_idYesThe quote_id from estimate_ad_cost with kind "avatar". Required.
aspect_ratioNoDefaults to 9:16.

Output Schema

NameRequiredDescription
noteNoPresent only when the charge could not be applied to the account.
qa_notesYes
replayedYes
next_stepYes
qa_passedYes
avatar_urlYesPass as avatar_url to generate_ad.
credits_usedYesThe charge that landed; 0 when no portrait came back or the charge could not be applied (then note says so).
credits_quotedYes
brand_profile_idNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond annotations: synchronous completion ("Finishes within the call"), billing semantics ("credits are charged only when a portrait comes back"), automated defect checking on hands/face/background, and the full auth path with header format. These are exactly the cost, latency and auth facts an agent needs before invoking a credit-consuming generation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool produces and its consumer before prerequisites and auth. The auth sentence is long and includes a URL and header example, but every clause is actionable; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers the remaining gaps: prerequisite quote, cost timing, synchronous behavior, quality checking and authentication. An agent has everything needed to call this correctly on the first try.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so prompt, save_as, quote_id and aspect_ratio (with enum) are already fully documented. The description only restates the quote_id provenance that the schema already carries, adding no format or behavioral detail beyond it. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Generate a creator portrait") plus its downstream consumer (avatar in generate_ad) and the quality check applied. This clearly separates it from generate_image and generate_video in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites: a quote_id from estimate_ad_cost with kind "avatar", and sign-in via OAuth or API key. It doesn't explicitly state when to prefer generate_image instead, but the fixed workflow chain (estimate_ad_cost → generate_avatar → generate_ad) makes usage unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageGenerate imageA
DestructiveIdempotent
Inspect

Make an AI image: a product still, a thumbnail, a poster, concept art, or a reference frame to animate later. Requires a quote_id from estimate_credit_cost so the price is agreed first; then returns a job id to poll with get_generation (kind "image"). Credits are charged only when the image succeeds. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
modelNoImage model ID from list_models with type "image". Must match the quoted model; omitted means the quoted model.
promptYesWhat the image should show.
quote_idYesThe quote_id from estimate_credit_cost for this exact image model. Required.
image_urlNoOptional public reference image (image-to-image). Only these models accept one: gpt_image_2, gpt_image_2_edit, gpt_image_2_5_flare, gpt_image_2_5_sunburst, seedream_5_0_pro.

Output Schema

NameRequiredDescription
idYesPoll this with get_generation.
kindYes
modelNo
statusYes
replayedYesTrue when this quote_id had already been submitted and the original job was returned.
image_urlNoNull until the render finishes.
next_stepYesWhat to do next, in words, so a model need not infer it.
unlimitedNo
video_urlNoNull until the render finishes.
credits_usedYes0 until the render succeeds; billing is post-deduct.
credits_quotedYesThe price fixed by the quote.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavioral context beyond annotations: credits are charged only on success, the call is asynchronous and yields a job id, and OAuth/API-key auth is spelled out with a concrete header format and settings URL. It does not address the destructiveHint=true annotation or whether repeated calls create separate billable jobs, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and use cases before the quote/poll workflow, then auth last, which is the right ordering. Dense but every sentence carries operational weight; the parenthetical auth details are slightly bulky but justified for a paid, gated tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the full lifecycle an agent needs: auth setup, required quote, async job id, polling target, and billing timing. Return values are handled by the output schema, so nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds the constraint that quote_id must come from estimate_credit_cost for this exact model and that model must match the quote. It does not restate image_url's per-model allowlist, which the schema already covers in detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ("Make an AI image") and enumerates concrete output types (product still, thumbnail, poster, concept art, reference frame). It also distinguishes itself from the async siblings by naming the polling tool get_generation, so an agent knows this starts a job rather than returning an image directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit prerequisite chain: obtain quote_id from estimate_credit_cost first, then poll with get_generation (kind "image"). This is a when-to-use and how-to-sequence statement that routes the agent to the correct sibling tools rather than leaving order to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_ugc_videoGenerate UGC videoA
DestructiveIdempotent
Inspect

Make a UGC-style creator video: a catalogue creator (template from list_ugc_avatars) or a person's own photo (image_url) speaks the script with lip-sync, optional voice choice and ambience. Requires a quote_id from estimate_ad_cost with kind "ugc", and image_rights_consent: true given by the person. Returns an id to poll with get_generation. Credits are charged only on success. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
voiceNoOptional voice id or name.
scriptYesWhat the creator says, up to 1000 characters.
ambienceNoOptional background sound, e.g. cafe, street, none.
languageNoOptional language code, e.g. en.
quote_idYesThe quote_id from estimate_ad_cost with kind "ugc". Required.
templateNoA creator id from list_ugc_avatars. Alternative to image_url.
image_urlNoPublic https URL of the person's photo. Alternative to template.
image_rights_consentYesMust be true, and only after the person confirmed they hold the rights to the face and accept the acceptable-use terms. No default.

Output Schema

NameRequiredDescription
idYesPoll this with get_generation.
kindYes
statusYes
replayedYes
next_stepYes
credits_usedYes0 until the render succeeds; billing is post-deduct.
credits_quotedYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint, idempotentHint and openWorldHint, and the description adds the operationally critical facts they cannot express: credits are charged only on success, the result is an id to poll with get_generation, and OAuth or an 'Authorization: Bearer acd_live_…' header is required. It also spells out the legal/consent condition attached to image_rights_consent, which is exactly the kind of beyond-schema behavior an agent must know before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the input alternatives come first, followed by prerequisites, return/polling behavior and billing, then auth last — a sensible front-loading. The OAuth/API-key block is somewhat verbose relative to the rest, but it is genuinely actionable rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, credit-consuming, open-world generation tool with 8 parameters, the description covers the source-of-truth for quote_id, the consent gate, billing semantics, and the follow-up step (poll get_generation). An output schema exists, so the lack of return-field detail is not a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description nevertheless adds meaning the schema doesn't convey on its own, such as template being an alternative to image_url, quote_id's provenance (estimate_ad_cost kind "ugc"), and that consent must be given by the person rather than assumed. It stops short of contrasting voice/language/ambience choices, so not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Make a UGC-style creator video') and immediately disambiguates the two input modes: catalogue creator via list_ugc_avatars/template, or the person's own photo via image_url, both lip-synced to a script. This distinguishes it from siblings like generate_avatar and generate_video without the agent needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the full prerequisite chain: a quote_id from estimate_ad_cost with kind "ugc", and image_rights_consent=true given by the person, plus which sibling supplies the template. It names the alternative inputs but does not explicitly say when to prefer generate_video/generate_avatar over this tool, so it falls just short of a perfect routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_videoGenerate videoA
DestructiveIdempotent
Inspect

Make an AI video: a product ad, a vertical clip for social, a cinematic shot, or animate a photo into video (image-to-video). Requires a quote_id from estimate_credit_cost so the price is agreed first; then returns a job id to poll with get_generation. Credits are charged only when the video succeeds. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
modelNoModel ID from list_models, e.g. "kling_3_0". Must match the quoted model; omitted means the quoted model.
promptYesWhat the video should show. Detailed prompts produce better results.
durationNoLength in seconds. Must match the quoted duration for per-second models.
quote_idYesThe quote_id from estimate_credit_cost for this exact model, duration and resolution. Required.
image_urlNoPublic image URL to animate (image-to-video). Required for models whose list_models entry has needs_start_image; optional for the rest.
resolutionNoe.g. "720p" or "1080p". Must match the quoted resolution for per-second models.
aspect_ratioNoDefaults to 16:9. Use 9:16 for vertical social clips.
reference_video_urlNoOptional public https URL of a reference video (for example a 3D blockout playblast) whose camera movement, shot rhythm and subject motion the generation must follow. seedance_2_5 (30 s max) or seedance_2_0_fast (15 s max, 720p). The quote must have been priced with reference_video_seconds equal to this clip's length rounded up; the server measures the clip and refuses on mismatch.

Output Schema

NameRequiredDescription
idYesPoll this with get_generation.
kindYes
modelNo
statusYes
replayedYesTrue when this quote_id had already been submitted and the original job was returned.
image_urlNoNull until the render finishes.
next_stepYesWhat to do next, in words, so a model need not infer it.
unlimitedNo
video_urlNoNull until the render finishes.
credits_usedYes0 until the render succeeds; billing is post-deduct.
credits_quotedYesThe price fixed by the quote.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds valuable behavioral context beyond annotations: credits are charged only on success, sign-in is required via OAuth or API key, and the tool returns an asynchronous job id for polling. This goes well beyond the safety profile in annotations, though it doesn't elaborate on idempotency or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by workflow prerequisites, billing behavior, and authentication requirements. It is structured and every sentence contributes useful information, though it could be slightly more concise by omitting redundant details like the full API key example URL.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and annotations cover the safety profile, the description is complete enough for an agent to call the tool correctly. It covers the necessary prerequisites (quote_id), async job handling, billing on success, and authentication requirements. Minor gaps like model selection constraints are adequately addressed by the input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning all eight parameters are well-documented in the schema itself. The description mentions quote_id and the polling workflow with get_generation, but does not add syntax or format details beyond what the schema already provides. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Make an AI video: a product ad, a vertical clip for social, a cinematic shot, or animate a photo into video (image-to-video).' This clearly states what the tool does and covers multiple use cases, distinguishing it from image generation siblings. However, it does not explicitly differentiate from other video generation siblings like generate_ugc_video, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear workflow context: 'Requires a quote_id from estimate_credit_cost so the price is agreed first; then returns a job id to poll with get_generation.' This tells the agent exactly when to use this tool (after getting a quote and before polling). It lacks explicit when-not guidance or comparison to alternative sibling tools, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_accountGet accountA
Read-onlyIdempotent
Inspect

Check the signed-in account's remaining credits and current plan name before generating, and get the informational page about plans and entitlement. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteNo
planYesfree | starter | professional | ultra | enterprise_max
info_urlYesInformational page describing plans and entitlement options.
usernameNo
can_generateYes
credits_remainingYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds valuable behavioral context beyond those annotations, especially the OAuth or API-key authentication requirement, though it does not discuss rate limits or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and usage context, followed by the authentication requirement. Both sentences earn their place, and the auth details are necessary for successful invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition covers purpose, usage timing, and authentication prerequisites. Because there are no parameters and an output schema exists, return-value details and parameter documentation are not needed in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there are no parameter semantics to explain beyond the schema. With zero parameters and full schema coverage, the baseline of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Check,' and names the exact resources: signed-in account remaining credits and current plan name, plus plan/entitlement information. It is clearly distinct from sibling generation and canvas tools because it is account-status retrieval, not content generation or editing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context by saying to use it 'before generating,' and it states the sign-in prerequisite explicitly. It does not name alternatives or when not to use it, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ad_jobGet ad jobA
Read-onlyIdempotent
Inspect

Check an ad job: stage and percent while it renders, then the finished video URL, the storyboard sheet, duration, size and the credits charged. Takes the job_id from generate_ad; while the job runs the result carries retry_after_seconds (15). SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
job_idYesThe job_id returned by generate_ad.

Output Schema

NameRequiredDescription
noteNoPresent only when a succeeded job's charge could not be applied to the account.
errorNo
stageNostoryboard | rendering | done, while known.
job_idYes
statusYes
percentNo
next_stepYes
video_urlNoThe finished ad with burnt-in captions. Present only when succeeded.
size_bytesNo
studio_urlNoThe job's page in the studio on AI Content Drop.
credits_usedYesCredits charged for this job when the record reports them; null when a succeeded job's record does not carry the figure (credits_quoted from generate_ad is the ceiling). 0 while running, when failed, or when the charge could not be applied (then note says so).
duration_secondsNo
retry_after_secondsNoPresent while the job is not terminal.
storyboard_sheet_urlNoThe storyboard sheet image, when the run produced one.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/idempotent/non-destructive; the description goes further by disclosing the asynchronous lifecycle (stage and percent while rendering), the concrete 15-second retry hint, and the exact auth path (OAuth prompt or Bearer acd_live_… key with a settings URL). That is materially more than the structured fields carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Result contents are front-loaded in the first sentence, then the job_id provenance, then the polling hint, then auth — a sensible priority order. The auth block is long and partly generic boilerplate, but it earns its place for a tool that will fail without it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, yet the description still conveys the intermediate vs. terminal states and the polling cadence an agent needs to drive the loop. Auth, provenance and lifecycle are all covered; nothing required to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already says job_id is 'the job_id returned by generate_ad'. The description repeats that same fact and adds no format, prefix or example guidance, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check an ad job') and immediately enumerates the observable payload: stage, percent, finished video URL, storyboard, duration, size and credits charged. This cleanly positions it as the polling counterpart to generate_ad rather than another generation endpoint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Takes the job_id from generate_ad' plus the note that running jobs return retry_after_seconds (15) tells an agent both when to call it and how to loop. It stops short of naming explicit alternatives (e.g. list_generations or get_generation) or saying when not to use it, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_articleGet articleA
Read-onlyIdempotent
Inspect

Fetch the full text of one published article as markdown, by slug.

NameRequiredDescriptionDefault
slugYesArticle slug, e.g. "kling-vs-sora-comparison".

Output Schema

NameRequiredDescription
urlYes
slugYes
titleYes
markdownYesFull article body.
publishedNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world. The description adds value beyond them by disclosing the return format (markdown) and the scope restriction to published articles. It does not say what happens for a missing, draft, or unpublished slug, which is the main remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the action, the resource, the output format, and the lookup key with zero filler. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain the response body; stating markdown format is a useful bonus. For a one-parameter read tool with full annotation coverage, the only meaningful omission is error behavior for invalid or unpublished slugs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the slug parameter already carries a concrete example, so the schema does the heavy lifting. The description only reinforces that the slug identifies a single published article; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch), resource (one published article), return format (full text as markdown), and key (slug). It implicitly contrasts with the sibling search_articles by emphasizing "one published article," but never names that alternative, so the differentiation is inferential rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this when you already have a slug and need the full text. There is no explicit guidance on when not to use it, nor a pointer to search_articles for discovering slugs, which is the obvious complementary tool in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_canvasGet boardA
Read-onlyIdempotent
Inspect

Read one board in full: every card with its type, position, size and data, the edges, and the revision. Generation cards that are still rendering are checked against their jobs on every read. Shows the board as a view; a board already on screen re-reads itself every 10 seconds while a card renders and for 5 minutes after it last changed, opened or went full screen. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
canvasYes
next_stepYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing that generation cards are checked against their jobs on every read, that an on-screen board auto-re-reads every 10 seconds during renders and 5 minutes after changes, that the call costs no credits, and the exact OAuth/API-key auth requirement. That is substantial operational context an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core read behavior and value description, followed by behavioral notes and auth. Dense but mostly earning its place; the auth block is boilerplate-heavy and slightly lengthens the entry.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, yet the description still summarizes the payload. Combined with the auto-refresh and auth notes, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage on the single canvas_id parameter, the schema already carries the meaning ('from list_canvases or create_canvas'). The description adds nothing further about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one board in full') and enumerates exactly what the read returns: cards with type/position/size/data, edges, and revision. This clearly separates it from list_canvases (which enumerates boards) and from refresh_canvas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for use: reading a single board in full, with detail on how rendering generation cards are resolved on each read. It doesn't explicitly name alternatives (e.g., list_canvases for summaries, refresh_canvas for forcing a re-read), so the exclusions are left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_generationGet generationA
Read-onlyIdempotent
Inspect

Check whether a video or image is finished and get its URL. Takes the job id that generate_video or generate_image returned; pass kind "image" for an image job. Reports status, the finished file URL, and the credits charged. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
idYesThe id returned by generate_video or generate_image.
kindNoWhich job type the id belongs to. Defaults to video.

Output Schema

NameRequiredDescription
idYesPoll this with get_generation.
kindNo
modelNoModel ID, underscored.
titleNo
statusYesgenerating | processing | completed | failed | timeout
image_urlNo
video_urlNo
credits_usedYesCharged only on success — a failed generation is 0.
error_messageNo
thumbnail_urlNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: OAuth/API-key authentication requirements and the exact reported fields (status, URL, credits charged).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the purpose, then explains the job id, output fields, and auth requirements without excessive detail. The authentication note is somewhat long but earns its place because it is operationally important.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich annotations, 100% schema coverage, and an output schema, the description is complete enough for an agent to invoke the tool correctly. It covers purpose, input source, output contents, and sign-in requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented. The description reinforces that id comes from generate_video/generate_image and that kind selects image jobs, but it adds little beyond the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: checking whether a video or image generation is finished and retrieving its URL. It also names the sibling generators whose job IDs it consumes, which helps distinguish it from list_generations and the generate_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says to use the job id returned by generate_video or generate_image and to pass kind "image" for image jobs. It does not explicitly contrast with list_generations, but the usage context is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_saved_adGet saved adA
Read-onlyIdempotent
Inspect

Read one saved competitor ad in full, with its stored decode (the ad's formula and a recreation prompt) when it has one. Costs no credits; never runs a decode. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
ad_idYesA saved ad's id, from list_saved_ads or save_competitor_ad.

Output Schema

NameRequiredDescription
adYes
decodeYesThe ad's formula, layer by layer, plus a generation-ready prompt.
next_stepYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new operational facts: zero credit cost, no decode execution, and the full auth path (OAuth via host prompt, or Bearer acd_live_… API key header with a creation URL). That is the kind of pre-call context an agent needs and cannot get from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then the cost/behavior clause, then auth — a logical order with no filler. The auth sentence is long but carries required setup detail, so it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure needn't be described. With cost, decode behavior, auth requirements, and id provenance all covered, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single ad_id parameter is fully documented with provenance ('from list_saved_ads or save_competitor_ad'). The description adds no further meaning about the parameter, so this is the baseline case where the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one saved competitor ad in full') plus the notable payload ('stored decode — the ad's formula and a recreation prompt'). This clearly separates it from list_saved_ads (listing), save_competitor_ad (writing), and decode_ad (running a new decode).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the cost/behavior contrast — 'Costs no credits; never runs a decode' — which implicitly routes agents to decode_ad when they need a fresh decode, and the schema points to list_saved_ads/save_competitor_ad for the ad_id. It lacks an explicit 'use this instead of X when Y' sentence, keeping it just under a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

group_cardsGroup cardsAInspect

Wrap chosen cards in a labelled frame that encloses them. Returns the board and the new frame. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
idsYesThe card ids to enclose.
labelYesThe frame's label, up to 200 characters.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
cardYes
canvasYes
next_stepYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the return payload ('the board and the new frame'), the credit cost (zero), and a detailed sign-in requirement with both OAuth and API-key paths including where to mint the key. The annotations already cover read-only/destructive/idempotent flags, so the remaining gap is minor: it doesn't say what happens on a revision conflict or whether a repeat call nests a second frame.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operative content is front-loaded in the first two short sentences (action, return, cost), with auth requirements clearly separated and labelled. The OAuth/API-key block is verbose but genuinely actionable for an unauthenticated agent, so it earns most of its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape needn't be explained further, and the description covers auth and cost — the two things an agent most often gets wrong here. It is complete enough to invoke correctly; only mutation edge cases (repeat calls, revision mismatch) are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the four parameters, including the optional revision fallback behavior, is documented in the schema itself. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource: 'Wrap chosen cards in a labelled frame that encloses them', plus what it returns. This implicitly distinguishes it from add_frame (which creates a frame on its own) and arrange_cards, but the sibling differentiation is left for the agent to infer rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Wrap chosen cards' implies the precondition that the cards already exist, and 'Costs no credits' hints at when it is cheap to use. However, there is no explicit guidance on when to choose this over add_frame, arrange_cards, or move_cards, and no stated exclusions or prerequisite ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_assetImport assetA
Idempotent
Inspect

Copy a public image (JPEG, PNG or WebP, at most 10 MB) onto AI Content Drop so it can be used as an avatar, product or photo reference. Returns the hosted URL. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
urlYesPublic https URL of the image.

Output Schema

NameRequiredDescription
urlYesThe hosted copy.
bytesYes
widthNo
heightNo
next_stepYes
content_typeYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (non-read-only, non-destructive, idempotent, open-world), and the description adds material context the agent could not infer: the 10 MB cap, accepted MIME types, the fact that it costs no credits, and the auth requirement with a concrete OAuth/API-key path. That is exactly the value-add the behavioral dimension rewards.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and effect, then constraints, then auth — a sensible ordering with no filler. The auth sentence is dense but genuinely actionable rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter import tool the description covers cost, size/format limits, auth, and the returned hosted URL (an output schema also exists, so return values need no elaboration). An agent has everything required to call it correctly on the first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema coverage, the schema already documents `url`; the description nonetheless contributes constraints absent from the schema — public accessibility, https, and the allowed formats and size ceiling. Minor gap: it doesn't say whether redirects or signed URLs are acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb and resource ("Copy a public image ... onto AI Content Drop") and states the intended downstream uses (avatar, product/photo reference). That distinguishes it clearly from generate_image and generate_avatar in the sibling list, which create rather than import.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies the deciding context — you already have a public image URL and want it hosted for reuse — plus hard preconditions (public https URL, JPEG/PNG/WebP, ≤10 MB). It stops short of naming an explicit alternative (e.g. "use this instead of generate_image when you already have the image"), so a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_brand_profileImport brand profileA
Idempotent
Inspect

Read a brand's website and save a brand profile from it: name, value props, CTA, tone and product images. Costs no credits. Low-confidence reads are returned for confirmation instead of being saved. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
urlYesThe brand's product page or app page.
modeNoWhat kind of page it is. Defaults to product.
persistNoSave when the read is confident. Defaults to true.

Output Schema

NameRequiredDescription
profileYesThe saved profile, or null when not saved.
warningsYes
next_stepYes
extractionNoWhat was read from the page.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already flag a non-read-only, open-world, idempotent write), the description discloses credit cost, the low-confidence confirmation path, and concrete auth options (OAuth or Bearer acd_live_ key with a URL). This is behavior an agent cannot infer from the structured fields and is directly needed to call it successfully.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and extracts before the auth block, and every sentence carries information. The OAuth/API-key sentence is dense but necessary; overall it is close to optimally sized with minor verbosity in the auth instructions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full parameter documentation, and annotations present, the description covers cost, auth, and the confirmation path. It leaves mode selection (product vs app) to the schema, which is acceptable, so completeness is high but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning by tying the persist flag to the low-confidence confirmation behavior and clarifying what the read produces. It does not elaborate on the product/app mode distinction beyond what the schema says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read website, save profile) and enumerates exactly what is extracted (name, value props, CTA, tone, product images). This clearly distinguishes it from the sibling list_brand_profiles, which reads rather than creates profiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: no credit cost, low-confidence reads are surfaced for confirmation instead of saved, and sign-in prerequisites are spelled out. It stops short of explicitly naming an alternative tool or a 'when not to use' condition, so it lands just below the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ad_formatsList ad formatsA
Read-onlyIdempotent
Inspect

See the ad formats the studio can produce — UGC, talking head, unboxing, tutorial, TV spot, product hero, hyper-motion, try-on and more — with a one-line description, the default aspect and the allowed shot count and duration. No account needed. A brief names one of these formats by its id.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteNo
countYes
formatsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive, closed-world behavior; the description adds auth context ('No account needed') not present in annotations, which is useful for an agent deciding whether it can call this early. It also previews the shape of each entry (one-line description, default aspect, shot count and duration), though the output schema likely covers much of that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and resource, then the return contents and the ID-usage note in two short sentences. The format enumeration is illustrative rather than redundant, and no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only catalog tool with an output schema, the description supplies everything an agent needs: what is listed, what each entry contains, and how the IDs are consumed downstream. No missing prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing to document; the baseline for a zero-parameter tool applies. The description correctly implies a full-catalog, unfiltered listing, which matches the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('See the ad formats the studio can produce') and enumerates the catalog contents (UGC, talking head, unboxing, tutorial, TV spot, etc.). This clearly separates it from sibling listing tools such as list_models, list_ugc_avatars and list_brand_profiles, which list different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use ('No account needed') and explains downstream relevance: 'A brief names one of these formats by its id,' implying this is a discovery step before writing a brief or generating an ad. It does not explicitly state when to prefer it over sibling catalogs, but the resource specificity makes the fit obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_brand_profilesList brand profilesA
Read-onlyIdempotent
Inspect

List the account's saved brand profiles — name, site, value props, CTA, tone, product images — so ads for the same brand reuse the same facts. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
countYes
profilesYes
next_stepYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so safety is covered. The description adds the thing annotations cannot: an explicit auth prerequisite with two concrete paths (host OAuth prompt, or a Bearer acd_live_… API key header) and the URL where the key is created — genuinely actionable context that prevents a failed first call. It does not add rate-limit or pagination context, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with purpose and payoff front-loaded and the auth block clearly demarcated by a capitalized label. Every clause carries information — there is no filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description is not obliged to describe return values, and the annotations cover the safety profile. What would otherwise cause a call to fail — authentication — is spelled out with both credential paths and a signup URL. Nothing an agent needs in order to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case; there are no argument semantics to explain. The field list in the description is a preview of results rather than parameters, so it neither helps nor hurts here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus resource ('the account's saved brand profiles'), with the returned fields enumerated (name, site, value props, CTA, tone, product images). It is clearly distinguished from the mutating sibling import_brand_profile, and the closing clause states the business reason the list exists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'so ads for the same brand reuse the same facts' tells the agent this is the read step that precedes ad generation for an existing brand, which is real usage context. It never names import_brand_profile as the alternative for creating a profile, nor states an exclusion, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_canvasesList boardsA
Read-onlyIdempotent
Inspect

List the account's boards (visual canvases), newest first: id, name, revision, card count and the board's page link. Costs no credits. Its ids are the canvas_id the other board tools take; an empty list means the account has no board yet. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
countYes
canvasesYes
next_stepYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavior: zero credit cost, first-class auth requirements (OAuth prompt or Bearer acd_live_… API key with a URL), and the meaning of an empty result. These are exactly the operational facts an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and return fields, then cost, id linkage and auth. The auth sentence is long and dense with an embedded URL, but it is the only verbose part and carries real information for a first-call tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values needn't be re-specified, annotations carry the safety profile, and the description covers cost, auth, empty-state and id usage. Nothing material is missing for a zero-parameter list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema cannot mislead and the baseline is 4. The description correctly implies no filtering arguments are needed while still describing what the caller receives.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the account's boards (visual canvases)') plus ordering ('newest first') and the exact fields returned. It also distinguishes itself from get_canvas by explaining that the ids it returns are the canvas_id consumed by the other board tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly frames this as the discovery step whose ids feed the other board tools, and explains the empty-list case ('an empty list means the account has no board yet'). It does not explicitly say when to prefer get_canvas over this or address pagination limits, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_generationsList generationsA
Read-onlyIdempotent
Inspect

List the account's recent video generations, newest first, with their status and URLs. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
limitNoHow many to return (1-50). Defaults to 10.

Output Schema

NameRequiredDescription
countYes
generationsYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world, non-destructive behavior, so the description does not need to repeat safety traits. It adds genuinely useful behavioral context: results are newest first, include status and URLs, and require OAuth or an API key header. It does not describe rate limits or pagination beyond the limit parameter, but it covers the most important operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the core listing behavior and return contents. The second sentence is longer but earns its place by covering the required authentication path in concrete terms. There is essentially no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with one fully documented optional parameter, an output schema, and strong annotations, the description is nearly complete. It adds ordering, returned fields, and auth requirements beyond structured fields. The main remaining gap is explicit routing guidance versus get_generation or other list siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single optional limit parameter is fully documented in the schema with range and default. The description adds no additional meaning about the limit parameter. Baseline 3 is appropriate when the schema carries all parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: list the account's recent video generations. It adds scope and ordering (newest first) and says results include status and URLs. It does not explicitly distinguish this from get_generation or other list tools, but the list-vs-single distinction is reasonably clear from the name and description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'List the account's recent video generations' and the newest-first ordering. However, the description does not say when to use this instead of get_generation or when-not to use it. The sign-in instructions are useful setup guidance, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsList modelsA
Read-onlyIdempotent
Inspect

See which AI video or image models can make a video ad, animate a photo, produce a product clip or generate an image, with the credit cost of one generation. No account needed. The list is live; count is the number of models currently offered.

NameRequiredDescriptionDefault
typeNoModel family to list. Defaults to video.
max_creditsNoOnly return models costing this many credits or fewer.

Output Schema

NameRequiredDescription
noteNo
typeYes
countYesModels returned after filtering.
modelsYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the description needn't re-state safety. It adds genuine context beyond that: no authentication is required, the list is live rather than cached, and the `count` field reflects how many models are currently offered — useful traits an agent can't get from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no filler; the capability list and cost note come first, then the operational caveats. The trailing `count` clause is slightly orphaned without saying what field it lives in, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure needn't be explained, and the description covers the two things an agent can't infer: no auth required and live data. With zero required parameters and full schema coverage, this is close to complete; only the absence of an explicit 'use before generate_*' nudge keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in-schema, including the type enum and its video default. The description gestures at credit cost (mapping loosely to max_credits) but adds no filtering syntax or semantics beyond what the schema already says, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb-plus-resource ('see which AI video or image models...') with concrete capabilities enumerated (video ad, animate a photo, product clip, image) and the added dimension of credit cost per generation. It clearly distinguishes itself from generation siblings like generate_video, though it never explicitly contrasts with other list_* siblings such as list_ad_formats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent can infer this is the discovery/cost-check step before calling a generation tool, and 'No account needed' hints at pre-auth contexts. But there is no explicit 'call this before generate_video to pick a model' or any condition excluding alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_saved_adsList saved adsA
Read-onlyIdempotent
Inspect

List the competitor ads saved on the account, newest first: id, advertiser, hook, media and whether a decode is stored. Costs no credits. Its ids are the ad_id that get_saved_ad, decode_ad and ad_to_canvas_card take. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
adsYes
countYes
next_stepYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds value beyond them: zero credit cost, deterministic newest-first ordering, the fields returned, and the required OAuth or Bearer API-key authentication with a concrete header format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then return fields, cost, id linkage, and auth — a sensible priority order with no filler sentences. The sign-in block is verbose but operationally necessary, so the density is justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Zero parameters, an output schema for return values, and annotations for safety — the description fills the remaining gaps (auth, cost, ordering, id reuse). Nothing an agent needs in order to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline is 4. The description goes slightly further by describing the fields of each item and their ordering, but return shape is already covered by the output schema, so no additional credit is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('List the competitor ads saved on the account') plus ordering ('newest first') and the returned field set. It is clearly distinct from search_competitor_ads because it is scoped to ads already saved, though it never names that sibling explicitly to make the contrast airtight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides forward routing: the returned ids are exactly the ad_id consumed by get_saved_ad, decode_ad and ad_to_canvas_card, so an agent knows this is the lookup step preceding those tools. It also notes 'Costs no credits', a useful decision input. It stops short of saying when to prefer this over search_competitor_ads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ugc_avatarsList UGC avatarsA
Read-onlyIdempotent
Inspect

See the catalogue creators available for a UGC video — name, style and a portrait URL — and the fields generate_ugc_video accepts. No account needed. A person's own photo can be used instead, with their consent.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteNo
countYes
avatarsYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: no account is required, and using a real person's photo requires their consent — an important operational constraint not present in structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence that front-loads the resource and its returned fields. The em-dash aside about generate_ugc_video fields and the trailing consent remark are both informative, though the middle clause reads a bit tangled.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters, full schema coverage, an output schema, and complete annotations, the description only needs to add auth and usage context — which it does via 'no account needed' and the consent caveat. Nothing essential to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description does not need to compensate for any schema gap here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — a catalogue of UGC creators with name, style and portrait URL — which is clearly distinct from the generate_* siblings. The clause about 'the fields generate_ugc_video accepts' is slightly ambiguous (does it return a schema or just matching metadata?), but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies the correct usage context by naming generate_ugc_video, so an agent can infer this is the lookup step preceding UGC generation. It also names an alternative path — using the person's own photo with consent — though it does not state explicit when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_cardsMove cardsAInspect

Move one or more cards to new positions on a board. The server places new cards itself; this is for the board view's drag. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
movesYesCards and their new positions.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
canvasYes
next_stepYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly=false, destructive=false, non-idempotent, closed-world), so the description needn't repeat that. It adds genuinely new behavioral facts: the operation costs no credits and requires OAuth or a Bearer API key, including where to obtain the key — details absent from all structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in one sentence, followed by the disambiguating note and the auth requirement. The auth block is long (URL plus header format) but is load-bearing information that prevents a failed call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and all three parameters are documented in the schema. The description completes the picture with cost and authentication, leaving only the arrange_cards boundary unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the optional x/y and revision semantics, so the schema carries the parameter burden. The description adds no extra meaning beyond noting the server handles placement of new cards, which is already stated in the position property description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Move one or more cards to new positions on a board') and clarifies the scope by contrasting with server-side card placement. It does not name the overlapping sibling arrange_cards, so the boundary is only partially drawn.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'The server places new cards itself; this is for the board view's drag' implies when to use it (manual repositioning rather than creation). However, it never mentions arrange_cards, which is the obvious alternative for bulk repositioning, so the agent must guess which to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_canvasRefresh boardA
Read-onlyIdempotent
Inspect

Re-read a board (same answer as get_canvas). Each read checks rendering generation cards against their jobs: a finished render sets the card's status to done and its media_url. It opens no new view: a board already on screen re-reads itself every 10 seconds while a card renders and for 5 minutes after it last changed, opened or went full screen. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
canvasYes
next_stepYes

TDQS

A3.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=true, but the description says each read sets a generation card's status to done and its media_url, which is a state mutation. That directly contradicts the read-only annotation, even though the description otherwise adds useful auth, cost, and refresh-interval context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core behavior is front-loaded, and the remaining sentences cover materially useful invocation context: render-status side effects, automatic refresh timing, credit cost, and sign-in requirements. There is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. For a single-parameter read tool, the description supplies the important operational context: render-checking behavior, auto-refresh conditions, cost, and authentication requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already documents canvas_id as the board id from list_canvases or create_canvas. The description adds no parameter-specific detail beyond that schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Re-read a board') and explicitly relates the result to get_canvas while adding render-status checking behavior. This gives an agent enough to distinguish it from the many board/card siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for use: same answer as get_canvas, no new view opened, auto-refresh behavior while cards render, and no credit cost. However, it stops short of explicitly saying when to choose refresh_canvas versus get_canvas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_canvasRename boardB
Destructive
Inspect

Rename a board. Costs no credits. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
nameYesThe new name, 1-100 characters.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
canvasYes
next_stepYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds real value beyond annotations by disclosing auth requirements (OAuth or Bearer API key) and zero credit cost. However, for a mutation flagged destructiveHint=true it says nothing about the revision-based concurrency behavior (what happens on a stale revision) or whether the old name is recoverable, so the mutation semantics remain thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Core action is front-loaded in three words, then cost, then auth. The auth/sign-in block is boilerplate-length but genuinely actionable and does not obscure the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Params and return values are well covered by schema and output schema, and auth is addressed. The gap is behavioral: conflict/overwrite semantics around the optional revision parameter — the most likely failure mode for this tool — are left to the schema field text alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — name length bounds, revision provenance, and canvas_id source are all documented in the schema. The description adds no parameter-level detail, which is the baseline case rather than a gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Rename a board" states a specific verb and resource, clearly distinct from card-level siblings like update_card or the create/get canvas tools. It does not explicitly name a sibling or disambiguate from refresh_canvas/update_card, but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb — an agent can infer it should call this when a board's title must change. It adds one useful decision factor ("costs no credits"), but gives no when-not guidance (e.g., use update_card for card changes) and no prerequisite ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_generation_cardRun generation cardA
DestructiveIdempotent
Inspect

Render a generation card: its prompt and model become a video or image job whose result lands in the card. Requires a quote_id from estimate_credit_cost for the card's model and kind (quantity 1), taken with the card's duration and resolution when it has them: per-second models are priced from those, and the quote is verified against the card. A card added with from_card_id and no image_url starts from its source card's finished image; until that card is done the run is refused with nothing charged. Credits are charged only on success; a retry with the same quote_id returns the same job. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
card_idYesA generation card with a model and a prompt.
quote_idYesThe quote_id from estimate_credit_cost for this card's model and kind, quoted with the card's duration and resolution when it has them. Required.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
jobYes
cardYes
canvasYes
next_stepYes
credits_quotedYesThe ceiling fixed by the quote.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, it discloses that credits are charged only on success, that the quote is verified against the card, that a from_card_id run is refused with nothing charged until the source image is done, and that retrying with the same quote_id returns the same job. These are exactly the expensive, mutation-adjacent behaviors an agent needs to understand before calling a destructive, open-world tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the core action and then layers prerequisites, failure behavior, billing, idempotency, and sign-in details. It is dense but appropriate for a charge-incurring, open-world operation, with only minor repetition around quote verification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers authentication, required quote provenance, source-card dependency, billing timing, retry idempotency, and failure behavior. With a rich input schema, an output schema, and annotations already declaring safety traits, an agent has everything needed to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so card_id, quote_id, revision, and canvas_id are already documented in the input schema. The description reinforces the quote_id requirements and adds context about duration and resolution, but it largely repeats what the schema already provides and adds no meaning for revision.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it renders a generation card by turning its prompt and model into a video or image job whose result lands in the card. This distinguishes the tool from direct sibling generators such as generate_image and generate_video, which create output without operating on an existing card.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear prerequisites and conditions: the card must have a model and prompt, the caller needs a quote_id from estimate_credit_cost, and source-card runs require the source image to be finished. It does not explicitly contrast when to use this tool versus generate_image or generate_video, so it stops short of a full routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_competitor_adSave competitor adA
Idempotent
Inspect

Keep one ad from search_competitor_ads on the account so it can be decoded and placed on a board. Pass the row exactly as returned. Costs no credits. Saving the same ad twice returns the existing saved ad. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
adYesOne row from search_competitor_ads results[], copied as is.

Output Schema

NameRequiredDescription
adYes
next_stepYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantive behavior beyond the annotations: zero credit cost, idempotent dedupe semantics ('Saving the same ad twice returns the existing saved ad'), and explicit sign-in/auth setup with the OAuth and Bearer-key paths. These are exactly the operational facts an agent needs before invoking a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then cost, idempotency, and auth — sensible ordering with little waste. The auth block is long, but it is genuinely required setup rather than filler; it could be tightened slightly by moving the URL to a trailing note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, source tool, input contract, cost, idempotency, and authentication, and an output schema already exists so return-value explanation is unnecessary. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every nested field is documented, so the schema does the heavy lifting. The description still adds a real constraint — the single `ad` object must be the row exactly as returned, unmodified — which clarifies the copy-back requirement beyond the per-field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Keep one ad ... on the account') and names its upstream source, search_competitor_ads, so the agent can distinguish it from get_saved_ad/list_saved_ads and from the search tool itself. It also names the downstream uses (decode, place on a board), which anchors the tool in the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Keep one ad from search_competitor_ads' plus 'Pass the row exactly as returned' gives clear conditions for use and the input contract. It stops short of explicitly contrasting with adjacent consumers like decode_ad or ad_to_canvas_card, so the choice between saving-then-decoding versus decoding directly is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_articlesSearch articlesA
Read-onlyIdempotent
Inspect

Search AI Content Drop's published guides and model comparisons about AI video generation, prompting, and ad creative.

NameRequiredDescriptionDefault
limitNoMaximum results (1-25). Defaults to 10.
queryYesKeywords, e.g. 'kling vs sora' or 'ugc hooks'.

Output Schema

NameRequiredDescription
countYes
queryYes
resultsYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world; the description adds genuine context beyond them by scoping the corpus to AI Content Drop's own published content and naming its subject areas, which tells the agent this is an internal knowledge lookup rather than a web search. It does not mention ranking behavior, empty-result handling, or that matching is keyword-based rather than semantic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the resource and corpus scope front-loaded and no filler. Every clause is doing work — the brand ownership, publication status, content types, and topic areas all narrow expectations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and both parameters fully documented in-schema, the description only needs to define the searchable corpus and topical scope, which it does. The one remaining gap is disambiguation from get_article and search_competitor_ads for agents choosing among retrieval tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: query is documented with example keyword strings and limit is documented with its range and default. The description adds nothing about parameters beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and a specific resource (published guides and model comparisons), plus the topical domain (AI video generation, prompting, ad creative), so the agent knows exactly what corpus is being queried. It stops short of naming how it differs from the related get_article sibling, so an agent must infer that this returns matching results while get_article fetches one document by id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'Search' and the topic list; there is no explicit when-to-use, when-not-to-use, or alternative named. Given siblings like get_article and search_competitor_ads, a routing sentence would have added real value. The topical scope does at least signal the domain where this tool is the right pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_competitor_adsSearch competitor adsA
Read-onlyIdempotent
Inspect

Search live competitor ads by keyword on Meta or TikTok: advertiser, copy, hook, call to action, media and run time per ad. Costs no credits. When live data is not available the rows are samples, not real ads: each is marked demo: true and the result carries a note saying so. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
sortNoimpressions (default) ranks by reach; recent by start date.
limitNoRows to return, 1-20; defaults to 10.
keywordYesWhat to search for: a product, a category or a competitor, 1-200 characters.
platformNoDefaults to meta.

Output Schema

NameRequiredDescription
demoYesTrue when results are sample rows because live data was not available.
noteNoPresent only when demo is true: why, and what the rows are.
sortYes
countYesRows returned.
keywordYes
resultsYes
platformYes
next_stepYes
total_foundYesRows the search produced before limit.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: zero credit cost, the demo/sample-data behavior with the demo: true marker and result note, and the full auth path (OAuth host prompt or 'Authorization: Bearer acd_live_…' key with a URL). Those are exactly the behavioral facts an agent needs before calling and that readOnlyHint/idempotentHint cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and returned fields, then cost, demo caveat, and auth in a logical order with no filler sentences. The auth block is dense but every clause (scheme, header format, key URL) is actionable, so it earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with an output schema, the description covers the remaining gaps: cost, sample-data semantics and marking, and authentication. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both enums (platform, sort) already document their defaults and meaning, so the schema does the heavy lifting. The description adds only the platform framing ('on Meta or TikTok') and no detail on keyword syntax, sort, or limit beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search live competitor ads by keyword') and names the platforms (Meta, TikTok) plus the fields each ad returns (advertiser, copy, hook, CTA, media, run time). It is clearly distinguishable from generation/canvas siblings, though it never names its natural counterpart save_competitor_ad.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: keyword search over live ads, no credit cost, and the explicit fallback rule that when live data is unavailable rows are samples marked demo: true. It stops short of naming alternatives or stating when another sibling (e.g. save_competitor_ad) should be chosen instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_cardUpdate cardA
Destructive
Inspect

Change a card: merge fields into its data (text or title on a text card; prompt, model, kind, aspect_ratio, duration, resolution or image_url on a generation card; title or caption on a media card; label on a frame), or move and resize it. Costs no credits. status, job_id, job_kind, quote_id, media_url, thumbnail_url, credits_used and error are set by the server when a card runs and are refused here. A per-second model is priced from the card's duration and resolution, and run_generation_card checks its quote against them. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
dataNoFields to merge into the card's data; fields not named are kept.
widthNoOptional card width in pixels.
heightNoOptional card height in pixels.
card_idYesThe card id, from cards[] on the board.
positionNoOptional { x, y } in board pixels. When omitted the server places the card in the first free grid cell.
revisionNoThe board revision this change is based on (from the last board you saw). Optional: when omitted the tool reads the current one first.
canvas_idYesThe board id, from list_canvases or create_canvas.

Output Schema

NameRequiredDescription
cardYes
canvasYes
next_stepYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations it adds real behavioral context: no credit cost, merge semantics (unnamed fields kept), server-side refusal of run-managed fields, and explicit auth requirements (OAuth or Bearer API key with signup URL). It does not explain what a destructiveHint=true overwrite of an existing data field means in practice, which is the one behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and field mapping are front-loaded, and every sentence is information-dense with no filler. The per-second-model pricing/quote sentence is tangential to this tool and slightly bloats an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with a full output schema and annotations, this covers field semantics, merge behavior, refused fields, and auth — everything needed to invoke it correctly. Minor gaps: no note on revision-conflict handling or the practical meaning of the destructive overwrite.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3, but the description goes further by unpacking the opaque generic 'data' object into per-card-type field sets — meaning the schema cannot convey. Width/height/position/revision semantics remain carried by the schema, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Change a card') and then enumerates exactly which fields are mutably per card type (text/title on text cards; prompt/model/kind/aspect_ratio/duration/resolution/image_url on generation cards; etc.), plus move/resize. This is far more specific than the sibling add_* / move_cards tools and lets an agent distinguish it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly establishes the context in which to call it (editing card data or geometry) and states exclusions — server-managed fields like status, job_id, media_url are refused here. It does not explicitly name alternatives such as move_cards or arrange_cards for repositioning, so routing between overlapping siblings is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_ad_storyboardWrite ad storyboardA
Read-onlyIdempotent
Inspect

Turn an ad brief into a storyboard: 1-5 shots with framing, the spoken line, the caption and the duration of each. Costs no credits. product_image_url, when the product image is already known, is passed as context for the storyboard. The storyboard, as returned or edited, is what estimate_ad_cost prices and generate_ad renders. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

NameRequiredDescriptionDefault
briefYesThe ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (1-5), totalDurationSec (5-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats.
product_image_urlNoOptional public https URL of the product image, the same one generate_ad will take, passed as context for the storyboard.

Output Schema

NameRequiredDescription
formatNo
next_stepYes
storyboardYesad { aspect, totalDurationSec, voiceLanguage } and shots[].

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: 'Costs no credits' reinforces the readOnly/non-destructive hints, and the SIGN-IN REQUIRED block discloses the exact OAuth and 'Authorization: Bearer acd_live_…' requirements plus where to create the key, which the annotations do not carry. Missing only edge behavior such as whether repeated calls produce identical storyboards despite idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and output shape in the first sentence, with pipeline and auth details following. The auth block is long but each element (OAuth vs API key, header format, settings URL) is actionable; slight density keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a nested-object schema with full descriptions, an output schema, and read-only annotations, the description covers the remaining agent needs: cost, auth, and downstream consumption by estimate_ad_cost and generate_ad. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns more: it explains that product_image_url is the same image generate_ad will take and is passed as storyboard context. The brief's fields are left to the schema, which already documents them thoroughly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Turn an ad brief into a storyboard') and specifies the output shape (1-5 shots with framing, spoken line, caption, duration). It also positions itself precisely against estimate_ad_cost and generate_ad, so an agent can place it in the pipeline without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says the returned/edited storyboard is what estimate_ad_cost prices and generate_ad renders, which is a clear ordering rule for the sibling tools. It does not give explicit exclusions (e.g. when to skip the storyboard and call generate_ad directly), so it stops short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedget_saved_ad1 field changed
      • changedOutput schema / properties / ad / properties / demo / description
        Previous value: -"True for a sample row: not a real ad. Never present a sample as live data."New value: +"True for a sample row: not a real ad and not live data."
    • Changedlist_saved_ads1 field changed
      • changedOutput schema / properties / ads / items / properties / demo / description
        Previous value: -"True for a sample row: not a real ad. Never present a sample as live data."New value: +"True for a sample row: not a real ad and not live data."
    • Changedsave_competitor_ad2 fields changed
      • changedInput schema / properties / ad / properties / demo / description
        Previous value: -"True for a sample row: not a real ad. Never present a sample as live data."New value: +"True for a sample row: not a real ad and not live data."
      • changedOutput schema / properties / ad / properties / demo / description
        Previous value: -"True for a sample row: not a real ad. Never present a sample as live data."New value: +"True for a sample row: not a real ad and not live data."
    • Changedsearch_competitor_ads1 field changed
      • changedOutput schema / properties / results / items / properties / demo / description
        Previous value: -"True for a sample row: not a real ad. Never present a sample as live data."New value: +"True for a sample row: not a real ad and not live data."
  2. 1 tool update
    • Changedwrite_ad_storyboard1 field changed
      • addedInput schema / properties / product_image_url
        Added value: +{
        +  "description": "Optional public https URL of the product image, the same one generate_ad will take, passed as context for the storyboard.",
        +  "type": "string"
        +}
  3. 24 tool updates
    • Changedad_to_canvas_card2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedadd_frame2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedadd_generation_card2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedadd_media_card2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedadd_text_card2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedarrange_cards2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedconnect_cards2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedcreate_canvas2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changeddecode_ad2 fields changed
      • removedOutput schema / properties / decode / properties / decodedAt
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / decode / required
        Previous value: -[
        -  "layers",
        -  "recreationPrompt",
        -  "confidence",
        -  "decodedAt"
        -]New value: +[
        +  "layers",
        +  "recreationPrompt",
        +  "confidence"
        +]
    • Changedgenerate_ad2 fields changed
      • removedOutput schema / properties / run_id
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / studio_url
        Added value: +{
        +  "description": "The job's page in the studio on AI Content Drop.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedget_ad_job2 fields changed
      • removedOutput schema / properties / run_id
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / studio_url
        Added value: +{
        +  "description": "The job's page in the studio on AI Content Drop.",
        +  "type": "string"
        +}
    • Changedget_canvas2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedget_generation1 field changed
      • removedOutput schema / properties / created_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
    • Changedget_saved_ad4 fields changed
      • removedOutput schema / properties / ad / properties / saved_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / ad / required
        Previous value: -[
        -  "id",
        -  "ad_ref",
        -  "platform",
        -  "advertiser_name",
        -  "ad_copy",
        -  "media_url",
        -  "media_type",
        -  "estimated_spend",
        -  "engagement_score",
        -  "running_days",
        -  "hook_text",
        -  "cta_text",
        -  "ad_url",
        -  "demo",
        -  "decoded",
        -  "saved_at"
        -]New value: +[
        +  "id",
        +  "ad_ref",
        +  "platform",
        +  "advertiser_name",
        +  "ad_copy",
        +  "media_url",
        +  "media_type",
        +  "estimated_spend",
        +  "engagement_score",
        +  "running_days",
        +  "hook_text",
        +  "cta_text",
        +  "ad_url",
        +  "demo",
        +  "decoded"
        +]
      • removedOutput schema / properties / decode / properties / decodedAt
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / decode / required
        Previous value: -[
        -  "layers",
        -  "recreationPrompt",
        -  "confidence",
        -  "decodedAt"
        -]New value: +[
        +  "layers",
        +  "recreationPrompt",
        +  "confidence"
        +]
    • Changedgroup_cards2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedlist_canvases2 fields changed
      • removedOutput schema / properties / canvases / items / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvases / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link"
        +]
    • Changedlist_generations1 field changed
      • removedOutput schema / properties / generations / items / properties / created_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
    • Changedlist_saved_ads2 fields changed
      • removedOutput schema / properties / ads / items / properties / saved_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / ads / items / required
        Previous value: -[
        -  "id",
        -  "ad_ref",
        -  "platform",
        -  "advertiser_name",
        -  "ad_copy",
        -  "media_url",
        -  "media_type",
        -  "estimated_spend",
        -  "engagement_score",
        -  "running_days",
        -  "hook_text",
        -  "cta_text",
        -  "ad_url",
        -  "demo",
        -  "decoded",
        -  "saved_at"
        -]New value: +[
        +  "id",
        +  "ad_ref",
        +  "platform",
        +  "advertiser_name",
        +  "ad_copy",
        +  "media_url",
        +  "media_type",
        +  "estimated_spend",
        +  "engagement_score",
        +  "running_days",
        +  "hook_text",
        +  "cta_text",
        +  "ad_url",
        +  "demo",
        +  "decoded"
        +]
    • Changedmove_cards2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedrefresh_canvas2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedrename_canvas2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedrun_generation_card2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
    • Changedsave_competitor_ad2 fields changed
      • removedOutput schema / properties / ad / properties / saved_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / ad / required
        Previous value: -[
        -  "id",
        -  "ad_ref",
        -  "platform",
        -  "advertiser_name",
        -  "ad_copy",
        -  "media_url",
        -  "media_type",
        -  "estimated_spend",
        -  "engagement_score",
        -  "running_days",
        -  "hook_text",
        -  "cta_text",
        -  "ad_url",
        -  "demo",
        -  "decoded",
        -  "saved_at"
        -]New value: +[
        +  "id",
        +  "ad_ref",
        +  "platform",
        +  "advertiser_name",
        +  "ad_copy",
        +  "media_url",
        +  "media_type",
        +  "estimated_spend",
        +  "engagement_score",
        +  "running_days",
        +  "hook_text",
        +  "cta_text",
        +  "ad_url",
        +  "demo",
        +  "decoded"
        +]
    • Changedupdate_card2 fields changed
      • removedOutput schema / properties / canvas / properties / updated_at
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / canvas / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "revision",
        -  "card_count",
        -  "updated_at",
        -  "link",
        -  "cards",
        -  "edges"
        -]New value: +[
        +  "id",
        +  "name",
        +  "revision",
        +  "card_count",
        +  "link",
        +  "cards",
        +  "edges"
        +]
  4. 2 tool updates
    • Changedgenerate_video1 field changed
      • changedInput schema / properties / image_url / description
        Previous value: -"Optional public image URL to animate (image-to-video)."New value: +"Public image URL to animate (image-to-video). Required for models whose list_models entry has needs_start_image; optional for the rest."
    • Changedlist_models2 fields changed
      • changedOutput schema / properties / models / items / properties / credits / description
        Previous value: -"Flat cost per generation."New value: +"Cost of one generation at the model's default settings; estimate_credit_cost quotes other lengths."
      • addedOutput schema / properties / models / items / properties / needs_start_image
        Added value: +{
        +  "description": "True when the model only animates an image: pass image_url to generate_video.",
        +  "type": "boolean"
        +}
  5. 3 tool updates
    • Changedestimate_ad_cost1 field changed
      • changedInput schema / properties / brief / description
        Previous value: -"The ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (2-5), totalDurationSec (6-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats."New value: +"The ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (1-5), totalDurationSec (5-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats."
    • Changedgenerate_ad1 field changed
      • changedInput schema / properties / brief / description
        Previous value: -"The ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (2-5), totalDurationSec (6-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats."New value: +"The ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (1-5), totalDurationSec (5-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats."
    • Changedwrite_ad_storyboard1 field changed
      • changedInput schema / properties / brief / description
        Previous value: -"The ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (2-5), totalDurationSec (6-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats."New value: +"The ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (1-5), totalDurationSec (5-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats."
  6. 14 tool updates
    • Changedadd_frame2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedadd_generation_card4 fields changed
      • addedInput schema / properties / from_card_id
        Added value: +{
        +  "description": "Optional: an image generation card or an image media card on the same board. The new card is connected to it, and its finished image is the new card's start frame when the new card runs (run the source card first).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / edge
        Added value: +{
        +  "description": "The connection from from_card_id, when one was given.",
        +  "properties": {
        +    "id": {
        +      "type": "string"
        +    },
        +    "label": {
        +      "description": "Text drawn on the line, when it has one."
        +    },
        +    "source": {
        +      "description": "The card the connection starts from.",
        +      "type": "string"
        +    },
        +    "target": {
        +      "description": "The card it leads to.",
        +      "type": "string"
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedadd_media_card2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedadd_text_card2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedarrange_cards2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Addedconnect_cards
    • Changedcreate_canvas2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedget_canvas2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedgroup_cards2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedmove_cards2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedrefresh_canvas2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedrename_canvas2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedrun_generation_card2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
    • Changedupdate_card2 fields changed
      • addedOutput schema / properties / canvas / properties / edges / items / description
        Added value: +"A connection drawn from one card to the next: { id, source, target, label? }. data.role start_image means the source card's finished image is the target card's start frame."
      • addedOutput schema / properties / canvas / properties / edges / items / properties
        Added value: +{
        +  "id": {
        +    "type": "string"
        +  },
        +  "label": {
        +    "description": "Text drawn on the line, when it has one."
        +  },
        +  "source": {
        +    "description": "The card the connection starts from.",
        +    "type": "string"
        +  },
        +  "target": {
        +    "description": "The card it leads to.",
        +    "type": "string"
        +  }
        +}
  7. 2 tool updates
    • Changedestimate_credit_cost2 fields changed
      • addedInput schema / properties / reference_video_seconds
        Added value: +{
        +  "description": "Length in seconds of the reference video you will pass as reference_video_url (seedance_2_5 up to 30 s, or seedance_2_0_fast up to 15 s at 720p). Reference seconds are billed as input, so they change the price; the server measures the file and refuses a quote whose length does not match.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / reference_video_seconds
        Added value: +{
        +  "description": "Reference-video seconds priced as input, when a reference was quoted.",
        +  "type": "number"
        +}
    • Changedgenerate_video1 field changed
      • addedInput schema / properties / reference_video_url
        Added value: +{
        +  "description": "Optional public https URL of a reference video (for example a 3D blockout playblast) whose camera movement, shot rhythm and subject motion the generation must follow. seedance_2_5 (30 s max) or seedance_2_0_fast (15 s max, 720p). The quote must have been priced with reference_video_seconds equal to this clip's length rounded up; the server measures the clip and refuses on mismatch.",
        +  "type": "string"
        +}
  8. 32 tool updates
    • Addedad_to_canvas_card
    • Addedadd_frame
    • Addedadd_generation_card
    • Addedadd_media_card
    • Addedadd_text_card
    • Addedarrange_cards
    • Addedcreate_canvas
    • Addeddecode_ad
    • Addedestimate_ad_cost
    • Addedgenerate_ad
    • Addedgenerate_avatar
    • Addedgenerate_ugc_video
    • Addedget_ad_job
    • Addedget_canvas
    • Addedget_canvas_link
    • Addedget_saved_ad
    • Addedgroup_cards
    • Addedimport_asset
    • Addedimport_brand_profile
    • Addedlist_ad_formats
    • Addedlist_brand_profiles
    • Addedlist_canvases
    • Addedlist_saved_ads
    • Addedlist_ugc_avatars
    • Addedmove_cards
    • Addedrefresh_canvas
    • Addedrename_canvas
    • Addedrun_generation_card
    • Addedsave_competitor_ad
    • Addedsearch_competitor_ads
    • Addedupdate_card
    • Addedwrite_ad_storyboard
  9. 6 tool updates
    • Changedestimate_credit_cost10 fields changed
      • addedInput schema / properties / duration
        Added value: +{
        +  "description": "Video length in seconds you intend to generate. Affects the price of per-second models.",
        +  "type": "number"
        +}
      • changedInput schema / properties / quantity / description
        Previous value: -"How many generations. Defaults to 1."New value: +"How many generations to price. Defaults to 1. Only a quote for exactly 1 can be spent; larger quantities are for planning."
      • addedInput schema / properties / resolution
        Added value: +{
        +  "description": "Video resolution you intend to generate, e.g. \"720p\" or \"1080p\". Affects the price of per-second models.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / basis
        Added value: +{
        +  "enum": [
        +    "flat",
        +    "per_second"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / duration_seconds
        Added value: +{
        +  "description": "The duration actually priced, for per-second models.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / quote_expires_at
        Added value: +{
        +  "description": "ISO time after which the quote is refused.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / quote_id
        Added value: +{
        +  "description": "Signed quote. Pass it to generate_video or generate_image; it fixes the price and makes a retry safe.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / resolution
        Added value: +{
        +  "description": "The resolution actually priced, for per-second models.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "model_id",
        -  "name",
        -  "credits_each",
        -  "quantity",
        -  "credits_total",
        -  "type"
        -]New value: +[
        +  "model_id",
        +  "name",
        +  "credits_each",
        +  "quantity",
        +  "credits_total",
        +  "type",
        +  "basis",
        +  "quote_id",
        +  "quote_expires_at",
        +  "next_step"
        +]
    • Addedgenerate_image
    • Changedgenerate_video12 fields changed
      • changedInput schema / properties / aspect_ratio / description
        Previous value: -"Defaults to 16:9."New value: +"Defaults to 16:9. Use 9:16 for vertical social clips."
      • changedInput schema / properties / duration / description
        Previous value: -"Length in seconds. Defaults to 5."New value: +"Length in seconds. Must match the quoted duration for per-second models."
      • changedInput schema / properties / model / description
        Previous value: -"Model ID from list_models, e.g. \"kling_3_0\". Omitted means the platform picks a suitable one."New value: +"Model ID from list_models, e.g. \"kling_3_0\". Must match the quoted model; omitted means the quoted model."
      • addedInput schema / properties / quote_id
        Added value: +{
        +  "description": "The quote_id from estimate_credit_cost for this exact model, duration and resolution. Required.",
        +  "type": "string"
        +}
      • addedInput schema / properties / resolution
        Added value: +{
        +  "description": "e.g. \"720p\" or \"1080p\". Must match the quoted resolution for per-second models.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "prompt"
        -]New value: +[
        +  "prompt",
        +  "quote_id"
        +]
      • addedOutput schema / properties / credits_quoted
        Added value: +{
        +  "description": "The price fixed by the quote.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / credits_used / description
        Previous value: -"0 until the render succeeds — billing is post-deduct."New value: +"0 until the render succeeds; billing is post-deduct."
      • addedOutput schema / properties / image_url
        Added value: +{
        +  "description": "Null until the render finishes.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / kind
        Added value: +{
        +  "enum": [
        +    "video",
        +    "image"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / replayed
        Added value: +{
        +  "description": "True when this quote_id had already been submitted and the original job was returned.",
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "status",
        -  "credits_used",
        -  "next_step"
        -]New value: +[
        +  "id",
        +  "kind",
        +  "status",
        +  "credits_quoted",
        +  "credits_used",
        +  "replayed",
        +  "next_step"
        +]
    • Changedget_account3 fields changed
      • addedOutput schema / properties / can_generate
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / info_url
        Added value: +{
        +  "description": "Informational page describing plans and entitlement options.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "plan",
        -  "credits_remaining"
        -]New value: +[
        +  "plan",
        +  "credits_remaining",
        +  "can_generate",
        +  "info_url"
        +]
    • Changedget_generation4 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"The id returned by generate_video."New value: +"The id returned by generate_video or generate_image."
      • addedInput schema / properties / kind
        Added value: +{
        +  "description": "Which job type the id belongs to. Defaults to video.",
        +  "enum": [
        +    "video",
        +    "image"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / image_url
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / kind
        Added value: +{
        +  "enum": [
        +    "video",
        +    "image"
        +  ],
        +  "type": "string"
        +}
    • Changedlist_generations2 fields changed
      • addedOutput schema / properties / generations / items / properties / image_url
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / generations / items / properties / kind
        Added value: +{
        +  "enum": [
        +    "video",
        +    "image"
        +  ],
        +  "type": "string"
        +}
  10. 3 tool updates
    • Changedget_account1 field changed
      • addedInput schema / required
        Added value: +[]
    • Changedlist_generations1 field changed
      • addedInput schema / required
        Added value: +[]
    • Changedlist_models1 field changed
      • addedInput schema / required
        Added value: +[]
  11. 8 tool updates
    • First observedestimate_credit_cost
    • First observedgenerate_video
    • First observedget_account
    • First observedget_article
    • First observedget_generation
    • First observedlist_generations
    • First observedlist_models
    • First observedsearch_articles

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Make UGC-style video ads without filming: tell your AI assistant what to say and get a vertical clip of a realistic actor saying it, ready for TikTok, Reels or Shorts. Pick or describe an actor, choose a voice from samples, and see the price before rendering. It also makes faceless videos from a script or a short brief: narration over an opening animated clip and image scenes.
    45
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Generate video from a prompt, from an image, or from up to thirty reference images, routed across the field of AI video models (Sora, Veo, Kling, Seedance, Hailuo, Wan and more). Quotes the credit cost before spending it and refunds a technical failure automatically.
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.