MMetadata /docs
Docs/Tools/get_negative_keywords_list_details

get_negative_keywords_list_details

Fetch the keywords inside a single Google Ads negative keyword list.

Read search

Returns data. Calling it changes nothing, so it is safe in an unattended loop.

What it does

Fetch the keywords inside a single Google Ads negative keyword list.

                PURPOSE:
                List_negative_keywords_list only returns each list's name + id; it does NOT
                expose the individual keywords inside. Use this tool to see what's actually
                in a given list (text, match type, resourceName) before deciding to add or
                remove entries.

                WHEN TO USE:
                - Inspect what's already excluded before adding more negatives
                - Filter by substring with the 'text' query parameter
                - Look up an entry to confirm it exists before calling
                  remove_keywords_from_negative_list (which matches by text internally)

                RESPONSE FORMAT:
                Returns the list payload:
                {
                  "id": 43256533,
                  "name": "Keywords we don't wanna spend money",
                  "totalKeywords": 87,
                  "totalPages": 4,
                  "keywords": [
                    {
                      "resourceName": "customers/123/sharedCriteria/456~789",
                      "text": "free download",
                      "keywordMatchType": "PHRASE"
                    },
                    ...
                  ]
                }

                PARAMETERS:
                - listId (integer, required): the id from list_negative_keywords_list.
                - text (string, optional): substring filter on keyword text.
                - page (integer, optional): 0-based page index. Default 0.
                - size (integer, optional): rows per page. Default 25, max 100.
                - sort (string, optional): "<field>,<direction>". Default "text,asc".

                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).
text string Optional substring filter on keyword text.
page integer 0-based page index. Default 0.
size integer Rows per page. Default 25, max 100.
sort string Sort criteria in format '<field>,<direction>'. Default 'text,asc'.
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":"get_negative_keywords_list_details","arguments":{"listId":0}}}'

Response

Recorded with these arguments. Enum values are the first the tool's own schema declares; ids were fetched live from a list_ call immediately before.

arguments used
{
 "listId": "[number redacted]"
}

Real, from the production server, in 1048 ms. Values that identify a customer or disclose money are replaced with typed placeholders; keys, types and nesting are exactly as returned.

recorded response
{
 "id": "[number redacted]",
 "name": "[name redacted]",
 "totalKeywords": 20,
 "totalPages": 1,
 "keywords": [
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  },
  {
   "resourceName": "[resourceName redacted]",
   "text": "[text redacted]",
   "keywordMatchType": "PHRASE"
  }
 ]
}

Other search tools:

All 160 tools · machine-readable index