create_negative_keywords_list
Create a new negative keywords list in the Metadata platform with Google Ads integration.
Writes search
Creates or changes something in the account. Put it behind whatever review your agent uses.
What it does
Create a new negative keywords list in the Metadata platform with Google Ads integration.
PURPOSE:
Batch create a negative keywords list that can be used in Google Ads campaigns to exclude specific search terms
from triggering your ads. Use this tool to build negative keyword exclusion lists for campaign optimization
and to prevent wasted ad spend on irrelevant searches.
ACCOUNT LIMIT:
⚠️ MAXIMUM 20 NEGATIVE KEYWORDS LISTS PER ACCOUNT ⚠️
Users can have a maximum of 20 negative keyword lists. The system will validate this limit
before creating a new list and return an error if the limit has been reached.
To create a new list, you must delete or archive existing lists to free up space.
WHEN TO USE:
- Create a new negative keywords list for Google Ads campaigns
- Build competitor blocking lists (block competitor brand names)
- Create category exclusions (block unwanted product categories)
- Create seasonal exclusion lists (block irrelevant seasonal terms)
- Build intent-based negative lists (block non-commercial searches)
- Prevent wasted spend on irrelevant keywords
- Manage brand protection by blocking misused terms
KEY FEATURES:
✓ BATCH CREATION: Create one or more negative keywords in a single request
✓ MATCH TYPE CONTROL: Specify match type for all keywords (EXACT, PHRASE, BROAD)
✓ FLEXIBLE NAMING: Custom names for organizing negative keyword lists
✓ GOOGLE ADS INTEGRATION: Lists are created ready for use in Google Ads campaigns
✓ SIMPLE INTERFACE: Just provide keywords as strings, API handles formatting
✓ AUTOMATIC VALIDATION: System checks against 20-list limit before creation
KEYWORD MATCH TYPES:
The 'matchType' parameter controls how broadly the negative keyword blocks ads:
1. EXACT ("Exact Match"):
- Blocks ads only for searches that exactly match the keyword
- Most restrictive and precise blocking
- Example: Keyword "free" with EXACT blocks only searches for "free", not "free shipping"
- Best for: High-value keyword protection, brand safety
2. PHRASE ("Phrase Match"):
- Blocks ads when the keyword appears as a phrase within the search
- Moderate blocking scope
- Example: Keyword "vintage furniture" with PHRASE blocks "vintage furniture sale" but not "furniture vintage"
- Best for: Competitive category blocking
3. BROAD ("Broad Match"):
- Blocks ads for searches containing any of the keyword terms
- Least restrictive and broadest blocking
- Example: Keyword "free" with BROAD blocks any search containing "free"
- Best for: General category exclusions
MATCH TYPE SELECTION GUIDE:
- Use EXACT for specific brand names or exact competitor terms
- Use PHRASE for specific multi-word concepts or phrases
- Use BROAD for general categories or very broad exclusions
LIST NAMING CONVENTIONS:
- Use descriptive names that indicate the list's purpose
- Examples: "Competitor Brands", "Low Intent Keywords", "Seasonal Exclusions"
- Avoid special characters - use hyphens or underscores for clarity
- Keep names concise and meaningful
BATCH SIZE RECOMMENDATIONS:
- Small batches (1-10 keywords): For targeted blocking
- Medium batches (10-50 keywords): For category-based lists
- Large batches (50+ keywords): For comprehensive blocking lists
- Maximum recommended: 100+ keywords per list
NEGATIVE KEYWORDS VS POSITIVE KEYWORDS:
- Positive keywords: Terms you WANT to show ads for (create_keywords)
- Negative keywords: Terms you DON'T want to show ads for (create_negative_keywords_list)
- Use together for optimal campaign performance
COMMON USE CASES:
1. Create competitor blocking list (EXACT match):
create_negative_keywords_list(
name="Competitor Brands",
keywords=["competitor a", "competitor b"],
match_type="EXACT"
)
2. Create low-intent keyword list (BROAD match):
create_negative_keywords_list(
name="Low Intent Keywords",
keywords=["free", "how to", "tutorial"],
match_type="BROAD"
)
3. Create job seeker exclusion list (PHRASE match):
create_negative_keywords_list(
name="Job Seekers",
keywords=["job search", "hiring", "career"],
match_type="PHRASE"
)
4. Create seasonal exclusion list:
create_negative_keywords_list(
name="Summer Sale Exclusions",
keywords=["winter coats", "snow gear"],
match_type="PHRASE"
)
5. Create product category exclusions:
create_negative_keywords_list(
name="Non-Ecommerce",
keywords=["news", "forum", "wikipedia"],
match_type="EXACT"
)
PARAMETERS:
- name: Required. Name of the negative keywords list (string)
Example: "Competitor Brands", "Low Intent Keywords"
Use descriptive, meaningful names for easy identification
- keywords: Required. Array of keyword strings to block
Example: ["raichu", "blastoise", "charizard"]
- Minimum: 1 keyword
- Recommended maximum: 100+ keywords per request
- Each item is a simple string representing the keyword
- matchType: Required. Match type for all keywords - EXACT, PHRASE, or BROAD
Example: "EXACT"
Options: EXACT (exact match), PHRASE (phrase match), BROAD (broad match)
RESPONSE FORMAT:
Returns a response containing:
- Confirmation of the negative keywords list creation
- List ID for future reference and management
- Success/failure status
- Details of keywords added to the list
VALIDATION NOTES:
- Name is required and must be a non-empty string
- Keywords array must have at least 1 keyword
- matchType must be exactly one of: EXACT, PHRASE, BROAD (case-sensitive)
- Empty strings in keyword list are not allowed
- Duplicate keywords in the batch will be handled by the API
PERFORMANCE TIPS:
- Create lists with related keywords for better organization
- Group keywords by blocking strategy (competitor, seasonal, intent-based)
- Use EXACT match for high-value keyword protection
- Use BROAD match for general category exclusions
- Review created lists regularly and update as needed
- Can use list_negative_keywords_list() to verify creation
INTEGRATION WITH OTHER TOOLS:
- Use list_negative_keywords_list() to find and manage existing lists
- Use create_keywords() for positive keyword lists
- Combine with campaign creation for comprehensive keyword strategies
EXAMPLES:
- create_negative_keywords_list(name="Competitors", keywords=["competitor1"], matchType="EXACT")
- create_negative_keywords_list(name="Free Content", keywords=["free", "no cost"], matchType="BROAD")
- create_negative_keywords_list(name="Brand Safety", keywords=["controversial term"], matchType="PHRASE")
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 | |
|---|---|---|---|
name |
string | required | Name of the negative keywords list (string). Example: "Competitor Brands", "Low Intent Keywords" |
keywords |
array | required | Array of keyword strings to block. Example: ["raichu", "blastoise", "charizard"] |
match_type |
string | required | Match type for all keywords. Options: EXACT (exact match), PHRASE (phrase match), BROAD (broad match). Example: 'EXACT' one of: EXACT, PHRASE, BROAD |
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":"create_negative_keywords_list","arguments":{"name":"<name>","keywords":[],"match_type":"EXACT"}}}'
Response
No recorded response. This tool writes to the account, 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.
Related
Other search tools: