Skip to main content
Glama

meta_ads_lead_forms_duplicate

Duplicate a Meta lead form to the same or another Page. Fetches the source form's questions, privacy policy, and other settings, then creates a new form with a new name and returns its ID.

Instructions

Duplicates a lead form under the same (or another) Page. Meta has no native copy endpoint, so this fetches the source form's questions, privacy_policy, follow_up_action_url, locale, context_card, thank_you_page, is_higher_intent and conditional_questions_choices, then creates a fresh form with the supplied new_name. The copied context_card is normalized (Meta reads the intro cover photo back as cover_photo.id but only accepts cover_photo_id on write). Fails fast with a ValueError when the source form has no follow_up_action_url or no privacy_policy.url — Meta requires both. Returns the new form's id. Source form is untouched. Mutating, reversible via meta_ads_lead_forms_update {status: ARCHIVED} on the new form's id. Lossy: legal_content_id, gdpr_required / custom_disclaimer and question_page_custom_headline are NOT copied; re-create them on the new form manually if needed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
form_idYesSource lead form ID to copy from.
page_idYesFacebook Page that will own the new form. Usually the same Page that owns the source form.
new_nameYesName for the new form. Pick something distinct from the source.
account_idNoMeta Ads account ID in the format 'act_XXXXXXXXXX' (e.g. 'act_1234567890'). Optional — falls back to META_ADS_ACCOUNT_ID from the configured credentials. The leading 'act_' prefix is required.
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it excellently discloses behavior: it fetches specific fields, normalizes context_card (with a detailed quirk), fails fast on missing required data, returns the new form's id, leaves the source untouched, is mutating, reversible via an update call, and is lossy for certain fields. This is exceptional transparency beyond what one would expect.

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 detailed but every sentence adds value. It logically flows from purpose, to mechanics, to failure mode, to return value, to side effects, and to limitations. There is no fluff or repetition; the length is justified by the tool's complexity.

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?

Without an output schema, the description fully covers return value (new form id). It addresses edge cases (missing required fields, lossy fields), side effects (source untouched, mutation), and reversibility. For a tool with this complexity, the description is remarkably complete and self-contained.

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%, with clear explanations for form_id, page_id, new_name, and account_id. The description does not add significant parameter-specific meaning; it focuses more on source-field copying and behavior. Since the schema already documents parameters well, a 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?

The description opens with a specific verb+resource combination: 'Duplicates a lead form under the same (or another) Page.' This clearly distinguishes it from siblings like create, update, list, and get. It also explains the underlying reason (no native copy endpoint) and lists source fields copied, making the purpose unmistakable.

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 clear context for when to use this tool (to duplicate a lead form), including prerequisites (source must have follow_up_action_url and privacy_policy.url) and failure behavior (fails fast with ValueError). It also warns about lossy fields and suggests recreating them manually, implying alternatives like update. However, it does not explicitly name an alternative tool or state when NOT to use it, so it falls just short of a 5.

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/logly/mureo'

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