Skip to main content
Glama

Metadata MCP Connector

Duplicate Negative Keywords List Across Channels

duplicate_negative_keywords_list

Duplicate (copy) a negative keyword list from one search channel to the other: Google Ads to Microsoft Ads (Bing), or Microsoft Ads to Google Ads.

            KEYWORDS: duplicate, copy, clone, replicate, negative keywords, Bing, Microsoft Ads, Google Ads

            PURPOSE:
            Users who run the same campaigns on Google and Bing keep the two negative keyword
            libraries in sync by hand. This tool copies an existing negative keyword list to the
            other search channel in one call: the platform reads the source list's keywords,
            adapts match types for the target channel, and creates a new list there.

            WHAT IT DOES (server-side, automatic):
            - Reads every keyword in the source list.
            - Remaps match types for the target: Microsoft Ads does not support BROAD negative
              keywords, so BROAD (and untyped) keywords become PHRASE when the target is
              Microsoft Ads. EXACT and PHRASE are kept as-is. Google-bound copies keep all
              match types unchanged.
            - Creates a NEW list on the target channel. The source list is never modified.

            DRY RUN (preview):
            Call with dryRun=true first when the source list may contain BROAD keywords.
            Nothing is created; the response reports keywordsCopied and broadRemappedToPhrase
            so you can tell the user "N broad keywords will become phrase match on Microsoft"
            and let them confirm. Then repeat the call with dryRun=false to actually create.

            PARAMETERS:
            - sourceListId: Required. The id of the negative keyword list to copy, as returned
              by list_negative_keywords_list.
            - sourceChannel: Channel the source list lives on. Default GOOGLE_ADS.
            - targetChannel: Channel to create the copy on. Default MICROSOFT_ADS.
              Must differ from sourceChannel - only cross-channel copies are supported.
            - name: Optional name for the new list. When omitted the platform derives
              "<source name> (<target>)", e.g. "Competitor Brands (Microsoft)".
            - dryRun: Optional, default false. When true, preview without creating.

            RESPONSE FORMAT:
            {
              "id": 456,                    // new list id on the target channel; null on dry run
              "name": "Competitor Brands (Microsoft)",
              "keywordsCopied": 32,
              "broadRemappedToPhrase": 5,   // 0 when target is Google Ads
              "dryRun": false
            }

            WORKFLOW:
            1. Find the source list id with list_negative_keywords_list (or ask the user).
            2. Optional: duplicate_negative_keywords_list(sourceListId=..., dryRun=true) to
               preview the match-type conversion and confirm with the user.
            3. duplicate_negative_keywords_list(sourceListId=...) to create the copy.
            4. The new list exists on the target channel; attach it to campaigns like any
               other negative keyword list.

            ERROR CASES:
            - Source list not found (or empty) on the source channel: the platform rejects the
              copy with a not-found error - re-check the id and sourceChannel.
            - Same source and target channel: rejected; use the platform UI's same-channel
              duplicate instead.
            - Accounts are capped at 20 negative keyword lists per channel; if the target
              channel is at the cap the creation fails - delete a list there first.

            EXAMPLES:
            - "Copy my Google negative list to Bing":
              duplicate_negative_keywords_list(sourceListId=123)
            - Preview first:
              duplicate_negative_keywords_list(sourceListId=123, dryRun=true)
            - Custom name, Microsoft to Google:
              duplicate_negative_keywords_list(sourceListId=77, sourceChannel="MICROSOFT_ADS",
                                               targetChannel="GOOGLE_ADS", name="Brand Safety (Google)")

            RELATED TOOLS:
            - list_negative_keywords_list / get_negative_keywords_list_details: find the source
              list and inspect its keywords (currently Google Ads only).
            - create_negative_keywords_list: build a brand-new list from scratch instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name for the new list. Defaults to "<source name> (<target>)", e.g. "Competitor Brands (Microsoft)".
dryRunNoWhen true, preview the copy (keyword count + BROAD-to-PHRASE conversions) without creating the list.
sourceListIdYesId of the negative keyword list to copy, as returned by list_negative_keywords_list.
sourceChannelNoChannel the source list lives on. Default GOOGLE_ADS.GOOGLE_ADS
targetChannelNoChannel to create the copy on. Must differ from sourceChannel. Default MICROSOFT_ADS.MICROSOFT_ADS

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the burden of behavioral disclosure. It clearly states the source list is never modified, match types are remapped (BROAD/untyped become PHRASE when targeting Microsoft Ads), a NEW list is created, the 20-list-per-channel cap can cause failure, and dry-run mode creates nothing. These details go well beyond the 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?

The description is long but well organized with headers, bullets, a response example, and a workflow list. The core purpose is front-loaded, and each section earns its place. Minor redundancy exists (e.g., the KEYWORDS line repeats terms already in the title), but the structure keeps it scannable.

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 no output schema, the description supplies a full response format, error cases, workflow steps, examples, and related tools. For a cross-channel mutation with match-type conversion and a dry-run mode, an agent has everything needed to call it correctly without additional research.

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. The description adds meaning by explaining the cross-channel constraint, the derived default name format, dryRun preview behavior, and worked examples mapping parameters to responses. This is useful but the schema already documents most parameter basics.

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 and resource ('Duplicate (copy) a negative keyword list from one search channel to the other') and explicitly names the supported directions: Google Ads to Microsoft Ads or vice versa. It also distinguishes this tool from related siblings like create_negative_keywords_list and duplicate_campaign by emphasizing cross-channel copying.

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?

The description provides explicit workflow steps, tells the agent to find the source list with list_negative_keywords_list, recommends a dryRun first when BROAD keywords may exist, and names alternatives such as create_negative_keywords_list and the platform UI's same-channel duplicate. This is concrete, actionable when-to-use guidance.

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