Skip to main content
Glama

create_creative

Create a Meta ad creative using object_story_spec to define link, photo, or video content and the linked Facebook Page.

Instructions

Create a new ad creative with object_story_spec. The spec defines the ad content (link, photo, or video) and the associated Facebook Page. Notes for v26.0: poll_spec and the poll type under interactive_components_spec are no longer supported and will be rejected. If the advertiser has a shop, eligible creatives now default to destination_spec.destination_type=WEBSITE_AND_SHOP — set it to WEBSITE_AND_SHOP_OPT_OUT to opt out.

Input Schema

NameRequiredDescriptionDefault
nameYesCreative name
url_tagsNoURL tags to append to all links
account_idNoAd account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
asset_feed_specNoJSON string of asset_feed_spec for dynamic creative
destination_specNoJSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default
object_story_specYesJSON string of object_story_spec (page_id, link_data/photo_data/video_data). Use the separate wamo_whatsapp_identity_spec parameter for WhatsApp Status ads.
degrees_of_freedom_specNoJSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop
wamo_whatsapp_identity_specNoJSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.6.1
    • addedInput schema / properties / account_id
      Added value: +{
      +  "description": "Ad account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
      +  "type": "string"
      +}
    • addedInput schema / properties / degrees_of_freedom_spec
      Added value: +{
      +  "description": "JSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop",
      +  "type": "string"
      +}
    • addedInput schema / properties / destination_spec
      Added value: +{
      +  "description": "JSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default",
      +  "type": "string"
      +}
    • changedInput schema / properties / object_story_spec / description
      Previous value: -"JSON string of object_story_spec (page_id, link_data/photo_data/video_data)"New value: +"JSON string of object_story_spec (page_id, link_data/photo_data/video_data). Use the separate wamo_whatsapp_identity_spec parameter for WhatsApp Status ads."
    • addedInput schema / properties / wamo_whatsapp_identity_spec
      Added value: +{
      +  "description": "JSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level",
      +  "type": "string"
      +}
  2. First observedv1.2.0

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses real behavioral traits: poll_spec and poll interactive_components are rejected in v26.0, and shop-eligible creatives silently default to WEBSITE_AND_SHOP unless opted out. It omits auth/permission requirements and rate/return behavior, but the version-specific rejection and defaulting behavior is substantive.

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 purpose and spec definition, followed by dense but specific version notes. Every sentence carries operational information; the version block is long but earns its place by stating what will be rejected and what changes by default.

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 an 8-parameter mutation with 100% schema coverage and no output schema, the description covers the key behavioral gotchas (rejections, defaults/opt-out) an agent would otherwise miss. It stops short of stating permission requirements or the response, minor gaps given the rich 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 100%, so the schema already documents all 8 parameters (including destination_spec and wamo_whatsapp_identity_spec guidance). The description's restatement of object_story_spec content types and the WEBSITE_AND_SHOP default adds marginal meaning beyond the schema, fitting the 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?

States a specific verb+resource ('Create a new ad creative') and immediately characterizes the required payload, explaining what object_story_spec is (link/photo/video content plus the Facebook Page). It does not explicitly distinguish itself from the sibling create_dynamic_creative, which also creates creatives, so sibling differentiation is missing.

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 ad-creation flow and the v26.0 default-shop note gives one conditional ('If the advertiser has a shop...'), but there is no explicit when-to-use versus create_dynamic_creative or update_creative, and no named alternative for dynamic creatives.

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

Deploy Server

Other Tools