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
| Argument | Type | Notes | |
|---|---|---|---|
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"
}
]
}
Related
Other search tools: