Skip to main content
Glama

create_ad_from_manifest

Creates a PAUSED ad from a manifest entry with full validation, duplicate detection, and placement enforcement (Facebook/Instagram). Supports video ads, manual or auto-generated copy, and dry-run mode for safe testing.

Instructions

Create an ad from a manifest entry (always PAUSED, manifest-driven, no exceptions).

Loads the manifest entry, detects creative mode, resolves identity, checks for duplicates, validates pre-write, creates the ad, and verifies post-write.

INSTAGRAM GATE: Enforced via placement_mode parameter.

  • full_meta (default): requires IG identity, BLOCKS if unavailable

  • facebook_only: explicit FB-only, no IG placements

  • instagram_only: requires IG identity, BLOCKS if unavailable

For video ads: provide meta_video_id from upload_video_asset + poll_video_processing. The video must be in 'ready' state before calling this tool.

Args: account_id: Ad account ID (e.g., 'act_123456789'). adset_id: Target ad set ID. logical_creative_id: ID of the creative entry in the manifest (e.g., 'lc_example_brand_001'). manifest_json: JSON string containing the manifest or a single creative entry. Must include the logical_creative_id entry with variants, CTA, etc. ad_name: Name for the ad. Greek text validated. page_id: Facebook Page ID for the ad identity. destination_url: Primary destination URL for the ad CTA. primary_text: Primary text / message body. Required for manual mode, optional for auto/hybrid. cta_type: Call to action type (default 'SHOP_NOW'). See VALID_CTA_TYPES. headline: Optional headline text. Auto-generated if copy_mode='auto' and not provided. description: Optional description text. Auto-generated if copy_mode='auto' and not provided. instagram_user_id: Optional IG user ID. If not provided, attempts resolution from account. destination_url_override: If set, overrides manifest URL. Logged explicitly. cta_override: If set, overrides manifest CTA. Logged explicitly. primary_text_override: If set, overrides manifest primary text. Logged explicitly. headline_override: If set, overrides manifest headline. Logged explicitly. copy_mode: 'manual' (default), 'auto' (generate from vault), 'hybrid' (fill gaps). angle_name: Marketing angle for auto/hybrid copy generation. icp_name: Target ICP for auto/hybrid copy generation. funnel_stage: 'tofu', 'mofu', 'bofu' for copy tone/structure. dry_run: If true, runs all validation but does not create the ad. Returns what would be created.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
account_idYes
adset_idYes
logical_creative_idYes
manifest_jsonYes
ad_nameYes
page_idYes
destination_urlYes
primary_textNo
cta_typeNoSHOP_NOW
headlineNo
descriptionNo
instagram_user_idNo
meta_video_idNo
destination_url_overrideNo
cta_overrideNo
primary_text_overrideNo
headline_overrideNo
copy_modeNomanual
angle_nameNo
icp_nameNo
funnel_stageNotofu
dry_runNo
placement_modeNofull_meta
Behavior4/5

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

With no annotations, the description fully discloses behavioral traits: always PAUSED, manifest-driven steps, Instagram gate behavior, video prerequisites, and dry_run mode. It covers key behaviors but omits error handling and 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 well-structured with a summary, detailed sections on Instagram gate and video, then an argument list. It is front-loaded with purpose. However, it is somewhat lengthy; could be slightly more concise without losing clarity.

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 the complex parameter set (23 params) and no output schema, the description is very complete, covering process, constraints, and parameter details. It lacks mention of return values or error responses, which is a minor gap.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate. The 'Args' section explains each parameter's purpose, constraints, and defaults (e.g., account_id format, copy_mode options). This adds substantial value beyond the bare schema titles.

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 clearly states: 'Create an ad from a manifest entry (always PAUSED, manifest-driven, no exceptions).' This is a specific verb+resource+state, and it distinguishes the tool from siblings like create_ad_creative (which only creates creatives) and create_multi_asset_ad.

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 description implies usage context (manifest-driven, Instagram gate) but does not explicitly state when to use this tool vs alternatives or when not to use it. No comparison with sibling tools like update_ad or create_ad is provided.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brandu-mos/konquest-meta-ads-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server