MMetadata /docs
Docs/Tools/remove_keywords_from_negative_list

remove_keywords_from_negative_list

Remove keywords from a single existing Google Ads negative keyword list, matched by text.

Destructive search

Deletes, archives, launches or moves budget. Do not give an agent this one without a human gate.

What it does

Remove keywords from a single existing Google Ads negative keyword list, matched by text.

                PURPOSE:
                Drop keywords that no longer belong in a negative keyword list (e.g. a search
                term that turned out to convert after all, or an over-eager exclusion). The
                tool fetches the list internally, finds entries whose text matches what you
                pass, and removes every match.

                MATCHING:
                - Comparison is case-sensitive and exact (whole-text equality).
                - If the same text appears under multiple match types (e.g. "free" as PHRASE
                  AND as EXACT), all of them are removed.
                - Inputs that don't match anything are reported back in 'notFound' without
                  failing the call.

                WHEN TO USE:
                - Undo a previous add_keywords_to_negative_lists mistake
                - Clean up a list during the day-to-day review loop
                - For full-list wipe use the platform's deleteAll endpoint instead
                  (not currently wrapped here)

                NOT FOR:
                - Detaching the list from a campaign (use remove_keywords_from_campaign).
                - Deleting the list itself.

                COMMON USE CASES:
                1. Remove a single keyword:
                   remove_keywords_from_negative_list(
                     listId=43256533,
                     keywords=["free download"],
                   )

                2. Remove several at once:
                   remove_keywords_from_negative_list(
                     listId=43256533,
                     keywords=["competitor a", "tutorial", "wiki"],
                   )

                PARAMETERS:
                - listId (integer, required): negative keyword list id
                  (from list_negative_keywords_list).
                - keywords (array of strings, required, min 1): exact text(s) to remove.

                RESPONSE FORMAT:
                {
                  "listId": 43256533,
                  "removed": [{"text": "free download", "keywordMatchType": "PHRASE", "resourceName": "..."}, ...],
                  "notFound": ["wiki"]
                }

                CHANNEL SCOPE:
                BOTH search channels are supported: pass channel=MICROSOFT_ADS for Microsoft
                Ads (Bing) and channel=GOOGLE_ADS for Google. The two channels hold SEPARATE
                lists, so never substitute one channel for the other to get "close enough"
                results.

Arguments

ArgumentTypeNotes
listId integer required ID of the negative keyword list (from list_negative_keywords_list).
keywords array required Exact keyword texts to remove. Case-sensitive whole-text match.
channel string Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which.
one of: GOOGLE_ADS, MICROSOFT_ADS

Request

curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
  -H "Authorization: $METADATA_PAT" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"remove_keywords_from_negative_list","arguments":{"listId":0,"keywords":[]}}}'

Response

No recorded response. This tool can delete, archive, launch or move budget, so it is never executed to build these docs. The request above is still the exact shape to send. Nothing on this page is invented.

Other search tools:

All 160 tools · machine-readable index