Skip to main content
Glama

Metadata MCP Connector

Remove Offers from Campaign

remove_offers_from_campaign
Destructive

Remove offers — Lead Gen forms OR Landing Pages — from one or more channels in an existing campaign.

            Use this tool to detach a named offer from a channel (e.g. remove "Demo Request Form"
            from FACEBOOK, or "Pricing LP" from GOOGLE_ADS). The offer type (Lead Gen vs Landing
            Page) and its IDs are resolved internally — you only need the channel type and the
            offer name. This is the single offer-removal tool (it replaced the Lead-Gen-only
            remove_leadgen_offer_from_campaign).

            Works on both campaign structures. On a Channel-First / Native (N×N×N) campaign the
            offer is cleared from EVERY WizNativeAdContainer native ad that references it
            (leadGenFormId / landingPageId), channel-wide — the ad is kept, and any container
            then left with no asset at all is dropped. To remove an offer from only ONE
            container/row, use add_and_edit_native_campaign_elements.modify_containers instead.
            On Precision/METADATA it uses the legacy per-offer delete.

            KEYWORDS: remove, delete, offer, lead gen, landing page, form, channel, campaign

            WHEN TO USE:
            - User wants to remove a specific offer (Lead Gen form or Landing Page) from a channel
            - User wants to clean up offers from one or more channels
            - Multiple offers across multiple channels can be removed in a single call

            RESPONSE:
            - Returns the refreshed campaign state plus a removal_results list with one
              entry per requested removal recording its success or error. ALWAYS check
              removal_results — a partial failure (e.g. one of two names not found) still
              returns normally, so report only what actually came back successful.

            REQUIRED PARAMETERS:
            - campaign_id: Campaign ID (numeric identifier)
            - channel_offers: Object mapping channel type → list of offer names to remove

            CHANNEL TYPES: FACEBOOK, INSTAGRAM, GOOGLE_ADS, LINKEDIN, MICROSOFT_ADS, REDDIT

            EXAMPLES:

            Remove a Lead Gen form from FACEBOOK and a Landing Page from GOOGLE_ADS:
            remove_offers_from_campaign({
                "campaign_id": 42545,
                "channel_offers": {
                    "FACEBOOK": ["Demo Request Form"],
                    "GOOGLE_ADS": ["Pricing LP"]
                }
            })

            INTEGRATION WITH OTHER TOOLS:
            - Use get_campaign_by_wizard_id to inspect current offers per channel before removing
            - Use search_campaigns_by_names to find the campaign ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
campaign_idYesThe unique identifier of the campaign
channel_offersYesMap of channel type to list of offer names (Lead Gen form or Landing Page) to remove. Example: {"FACEBOOK": ["Demo Form"], "GOOGLE_ADS": ["Pricing LP"]}

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A5/5.0
Behavior5/5

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

Annotations mark destructiveHint=true and readOnlyHint=false, but the description goes beyond by detailing exact behavior: on Channel-First/Native it clears offers from all native ads and drops empty containers, while on Precision/METADATA it uses legacy per-offer delete. It also warns about partial failures and instructs checking removal_results, disclosing response behavior without any contradiction.

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?

Although long, the description is well-structured with clear sections (WHEN TO USE, RESPONSE, REQUIRED PARAMETERS, CHANNEL TYPES, EXAMPLES, INTEGRATION). Every section adds necessary information, and the core purpose is front-loaded. No redundant or filler sentences.

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 tool's complexity (nested object parameter, destructive nature, two campaign structures, no output schema), the description is fully complete. It covers behavior per structure, response format and error handling, parameter details, channel enums, and integration with related tools (get_campaign_by_wizard_id, search_campaigns_by_names). 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.

Parameters5/5

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

Schema coverage is 100%, but the description adds substantial value: it explains the channel_offers mapping with an example, lists all valid channel types (FACEBOOK, INSTAGRAM, GOOGLE_ADS, etc.), and clarifies that offer IDs are resolved internally. This goes well beyond the bare schema 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?

The description opens with a specific verb+resource: 'Remove offers — Lead Gen forms OR Landing Pages — from one or more channels in an existing campaign.' It clearly distinguishes itself from siblings like remove_leadgen_offer_from_campaign and other remove_* tools by stating it handles both offer types and is the single offer-removal tool.

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?

Contains an explicit 'WHEN TO USE' section with concrete conditions (removing a specific offer, cleaning up offers, multiple channels). It also names an alternative for single-container removal (add_and_edit_native_campaign_elements.modify_containers) and explains when not to use it, providing clear routing among siblings.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources