Search Term Verdict
Classify paid-search queries into actionable verdicts across Google Ads and Bing Ads and produce ready-to-apply negative keyword and promotion recommendations.
Account Context
Read ${CLAUDE_PLUGIN_ROOT}/profile/account-profile.md at the start of every run.
If it exists:
- Use known account IDs — skip
list_accountsdiscovery. - Apply KPI targets as anomaly detection thresholds (e.g., flag CPA > target CPA).
- Note active tests when interpreting performance shifts.
- Check watch list for follow-up items from prior sessions.
If it doesn't exist, fall back to
list_accountsand suggest runningplatform-setup.
Data Access
Google Ads
mcp__google-ads__query: Execute GAQL SELECT queries for term and keyword coverage.mcp__google-ads__mutate: Preview and apply negative keyword changes.mcp__google-ads__list_accounts: Confirm account context before running analysis.
Bing Ads
mcp__bing-ads__report: Generate search query performance reports.mcp__bing-ads__query: Query keyword structure for match-type context.mcp__bing-ads__list_accounts: Confirm account access.
Platform detection
Try both platforms. Run whichever responds. If only one is configured, analyze that platform alone.
Mutation safety flow (Google only)
- Build operations and run
mcp__google-ads__mutatewithdry_run: true. - Share the preview with rationale and scope.
- Ask for explicit approval.
- Re-run with
dry_run: falseonly after approval.
For Bing findings, present negative keyword recommendations as manual action items.
Workflow
Phase 1: Extract data
Google Ads
- Run
references/gaql-queries.mdQuery A for full coverage. - Run Query B for keyword-level mapping in Search campaigns.
- Keep date range default at
LAST_30_DAYSunless user requests a different window. - Skip rows where
search_term_view.status = EXCLUDEDfor actioning, but count them in coverage notes.
Bing Ads
- Run the search query report from
references/bing-queries.md. - Run the keyword structure query for match-type context.
- Default date range:
Last30Days.
Phase 2: Classify each search term
Assign one verdict per row:
NEGATE: irrelevant or wasteful term.PROMOTE: high-intent term that should become a dedicated keyword.INVESTIGATE: ambiguous term requiring user judgment.KEEP: term is aligned and performing acceptably.
Use this weight order:
- Conversion and cost efficiency.
- Semantic relevance to campaign intent.
- Match type drift signals.
- Existing exclusion status.
- Volume significance.
Use references/verdict-heuristics.md for edge cases and conflict checks.
The verdict logic applies identically to both platforms. Classify Google and Bing search terms using the same heuristics.
Phase 3: Build output package
Return three sections per platform:
- Verdict summary table.
- Negative keyword package grouped by campaign or ad group level.
- Promotion candidates with suggested ad group placement.
Every recommendation must include rationale and spend/conversion context.
Cross-platform insight: If the same search term appears on both Google and Bing, note it. A term that wastes money on both platforms is a higher-confidence NEGATE. A term that converts on one but not the other may indicate platform-specific intent differences.
Negative match type guidance:
- Use
EXACTnegative when only a specific phrase should be blocked. - Use
PHRASEnegative when the core phrase is irrelevant regardless of surrounding words (most common choice). - Avoid
BROADnegatives unless the single word is unambiguously irrelevant.
Level guidance:
ad_grouplevel: mismatch is scoped to one ad group's theme.campaignlevel: mismatch applies across the entire campaign.- Account-level (shared negative list): if exclusions are universal, recommend adding terms to a shared negative keyword list in the platform's UI.
Phase 4: Mutation execution (approval-gated)
Google Ads
- Build negative keyword operations with
dry_run: truefirst. - Show preview table to user and request explicit confirmation.
- Only run with
dry_run: falseafter user approval.
Bing Ads
Present Bing negative keyword recommendations as manual action items with the specific campaign/ad group and match type. Note: Bing MCP does not yet support mutations.
Output format
## Search Term Verdict - [Date]
### Google Ads: [Name] ([Customer ID])
**Coverage note:** [hidden search-term caveat]
#### Summary
| Verdict | Count | Spend | Notes |
|---|---:|---:|---|
#### Negative Keyword Recommendations
| Keyword | Level | Parent | Match Type | 30d Spend | Reason |
|---|---|---|---|---:|---|
#### Promotion Candidates
| Search Term | Campaign | Suggested Ad Group | Conv | CPA | Why promote |
|---|---|---|---:|---:|---|
### Bing Ads: [Name] ([Account ID])
**Coverage note:** [hidden search-term caveat]
#### Summary
| Verdict | Count | Spend | Notes |
|---|---:|---:|---|
#### Negative Keyword Recommendations (Manual)
| Keyword | Level | Parent | Match Type | 30d Spend | Reason |
|---|---|---|---|---:|---|
#### Promotion Candidates
| Search Term | Campaign | Suggested Ad Group | Conv | CPA | Why promote |
|---|---|---|---:|---:|---|
### Cross-Platform Patterns
- [terms appearing on both platforms with divergent performance]
### Investigate
- [Term] - [platform] - [why human review is required]
Guardrails
- Never apply live negatives without explicit user confirmation.
- Flag potential positive-keyword collisions before recommending negatives.
- Mention search-term privacy threshold and estimated data coverage gap.
- When data volume exceeds 10,000 rows, recommend narrower date/campaign scope.
- Bing limitations: Note that Bing negative keyword recommendations require manual implementation.
References
references/gaql-queries.mdreferences/bing-queries.mdreferences/verdict-heuristics.mdreferences/google-campaign-management.md